TS6 Manager | Web-based Server Management, Music Bots & Flow Automation

No worries @insanity83NL , the steps are straightforward, just follow them one by one.

I’m running this setup on Debian 13 myself, so the following steps are based on what worked for me.

The reason a source build is needed: the prebuilt Docker Hub image is 2+ months old and when you build it from soure it is newer. SSH handling may have already been fixed in the meantime.

1. Stop your current ts6manager containers

docker compose down

2. Clone the ts6-manager repository and switch into the new folder

You need Git installed:

sudo apt install git -y
git clone https://github.com/clusterzx/ts6-manager.git
cd ts6-manager

3. Create the required .env file

echo "JWT_SECRET=$(openssl rand -base64 32)" >> .env
echo "ENCRYPTION_KEY=$(openssl rand -base64 32)" >> .env

4. Create a docker-compose.override.yml

nano docker-compose.override.yml

Paste the following content:

services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile.backend
  sidecar:
    build:
      context: .
      dockerfile: Dockerfile.sidecar
  frontend:
    build:
      context: .
      dockerfile: Dockerfile.frontend

The reason for the override file rather than using docker-compose.local.ymldirectly: the local compose file is missing the sidecar service entirely, which is required for music bot functionality.
I ran into this myself and documented it in https://github.com/clusterzx/ts6-manager/issues/53. The override approach keeps the main docker-compose.yml as the base, which already has the sidecar correctly configured and only overrides the image source to build locally.

5. Build and start

docker compose build
docker compose up -d

Your existing data will not be lost, Docker volumes are preserved.

Let me know how it goes!

[1]Note: English is not my native language. I use a translation tool only to improve wording and readability — the content, ideas, and technical knowledge are my own.


  1. Fußnoten ↩︎

Hi @Domeninchen ,

Again thanks a million for reaching out and relaying another extensive manual to get forward.

In this case I’ve cleared everything from the previous setup. Meaning, removing all ts-6manager related volumes, networks and images.

When that was done, I even removed the folder where I kept the original docker-compose.yml file.

After that, I followed the exact steps you have provided.
Seen a lot of stuff being done, because it was building. In the end I need to make a change in the docker-compose.yml file, since port 3000 was already taken by a different application.
After changing the port to 3010, I ran the command docker compose up -d, which initiated the containers.

All images are succesfully up and running, and was able to make an admin account. After logging in, I added the http side of things, which works instantly. Here I used the loacal IP address of the device docker is running on.

After that I added a second connection, to try to get https working. Here I used the same IP address as the http one.

After saving the new connection, I still receive the same error:
[Error] TSApiError: Client network socket disconnected before secure TLS connection was established

Prisma was updated after the warning message was displayed in the logs.

Any suggestion is most welcome ^^

Many thanks in advance!

There is a typo in your environment variables:
- RSSERVER_QUERY_HTTPS_ENABLED=true
it should be
- TSSERVER_QUERY_HTTPS_ENABLED=true

You also need to add the HTTPS port mapping under ports:

ports:
  - "10443:10443/tcp"  # Web Query HTTPS

After fixing both, restart the TS server and update the WebQuery Port in ts6-manager from 10080 to 10443.

Sorry for not catching this earlier!

[1]Note: English is not my native language. I use a translation tool only to improve wording and readability — the content, ideas, and technical knowledge are my own.


  1. Fußnoten ↩︎

1 Like

Hi @Domeninchen ,

Very sharp!
Do feel we’re on the right track now! Now I get a connection refused message again, however, do see another new message:

{3EB09CB7-C37B-4442-AFE9-D3B45E9BB9B4}

Using the following command, I was able to create a certificate & key:
openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365

I believe the next step would be adding the certificate in the mentioned files. It seems I’m failing to understand where I would need to add those files, and what edit I need to make in what file :sweat_smile:

UPDATE
Have updated the docker compose file of the TS6 server:

services:
  teamspeak:
    image: teamspeaksystems/teamspeak6-server:latest
    container_name: teamspeak-server
    restart: unless-stopped
    ports:
      - "9987:9987/udp"   # Voice Port
      - "30033:30033/tcp" # File Transfer
      - "10080:10080/tcp" # Web Query
      - "10022:10022/tcp" # SSH
      - "10443:10443/tcp" # HTTPS
    environment:
      - TSSERVER_LICENSE_ACCEPTED=accept
      - TSSERVER_QUERY_HTTP_ENABLED=true
      - TSSERVER_QUERY_HTTPS_ENABLED=true
      - TSSERVER_QUERY_SSH_ENABLED=true
      - TSSERVER_QUERY_SSH_IP=0.0.0.0
      - TSSERVER_QUERY_HTTP_IP=0.0.0.0
      - TSSERVER_QUERY_HTTPS_IP=0.0.0.0
      - TSSERVER_QUERY_SSH_PORT=10022
      - TSSERVER_QUERY_HTTP_PORT=10080
      - TSSERVER_QUERY_HTTPS_PORT=10443
      - TSSERVER_QUERY_ADMIN_PASSWORD=pw
      - TSSERVER_QUERY_HTTPS_CERT=cert.pem
      - TSSERVER_QUERY_HTTPS_PRIVATE_KEY=key.pem
    volumes:
      - teamspeak-data:/var/tsserver

