DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
FREEDOM251

Freedom251 › Blog › Docker

How to Run a TeamSpeak Server in Docker on a VPS (TS3 and TS6)

By Freedom251 Team · · 12 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The reliable way to run a TeamSpeak server in Docker on a VPS is to choose the major version first, publish only that version’s required ports, accept its license with the matching environment variable, and mount its version-specific data directory to persistent storage. TeamSpeak 3 uses the Docker Official Image teamspeak and stores data in /var/ts3server/. TeamSpeak 6 uses teamspeaksystems/teamspeak6-server:latest, stores data in /var/tsserver/, and is still beta-era software. The Compose examples below are ready starting points for either version.

Choose TeamSpeak 3 or TeamSpeak 6 before creating the container

TS3 and TS6 are not interchangeable images. They use different image names, license variables, data-directory paths, and optional query services. Selecting the wrong set of values can produce a container that starts without the expected license, loses its data after recreation, or leaves clients unable to connect.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Decision point TeamSpeak 3 TeamSpeak 6
Container image teamspeak (Docker Official Image) teamspeaksystems/teamspeak6-server:latest
License variable TS3SERVER_LICENSE=accept TSSERVER_LICENSE_ACCEPTED=accept
Persistent data path in the container /var/ts3server/ /var/tsserver/
Voice service UDP 9987 UDP 9987
File transfer TCP 30033 TCP 30033
Query or web service ServerQuery on TCP 10011 Web query is optional; publish TCP 10080 only when deliberately enabled and secured
License capacity Current non-commercial guidance allows one virtual server and 32 slots Larger licenses cannot yet be obtained or upgraded; an equivalent larger-license capacity is not stated
Product status Established TS3 server image Beta-era software
Configuration-file support Not stated in the image notes used here Supports command-line flags, environment variables, and tsserver.yaml

If you need the most conservative, documented deployment path, TS3 has the simpler baseline. Choose TS6 only when you specifically need the newer server and accept its beta status and current licensing limits. Licensing terms can change, so verify the applicable TeamSpeak terms before opening a public server.

VPS, Docker, and network prerequisites

Use a Linux VPS with a public address, Docker Engine, and Docker Compose (the docker compose command). You need permission to publish both UDP and TCP ports and a persistent Docker volume or bind mount. A VPS provider firewall and the Linux host firewall are separate controls; a port must be allowed in both places when both are enabled.

#1 Best Overall
Sale
Razer Kraken V3 X Wired USB Gaming Headset, Lightweight, Black | TriForce 40mm Drivers, HyperClear Cardioid Mic, 7.1 Surround Sound, Chroma RGB Lighting
  • 285G LIGHTWEIGHT BUILD — Experience superior audio and game for hours without being weighed down by the headset
  • TRIFORCE 40MM DRIVERS — Cutting-edge proprietary design divides the driver into 3 parts for the individual tuning of highs, mids, and lows —producing brighter, clearer audio with richer highs and more powerful lows
  • HYPERCLEAR CARDIOID MIC — An improved pickup pattern ensures more voice and less noise with the sweet spot easily placed at the mouth because of the mic’s bendable design
  • HYBRID FABRIC AND MEMORY FOAM EAR CUSHIONS — Wrapped in a combination of breathable fabric and plush leatherette to provide a snug fit to ensure constant comfort for prolonged gaming
  • 7.1 SURROUND SOUND — Provides accurate positional audio that lets you pinpoint intuitively where every sound is coming from. *Only available on Windows 10 64-bit
  • Linux VPS: Select a distribution supported by your VPS provider and keep it updated.
  • Docker and Compose: Confirm that docker version and docker compose version work for the account that will run the stack.
  • Public reachability: Record the VPS public IPv4 address, and configure DNS only after the address is stable.
  • Persistent storage: A named Docker volume is simplest. A bind mount is useful when you need host-level backup tooling, but the host directory must be writable by the container.
  • Firewall control: Be able to add UDP and TCP rules at the VPS provider and on the host.

Do not expose administrative services merely because Docker can publish them. Start with voice and, where needed, file transfer. Add query access only for a specific administration or integration requirement.

TeamSpeak 3 Docker Compose file

Create a directory for the server and save the following as compose.yaml. This publishes the documented TS3 voice, ServerQuery, and file-transfer ports and keeps the server data in a named volume.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
services:
  teamspeak:
    image: teamspeak
    container_name: teamspeak3
    restart: unless-stopped
    ports:
      - "9987:9987/udp"
      - "10011:10011/tcp"
      - "30033:30033/tcp"
    environment:
      TS3SERVER_LICENSE: accept
    volumes:
      - teamspeak3-data:/var/ts3server

