networks: traefik-network: external: true teamspeak6: external: false services: teamspeak: image: teamspeaksystems/teamspeak6-server:latest container_name: teamspeak-server restart: unless-stopped labels: - "traefik.enable=true" - "traefik.docker.network=traefik-network" - "traefik.udp.routers.ts6-voice.entrypoints=ts6-voice" - "traefik.udp.routers.ts6-voice.service=ts6-voice-service" - "traefik.udp.services.ts6-voice-service.loadbalancer.server.port=9987" - "traefik.tcp.routers.ts6-filetransfer.rule=HostSNI(`*`)" - "traefik.tcp.routers.ts6-filetransfer.entrypoints=ts6-filetransfer" - "traefik.tcp.routers.ts6-filetransfer.service=ts6-filetransfer-service" - "traefik.tcp.services.ts6-filetransfer-service.loadbalancer.server.port=30033" - "traefik.tcp.routers.ts6-webquery.rule=HostSNI(`*`)" - "traefik.tcp.routers.ts6-webquery.entrypoints=ts6-webquery" - "traefik.tcp.routers.ts6-webquery.service=ts6-webquery-service" - "traefik.tcp.services.ts6-webquery-service.loadbalancer.server.port=10080" networks: - traefik-network - teamspeak6 environment: - TSSERVER_LICENSE_ACCEPTED=${TSSERVER_LICENSE_ACCEPTED} # Database settings - TSSERVER_DATABASE_PLUGIN=${TSSERVER_DATABASE_PLUGIN} - TSSERVER_DATABASE_SQL_CREATE_PATH=create_mariadb - TSSERVER_DATABASE_HOST={TSSERVER_DATABASE_SQL_CREATE_PATH} - TSSERVER_DATABASE_PORT=${TSSERVER_DATABASE_PORT} - TSSERVER_DATABASE_NAME=${MYSQL_DATABASE} - TSSERVER_DATABASE_USERNAME=${MYSQL_USER} - TSSERVER_DATABASE_PASSWORD=${MYSQL_PASSWORD} volumes: - ./data:/var/tsserver depends_on: mariadb: condition: service_healthy mariadb: image: mariadb:latest container_name: mariadb environment: - MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} volumes: - mariadb-data:/var/lib/mysql restart: unless-stopped healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 10s interval: 10s timeout: 5s retries: 3 networks: - teamspeak6