volumes:
  teamspeak-data:
    name: teamspeak-data

Have the feeling I’m overdoing it.

Any suggestions would be most welcome ^^

Many thanks in advance !

@insanity83NL your environment variable names are correct. The issue is that cert.pem and key.pem exist on your host machine, but the TS server runs inside a Docker container and cannot see them.

You need to mount the files into the container. First, make sure cert.pem and key.pem are in the same directory as your docker-compose.yml.

Then update the volumes section of the teamspeak compose file:

volumes:
  - teamspeak-data:/var/tsserver
  - ./cert.pem:/var/tsserver/cert.pem:ro
  - ./key.pem:/var/tsserver/key.pem:ro

And update the certificate environment variables to use the full path inside the container:

- TSSERVER_QUERY_HTTPS_CERT=/var/tsserver/cert.pem
- TSSERVER_QUERY_HTTPS_PRIVATE_KEY=/var/tsserver/key.pem

After making these changes, restart the TS server:

docker compose down
docker compose up -d

I’m not 100% certain this is the complete fix since I don’t use HTTPS myself, but based on how Docker volume mounts work, this should be the missing piece. Let me know how it goes!

[1]English is not my native language. I use a translation tool only to improve wording and readability — the content, ideas, and technical knowledge are my own.


  1. Fußnoten ↩︎

Hi @Domeninchen ,

Vielen Dank für die Antwort!

So let me clarify what I’ve done regarding the certficates.
You were correct. I created the certificated in the wrong location.

  1. I logged in the TS6 server container using the following command:
    docker exec -u 0 -it containerID bash

  2. I created a folder called cert, so there is a fixed place for the key & cert

  3. I ran the command again to create a new key and certificate in this cert -folder:
    openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365

  4. The key & cert are created succesfully in the folder cert

  5. I went back to the host folder of TS6, to edit the docker compose file:

services:
teamspeak:
image: teamspeaksystems/teamspeak6-server:latest
container_name: teamspeak-server
restart: unless-stopped
ports:
- “9987:9987/udp”   # Voice Port
- “30033:30033/tcp” # File Transfer
- “10080:10080/tcp” # Web Query
- “10022:10022/tcp” # SSH
- “10443:10443/tcp” # HTTPS
environment:
- TSSERVER_LICENSE_ACCEPTED=accept
- TSSERVER_QUERY_HTTP_ENABLED=true
- TSSERVER_QUERY_HTTPS_ENABLED=true
- TSSERVER_QUERY_SSH_ENABLED=true
- TSSERVER_QUERY_SSH_IP=0.0.0.0
- TSSERVER_QUERY_HTTP_IP=0.0.0.0
- TSSERVER_QUERY_HTTPS_IP=0.0.0.0
- TSSERVER_QUERY_SSH_PORT=10022
- TSSERVER_QUERY_HTTP_PORT=10080
- TSSERVER_QUERY_HTTPS_PORT=10443
- TSSERVER_QUERY_ADMIN_PASSWORD=pw
- TSSERVER_QUERY_HTTPS_CERT=cert.pem
- TSSERVER_QUERY_HTTPS_PRIVATE_KEY=key.pem
volumes:
- teamspeak-data:/var/tsserver
- ./cert.pem:/var/tsserver/cer/cert.pem:ro
- ./key.pem:/var/tsserver/cert/key.pem:ro

volumes:
teamspeak-data:
name: teamspeak-data
  1. Saved the file, and restarted the TS server.

  2. Again I tried to add the connection:

  1. Saved the connection and checked the TS6-manager backend log. There I found the following error:
    [Error] TSApiError: connect ECONNREFUSED <localaddress>:10443

  2. I checked the TS server logs to see if there was an error, and found this:{312A3F59-EC8D-4AA6-B2A7-62B025A9FD98}

So it seems I somehow messed up the certificate.

==== UPDATE ====
Ok, found there were also cert and key files creates directly in the tsserver folder. So I copied the key and cert to these files. After rebooting the tsserver, I received the following error:
[Error] TSApiError: self-signed certificate