volumes:
  teamspeak3-data:

What each TS3 setting does

  • image: teamspeak selects the Docker Official Image for TS3.
  • container_name gives you a predictable name for commands such as docker logs teamspeak3.
  • restart: unless-stopped brings the service back after a daemon restart or VPS reboot unless you intentionally stopped it.
  • The /udp suffix on port 9987 is essential for voice traffic. The query and file-transfer mappings are TCP.
  • TS3SERVER_LICENSE: accept records license acceptance required for startup.
  • The named volume mounted at /var/ts3server preserves the database, permissions, settings, and server identity when the container is recreated.

Do not change the mount target to the TS6 path. The image expects its own version-specific directory.

TeamSpeak 6 Docker Compose file

For TS6, use the image family and license variable shown below. The baseline publishes voice and file transfer. The web-query mapping remains commented out until you intentionally enable and secure that service.

services:
  teamspeak:
    image: teamspeaksystems/teamspeak6-server:latest
    container_name: teamspeak6
    restart: unless-stopped
    ports:
      - "9987:9987/udp"
      - "30033:30033/tcp"
      # Add web query only if you deliberately enable and secure it.
      # - "10080:10080/tcp"
    environment:
      TSSERVER_LICENSE_ACCEPTED: accept
    volumes:
      - teamspeak6-data:/var/tsserver

volumes:
  teamspeak6-data:

What changes in TS6

  • The image is teamspeaksystems/teamspeak6-server:latest, not teamspeak.
  • License acceptance uses TSSERVER_LICENSE_ACCEPTED, not TS3SERVER_LICENSE.
  • Persistent data belongs at /var/tsserver.
  • TCP 30033 is used for file transfer in the baseline. TCP 10080 is an optional web-query endpoint and should not be opened by default.
  • TS6 supports command-line flags, environment variables, and a tsserver.yaml configuration file. The configuration reference covers items such as the license path, database selection, query timeout, SSH and HTTP settings, logging, and IP bindings.

The latest tag follows the image’s current release stream. For a change-controlled production environment, record the image digest you deploy and review release notes before deliberately changing it; never assume a major-version image can share a TS3 data directory.

Rank #2
Sale
Logitech G432 Wired Gaming Headset - Black | DTS Headphone:X 2.0, 50 mm audio drivers, USB and 3.5 mm jack, Flip-to-Mute mic, PC compatible
  • Enjoy expansive cinematic sound. Big 50 mm audio drivers deliver an incredible sound experience
  • Hear Enemies From All Sides. DTS Headphone:X 2.0 surround sound(1) lets you hear enemies sneaking behind you, special ability cues, and immersive environments. It’s positional clarity that can make the difference between victory and defeat. Experience three-dimensional audio that goes beyond 7.1 channels to make you feel like you’re right in the middle of the action. (1) DTS Headphone:X 2.0 requires Logitech G HUB Software.
  • Be Heard Loud and Clear. The big 6 mm boom mic makes sure you’re heard by gaming partners and mutes when flipped up.
  • Use One Headset For Most Game Platforms. Your headphones work with your PC or Mac via USB DAC or 3.5 mm cable, mobile devices with 3.5 mm cable or with gaming consoles including PlayStationⓇ 5 and PlayStationⓇ 4 (USB wireless stereo sound only), Nintendo Switch (wireless stereo sound when docked)
  • Game for Hours in Comfort. Everything about these headphones is about comfort: The deluxe lightweight leatherette ear cups and headband are made to keep pressure off your ears. Ear cups rotate up to 90 degrees for convenience.

Deploy the selected Compose project

  1. Create and enter a working directory. For example, mkdir -p ~/teamspeak && cd ~/teamspeak.
  2. Save one Compose file. Use the TS3 file or the TS6 file, not both in the same project directory. Keep the filename exactly compose.yaml unless you plan to pass another filename with -f.
  3. Check the rendered configuration. Run docker compose config. Correct indentation, quoting, and port protocol suffixes before continuing.
  4. Start in the background. Run docker compose up -d. Compose pulls the selected image, creates the network and named volume, and starts the container.
  5. Follow startup output. Run docker compose logs -f. To inspect only the named container, use docker logs -f teamspeak3 or docker logs -f teamspeak6.
  6. Wait for initialization to finish. The first start can take longer than later restarts while the database and server identity are created. Keep the terminal attached to the log stream until the service reports readiness or stops with an error.
  7. Record first-run credentials immediately. Copy the generated ServerQuery password and ServerAdmin privilege key for TS3. For TS6, record the initial administrator or privilege credential printed during first startup. Store it in a password manager; the initial value is not something to leave in shell history or a public ticket.
  8. Confirm the container state. In another shell, run docker compose ps. A healthy deployment should show the selected container running with the expected published ports.

