Skip to content

Install on Debian 13

DomeNinchen edited this page Oct 22, 2026 · 3 revisions

Install on a Debian 13 server

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.

1. Update the system

Log in as root and bring the system up to date:

apt update && apt full-upgrade -y
apt install -y git curl ca-certificates openssl

If the upgrade installed a new kernel, reboot and log in again.

2. Install Docker

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-world

The last command prints "Hello from Docker!" when everything is in place.

3. Create a user for the manager

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 tsadmin

adduser 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.

4. Get the manager and configure it

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 ts6forkmanager

Create 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
EOF

Keep 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.

5. Build and start

docker network create ts6-network
docker compose up -d --build

The first build compiles all three images and takes several minutes. gyp ERR! lines in the build output are harmless. Then check:

docker compose ps -a

ts6-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).

6. First sign-in

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.

Updating

Settings → Update Status shows when there is something new. Then, from the repository directory:

cd ~/ts6forkmanager
git pull --autostash && docker compose up -d --build

Your .env stays as it is.

Next steps

  • 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.

If something does not work

  • docker compose up complains that the network ts6-network cannot be found: step 5's docker network create was 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-50100 is blocked, usually by the hoster's firewall.

Troubleshooting covers the rest.


v0.3, last edited 22.10.2026

Getting started

Home
Getting Started
Install on Debian 13
Setup: same machine
Setup: elsewhere / rented
Users and Roles

Using the app

Dashboard
Virtual Servers and Instance
Channels
Clients
Client Database
Permissions
Server and Channel Groups
Moderation
Tokens and Passwords
Files
Icons
Bot Flows
Music Bots
Server Widgets
Server Maintenance
Server Logs
Query Console
Connection Journal
Themes and Appearance

Running it

Administration
Configuration
Deployment
Privacy and Hosting

When something is odd

Tips and Pitfalls
Troubleshooting

Contributing

Development

Repository · Changelog

Clone this wiki locally