Also I now also see TS server is listening properly, which I have not seen before:
|Query | |listening for https query on 0.0.0.0:10443

Meaning we’re very, very close, but do not understand why this is happening.

Hey!
I looked in to the docs and compose.yml the ts6-manager rejects self-signed certificates by default. There is already a variable built in to handle this.

Navigate to your ts6-manager folder and open the .env file:

nano ~/ts6-manager/.env

Add the following line:

TS_ALLOW_SELF_SIGNED=true

Save with Ctrl+X, confirm with Y, exit with Enter.

Then restart ts6-manager:

docker compose down
docker compose up -d

That should do it!

1 Like

[SOLVED]

Hi @Domeninchen ,

Again, thanks a million for the assitance so far.
This morning I deleted everything, and started fresh. Just to be sure I did not missed anything.

Am 100% convinced the cert and key are working, since the ts server is listening to the assigned port, and does not display the message “to use https etc…“

{0CD1F0DF-6FE8-44A9-A24A-F44E14DA6BFA}

After the check, I add the connection using HTTPS

Still getting the following error:

{4D2FA8E5-42DE-4193-A225-4333D78775F7}

Since I feel we’re almost at the finish line, any suggestions are most welcome :’)

Many thanks in advance !

=================

UPDATE
IT WORKS !!
Seems I misplaced the location where I added the .env file :’)

Thanks again for all the help! Issue resolved !

1 Like

Glad you got it sorted! Thanks for the update and for sticking with it, now enjoy your setup! :tada:

1 Like

Or you could use “Compose Manager Plus,” but that’s still a bit of a workaround :confused:

Hey, and thanks a lot for your work—I love your TS6 Manager. However, I’m running into a few “luxury problems.”
YouTube videos never play; I always get a 500 error.
Unfortunately, some of the bot templates don’t work—like the stats one, for example.
Are they buggy, or is there something I should be checking on my end?
The clock template works fine.
The member greeting feature isn’t working either, unfortunately.

Thanks a lot for your help.

Hello everyone,

I’m writing because I have a quick question about the TS6 Manager music bot: does it currently support playing full YouTube playlists directly?

If not, are there any plans to add this feature in the near future?

I really like TS6 Manager, and I would love to know if you plan to keep updating it and adding new features.

Best regards,

No, you can’t play a playlist directly; however, if you paste the playlist link into the panel—instead of using the download option—and download the content, you can then create a playlist by selecting specific songs within the panel. In other words, while there is no direct way to play or save a playlist as-is, you can provide the playlist link to download all the songs contained in it.

Thanks for the info. However, having to download every song you want to listen to directly onto the host isn’t really practical, since different people listen to different kinds of music.

Hello. Im trying to create server in Docker (you recommended it). Im already launched it, this is my server .yml file

In docker im also launched your interface (docker-compose.yml). Problem is in “server connections” in settings. Program says “Connection successfull” when i trying button “Test”, but i don’t see any info.

So TS6 Manager can’t connect to my server. Can someone help me, please? I can’t program, its AI helped me with all code and some messages from this thread. Im edited docker-compose.yml (I have changed ports like in server file). Also sorry for my english, its not my main language

I think this may be a Docker networking issue.

In your TeamSpeak compose file you expose the WebQuery port like this: 127.0.0.1:10082:10080. That means the WebQuery port is only available on localhost of the Docker host.

If TS6 Manager is also running inside Docker, using 127.0.0.1 or localhost in the manager will not point to your TeamSpeak server container. It will point to the TS6 Manager container itself.

If both containers are in the same Docker network, try using the container/service name as the host:

Host: ts6-server
Port: 10080

So the manager connects directly to the internal container port, not to the host-mapped port.

If TS6 Manager is running outside Docker, then you should connect to the mapped host port instead, for example:

Host: 127.0.0.1
Port: 10082

Also make sure the port matches your compose file. Your comment mentions 10081, but the actual mapping in the screenshot is 10082.

So I would first check:

  1. Are both containers in the same Docker network?

  2. Is TS6 Manager using ts6-server:10080 when running inside Docker?

  3. Or is it using 127.0.0.1:10082 when running on the host?

  4. Do the TS6 Manager backend logs show any error after pressing “Test” or loading the server info?

“Connection successful” may only mean that the endpoint is reachable, but if no server information appears afterwards, the manager may still be using the wrong host/port or not receiving the expected WebQuery response.

1 Like

Thank you very much! Your suggestions about ports and networking help me to understand about problem, some fixes made by Gordon in Docker, so all is working! This 3 days was spent only for music bot and it works! Much appreciates!

1 Like