If you miss a credential in a fast-moving log, stop the stream with Ctrl+C and search the retained output with docker compose logs. Do not delete the volume while trying to recover a key; removing persistent data can create a new server identity and invalidate the original setup.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Open only the ports your server actually uses

Docker’s ports section makes a service reachable on the VPS, but the provider firewall and host firewall still have to permit the same traffic. Apply rules narrowly to the required protocol.

Port Protocol Use When to allow it
9987 UDP TeamSpeak voice Required for normal client voice connections
10011 TCP TS3 ServerQuery Allow only when you use ServerQuery administration or integrations
30033 TCP File transfer Allow when clients need file transfers; included in both baseline Compose files
10080 TCP TS6 web query Only after enabling the service and applying authentication and network restrictions

For a host using UFW, equivalent rules are commonly written as sudo ufw allow 9987/udp, sudo ufw allow 30033/tcp, and, only when required, sudo ufw allow 10011/tcp for TS3 or sudo ufw allow 10080/tcp for an intentionally enabled TS6 web query. Use your provider’s firewall panel to add matching rules, and restrict administrative ports to trusted source addresses whenever the provider supports source filtering.

Do not open a port just because a client error mentions it. First confirm that the corresponding service is enabled in the selected version’s configuration, then publish and permit that port.

Connect from a TeamSpeak client and verify each service

  1. Open the TeamSpeak client’s connection dialog.
  2. Enter the VPS public address. Use the default voice port, UDP 9987, unless you intentionally changed the mapping.
  3. Connect with the server identity created during first startup.
  4. Use the recorded ServerAdmin privilege key or TS6 administrator credential when the client prompts for privilege elevation.
  5. Join a voice channel and verify two-way audio with another account.
  6. If file transfer is part of your use case, upload and download a small test file. A successful voice connection alone does not prove TCP 30033 is reachable.
  7. Test ServerQuery only on TS3 when TCP 10011 is enabled, or test TS6 web query only after you have explicitly enabled and secured TCP 10080.

When a client cannot connect, test from a network outside the VPS itself. A local connection can succeed even while the provider firewall blocks Internet traffic.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
EKSA E1000 USB PC Gaming Headset with Mic, 7.1 Surround Sound
  • [Wide Compatibility] This professional gaming headset for PC gamers is compatible with PC (Windows 7/8/10), PS4/PS5 console, laptops, and other devices with a USB audio port.(Note: EKSA E1000 is not compatible with game controllers.)
  • [Driver-free 7.1 Surround Sound] Enjoy an instant immersive gaming experience with its 7.1 surround sound. EKSA PC gaming headset has a built-in USB audio sound chip and 50mm magnetic neodymium driver that gives you a vivid surrounding sound field. No extra downloads or hassle to get the best experience, just plug and play.
  • [Noise Cancelling Microphone] The EKSA gaming headset for PS5 reduces distracting background noise and guarantees loud and crystal-clear communication with its 120° adjustable high-sensitive microphone. The headset’s omnidirectional noise reduction tech allows you to enjoy quality sound when gaming or in-game chats.
  • [Comfortable Ergonomic Design] Premium soft memory protein earmuffs ensure ultimate comfort even for a prolonged period. In addition, there’s absolute comfort during lengthy gaming sessions with an adjustable headband designed for balanced weight distribution and reduced clamping force. Short cables are also not your problem anymore as its 2.2m extremely durable cable allows you to enjoy your game with no boundary.
  • [2 Years Warranty] EKSA gaming headsets are under strict quality inspection on each production line. We offer 24-hour customer support and a 2-year warranty. We will make our most incredible effort to take responsibility for your shopping experience.

Persistence, backups, and safe container changes

The named volumes in the examples are the persistence boundary. Replacing a container with docker compose down and docker compose up -d should retain data as long as you do not remove the volume. Avoid docker compose down -v unless you intentionally want to erase the server’s stored data.

Back up a named volume

Stop or quiesce the server before a filesystem-level backup so the database is in a consistent state. One generic pattern is to create a compressed archive from a temporary container:

