Hello, when it set up a Teamspeak 3 Server on my Docker VPS today, I ran into an issue, which I wanted to share.
Teamspeak needs 2 TCP Ports open. One for the Voice and one for the File Transfers. When i first tried just setting up one Router with two entrypoints, all traffic was sent to the voice port. As a result i split the router into two, but for some reason, the issue persisted.
So to fix the problem, I needed to create a loadbalancer which changes the traffic arriving on the File-Transfer port to send it to the File-Transport Port again. With this setup everything works perfectly.
If anyone has a reason why the traffic was not send there in the first place, please let me know.
My current configuration is the following:
teamspeak:
image: teamspeak
container_name: teamspeak
depends_on:
- mariadb
restart: always
environment:
TS3SERVER_DB_PLUGIN: ts3db_mariadb
TS3SERVER_DB_SQLCREATEPATH: create_mariadb
TS3SERVER_DB_HOST: ${DB_HOST}
TS3SERVER_DB_USER: ${TS_MARIADB_USERNAME}
TS3SERVER_DB_PASSWORD: ${TS_MARIADB_PASSWORD}
TS3SERVER_DB_NAME: ${TS_MARIADB_DATABASE}
TS3SERVER_DB_WAITUNTILREADY: 30
TS3SERVER_LICENSE: accept
labels:
- "traefik.enable=true"
#Teamspeak-TCP-Upgrade
- "traefik.tcp.routers.ts-tcp.rule=HostSNI(`*`)"
- "traefik.tcp.routers.ts-tcp.entrypoints=ts-tcp1"
- "traefik.tcp.routers.ts-tcp2.rule=HostSNI(`*`)"
- "traefik.tcp.routers.ts-tcp2.entrypoints=ts-tcp2"
- "traefik.tcp.routers.ts-tcp2.service=ts-lb"
- "traefik.tcp.services.ts-lb.loadbalancer.server.port=30033"
#Teamspeak-UDP-Upgrade
- "traefik.udp.routers.ts-udp.entrypoints=ts-udp"
entryPoints:
ts-udp:
address: ":9987/udp"
ts-tcp1:
address: ":10011"
ts-tcp2:
address: ":30033"