Repository navigation
Install on Debian 13
A walk-through from a fresh server to the first sign-in, using Debian 13 (trixie) on a rented VPS as the example. On another distribution the steps are the same, only the package commands differ; Docker's own documentation has the install commands for each.
What you end up with: the manager running under Docker, reachable at http://<server-ip>:3000.
What you need:
- a Debian 13 server you can log in to as root over SSH (that is what most hosters hand you), and its public IP address
- at least 1 GB of free memory for the manager: it uses about 250-350 MB itself, plus about 60 MB for each music bot while it plays. A TeamSpeak server on the same machine needs its own share on top
- a TeamSpeak 6 server, or the plan to set one up. The manager does not install it; TeamSpeak's own repository teamspeak/teamspeak6-server describes how to run it, with Docker or as a plain binary
Replace <server-ip> with your server's address and the user name tsadmin with one of your choice.
Log in as root and bring the system up to date:
apt update && apt full-upgrade -y
apt install -y git curl ca-certificates opensslIf the upgrade installed a new kernel, reboot and log in again.
Still as root. Install Docker from Docker's own repository, not Debian's docker.io package: the manager needs the current Compose plugin (docker compose, with a space). These are the commands from Docker's installation guide for Debian, which lists Debian 13 as supported; check there if they have changed since.
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker run --rm hello-worldThe last command prints "Hello from Docker!" when everything is in place.
The manager does not need root: its containers do not run as root inside, and starting them only takes access to Docker. So create a user of its own and put it in the docker group:
adduser tsadmin
usermod -aG docker tsadminadduser asks for a password; the questions after it (full name, room number and so on) can be skipped with Enter. Log out and log in again as the new user (ssh tsadmin@<server-ip>) - the new group only applies from the next login. From here on, everything runs as tsadmin.
Good to know: whoever is in the docker group can start any container, and with that do anything on the server. Only put users in it whom you would also trust with the root password.
The repository goes into the new user's home directory; the images are built from it.
cd ~
git clone https://github.com/DomeNinchen/ts6forkmanager.git
cd ts6forkmanagerCreate the .env file with two random secrets and the address you will open the manager at:
cat > .env <<EOF
JWT_SECRET=$(openssl rand -base64 32)
ENCRYPTION_KEY=$(openssl rand -base64 32)
FRONTEND_URL=http://<server-ip>:3000
EOFKeep a copy of the ENCRYPTION_KEY line somewhere other than the server. It encrypts the TeamSpeak credentials in the database; a backup without it cannot be restored (What to back up). Every other variable has a default, Configuration lists them all.
docker network create ts6-network
docker compose up -d --buildThe first build compiles all three images and takes several minutes. gyp ERR! lines in the build output are harmless. Then check:
docker compose ps -ats6-backend, ts6-frontend and ts6-sidecar should say Up, and after up to a minute (healthy). ts6-volume-init says Exited (0) - it only prepares the data volumes and is supposed to end.
Ports. Debian itself blocks nothing out of the box. If your hoster has a firewall in its web panel, it has to let through 3000/tcp (the web interface) and 50000-50100/udp (video streaming of the music bots).
Open http://<server-ip>:3000/setup and create your admin account - there are no default credentials. Then add your TeamSpeak server under Settings → Connections. How depends on where it runs - same machine or elsewhere / rented.
Settings → Update Status shows when there is something new. Then, from the repository directory:
cd ~/ts6forkmanager
git pull --autostash && docker compose up -d --buildYour .env stays as it is.
-
A domain and HTTPS. Right now the connection to the manager is not encrypted - fine for a first look, but before you use it for real over the internet, put it behind a reverse proxy with a certificate. Deployment describes that, including what to change in
.env(FRONTEND_URL,TRUST_PROXY). Single Sign-On needs HTTPS. - Other users with their own roles: Users and Roles.
- Tips and Pitfalls - the things that cost people the most time.
-
docker compose upcomplains that the networkts6-networkcannot be found: step 5'sdocker network createwas skipped. -
The page does not load at all: check
docker compose ps -a; if all containers run, port 3000 is blocked, usually by the hoster's firewall. -
Video streaming connects but shows nothing: the UDP range
50000-50100is blocked, usually by the hoster's firewall.
Troubleshooting covers the rest.
v0.3, last edited 22.10.2026
Getting started
Using the app
Running it
When something is odd
Contributing