docker run --rm 
  -v teamspeak3-data:/data:ro 
  -v "$PWD":/backup 
  alpine tar czf /backup/teamspeak3-data.tgz -C /data .

For TS6, substitute teamspeak6-data. Keep backups off the VPS, protect them as sensitive administrative data, and test restoring one to a separate volume before you depend on it. A backup that contains only the Compose file but not the mounted data directory will not preserve the server identity, database, or settings.

Update without changing the data path

  1. Read the image’s release notes and check whether the update changes the supported data format.
  2. Make and verify a volume backup.
  3. Pull the image with docker compose pull.
  4. Recreate with docker compose up -d.
  5. Follow docker compose logs -f and confirm that the existing server identity and settings are present.

Do not use an update as an opportunity to switch from TS3 to TS6 in place. Treat that as a separate migration project with a separate volume and carefully verified compatibility.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Configure TS6 deliberately instead of exposing every interface

TS6 offers three configuration mechanisms: command-line flags, environment variables, and tsserver.yaml. Use one documented source of truth for each setting so a later restart does not silently override your intended value. The configuration areas include the license location, database selection, query timeout, SSH and HTTP listeners, logging, and IP bindings.

Rank #4
Sale
Ozeino Wireless Gaming Headset for PS5, PC, Switch| Lossless Audio-40H Batt | Play & Charge, 2.4GHz USB & Type-C, Flip Mic, Works with PS4, Mac, laptop, mobile, Ideal for FPS, RPG
  • 【Amazing Stable Connection-Quick Access to Games】Real-time gaming audio with our 2.4GHz USB & Type-C ultra-low latency wireless connection. With less than 30ms delay, you can enjoy smoother operation and stay ahead of the competition, so you can enjoy an immersive lag-free wireless gaming experience.
  • 【Game Communication-Better Bass and Accuracy】The 50mm driver plus 2.4G lossless wireless transports you to the gaming world, letting you hear every critical step, reload, or vocal in Fortnite, Call of Duty, The Legend of Zelda and RPG, so you will never miss a step or shot during game playing. You will completely in awe with the range, precision, and audio quality your ears were experiencing.
  • 【Flexible and Convenient Design-Effortless in Game】Ideal intuitive button layout on the headphones for user. Multi-functional button controls let you instantly crank or lower volume and mute, quickly answer phone calls, cut songs, turn on lights, etc. Ease of use and customization, are all done with passion and priority for the user.
  • 【Less plug, More Play-Dual Input From 2.4GHz & Bluetooth】 Wireless gaming headset adopts high performance dual mode design. With a 2.4GHz USB dongle, which is super sturdy, lag<30ms, perfectly made for gamers. Bluetooth mode only work for phone, laptop and switch. And 3.5mm wired mode (Only support music and call).
  • 【Wide Compatibility with Gaming Devices】Setup the perfect entertainment system by plugging in 2.4G USB. The convenience of dual USB work seamlessly with your PS5,PS4, PC, Mac, Laptop, Switch and saves you from swapping cables.
  • Bind only required addresses: If the VPS has multiple interfaces, restrict listeners to the address or interfaces that need them.
  • Separate administration from voice: Keep query and HTTP endpoints off the public interface unless a real integration requires them.
  • Persist the configuration: Store configuration in the persistent server data location or mount an explicitly managed file according to the image’s configuration rules.
  • Validate after changes: Restart with docker compose up -d, then inspect logs for bind failures and confirm that the expected listener is present.

Because TS6 is beta-era software, configuration names and availability can evolve. Recheck the current configuration reference before automating a setting that is not present in the baseline Compose file.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Security practices for a public VPS server

  • Use a non-root SSH account with key authentication and disable password login where appropriate for your distribution.
  • Keep Docker, the host kernel, and the selected TeamSpeak image updated on a planned schedule.
  • Restrict TCP 10011 and TCP 10080 to trusted source addresses or a private network whenever possible.
  • Use long, unique credentials for any query or web administration account, and rotate credentials if logs or backups are exposed.
  • Do not publish Docker’s management socket or unrelated host services alongside TeamSpeak.
  • Monitor disk usage. File transfers and logs can fill a small VPS even when voice traffic is light.
  • Back up before version changes, firewall redesigns, or edits to the database and configuration.

Troubleshoot the failure that matches the symptom

The container exits immediately with a license error

Check that the image and environment variable belong to the same major version. TS3 requires TS3SERVER_LICENSE: accept; TS6 requires TSSERVER_LICENSE_ACCEPTED: accept. Run docker compose config to verify that Compose rendered the variable, then inspect docker compose logs for the exact startup message.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The client cannot see or join the server

Confirm that UDP 9987 is present in the Compose file with the /udp suffix. Check the VPS provider firewall, the host firewall, and the VPS public address. Testing against a private address or allowing only TCP 9987 will not establish a normal voice connection.

Voice works but file transfer fails

Verify TCP 30033 in Docker and in both firewall layers. Test an actual upload or download after connecting; the voice port does not carry file-transfer traffic.

TS3 query administration fails

Confirm that TCP 10011 is published, permitted, and that you are using the generated ServerQuery password from the first-run logs. If you do not need ServerQuery, remove the mapping and firewall rule rather than leaving an unused administrative endpoint exposed.

Best Value
Sale
Razer Kraken V4 X Wired USB-C & Type A Gaming Headset, Black | Cardioid Mic, Memory Foam Cushions, Chroma RGB Lighting, For PC, Mac, PS5, Nintendo Switch 2
  • TRIFORCE 40 MM DRIVERS — Razer patented 3-part driver design pushes out exceptional highs, mids and lows that doesn’t muddy, providing a more dynamic listening experience for deeper immersion
  • RETRACTABLE HYPERCLEAR CARDIOID MIC — The improved pickup pattern in the microphone ensures more voice and less noise, while its retractable design allows for optimal positioning or protection when not in use
  • 7.1 SURROUND SOUND — With our advanced 7.1 surround sound, enjoy true-to-life acoustics that optimize the game’s sound design and hear everything as if you were right in the middle of it all
  • COMFORTABLE MEMORY FOAM CUSHIONS — Features hybrid fabric and leatherette cushions with close-fitting earcups that provide superior sound isolation and comfort, even during long gaming sessions
  • CONVERTIBLE TYPE C & TYPE A CABLE — Enjoy immersive audio across various platforms with just a single headset; switch between PC, consoles, phones, and more with a convertible Type C and Type A cable

TS6 web query fails

The baseline TS6 file does not publish TCP 10080. First enable the web-query service in the supported configuration, then add the mapping, firewall rule, authentication, and source restrictions. If the service is not enabled, opening the port alone cannot make it work.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The server appears to reset after recreation

Inspect docker inspect teamspeak3 or docker inspect teamspeak6 and confirm that the expected named volume is mounted at /var/ts3server or /var/tsserver. Check that you did not run docker compose down -v and that you did not start a second Compose project with a different volume name.

The initial privilege key is missing

Read the complete retained output with docker compose logs, not only the live tail. If the first-run output was discarded, avoid deleting the volume; investigate the image’s supported credential-reset procedure while preserving the existing data.

Docker reports a bind or port allocation failure

Another process may already be using the host port, or a second TeamSpeak project may be running. Use docker compose ps and the host’s socket inspection tools to identify the owner, then stop the conflicting service or choose an intentionally different host port while keeping the container port expected by TeamSpeak.

Licensing and capacity caveats

For TS3, current non-commercial guidance describes self-hosting within one virtual server and 32 slots. That is a licensing condition, not a performance guarantee: a VPS can run out of CPU, memory, bandwidth, or disk before reaching any nominal slot limit.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

TS6 documentation describes the server as beta-era software and states that larger licenses cannot yet be obtained or upgraded. Do not promise customers a larger TS6 deployment based on TS3 licensing assumptions. Recheck the current TeamSpeak licensing terms before publishing a public service, changing slot counts, or charging for access.

Operational checklist

  • Version selected and Compose image matches that version.
  • Correct license environment variable is present.
  • Correct persistent mount path is used.
  • UDP 9987 is allowed at Docker, the host firewall, and the VPS provider.
  • TCP 30033 is allowed only when file transfer is needed.
  • TS3 TCP 10011 or TS6 TCP 10080 is exposed only for an enabled, secured query service.
  • First-run administrator credential is stored securely.
  • Volume backup exists and has been tested.
  • Logs are monitored after startup and after every image update.

The Bottom Line

Use the TS3 Compose file with teamspeak, TS3SERVER_LICENSE, and /var/ts3server for a conventional TS3 deployment. Use the TS6 image with TSSERVER_LICENSE_ACCEPTED and /var/tsserver only when you accept its beta status and current license limits. In either case, persist the data volume, open UDP 9987 first, capture the first-run privilege credential from logs, and add query ports only when the corresponding service is enabled and secured.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

DockerDocker ComposeLinuxserver administrationTeamSpeakVPS

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.