Hosting a TeamSpeak Server at home

Hey! I’m fairly new at this whole hosting thing, so I do have a few questions. Here’s the full story:

I have my own domain that I use to host a minecraft server, and it points toward my public ip. That way I can give that out instead of just handing out my public IP just in case anybody wants to join the server. Lately, discord has been pissing me off, so I want to switch to team speak (Far superior in terms of quality). Ive been able to port forward on 25565 for MC and 10011 and 30033 for TS3, but I cant get 9987 to open properly. I contacted my ISP and they said everything looked fine on their end, no firewall blocks and nothing setup incorrectly. I used a port checker and it says 25565, 30033, and 10011 are all open and working, but 9987 isn’t. I have heard that they cant check UDP ports so I had my buddy try and join, but he couldn’t.

That being said, I believe the problem to be one of two things. Either A.) The port isn’t actually open and I have to figure it out, or B.) The server isnt listening on the correct ip (I checked the log_1 file and it says its listening on 0.0.0.0:9987, which makes no sense to me but I dont know enough to argue about it lol).

There is a third option, option C.) Im big brain and have no clue what Im doing and I broke it.

I would love to have some help if anybody could, I really do appreciate it! Let me know what information you need from me and Ill be glad to supply it!

Solution

Blockquote Well you have to do only 2 basic things for your friends being able to join your server.

Step 1

(1) open your Windows (defender) firewall settings
(2) click on the link which is highlighted red in my screenshot

(3) click the confirm settings button
(4) click the allow another program button
(5) browse to your server directory and select your ts3server.exe

Step 2

Forward the ports the server needs to your PC the server runs on in your router.

TeamSpeak

Which ports does the TeamSpeak 3 server use?

TeamSpeak 3 Clients will contact the server in the following ways: Service Protocol Local Port (Server) Remote Port (Client) Voice UDP 9987 …

Watch out not to accidentally swap TCP/UDP ports.

Your friends can join your server now just by entering your IP address.

If you don’t know your IP address click on the link:

https://icanhazip.com/

2 Likes

And has anyone else outside your network even tried to connect?
Not all router have the ability that you can use your external IP to connect back to your own network.

You as the host machine always use your LAN or Local IP.
The external IP is for the external user connections

Which Ports have you opened? Please read.
https://support.teamspeak.com/hc/en-us/articles/360002712257-Which-ports-does-the-TeamSpeak-3-server-use-

It’s normal that other clients can not use localhost when the server is not running on their local environment.

  • Just for the case. Are you sure you send the right IP?
    You may use websites like www.whatismyip.com , www.myip.com to

  • Open your router / firewall and check what setting is there for port 9987 or for the server in general.

  • Read the manual for your router / firewall.

  • Make sure your ISP allows UDP traffic.
    This is blocked in some regions especially for Voice software like us.

  • Double check that you only opened UDP for the voice part.
    Some router have problems when both protocols (TCP & UDP) are opened in one rule.

6 Likes

I can connect to the server locally on my LAN just fine. When i attempt to connect using my public IP (not a domain name… yet anyway), I get the standard looking “failed connection initialization” error. I’m using a bog standard docker compose config on Ubuntu 24.04. My client is running on a regular Win11 machine.

Things I’ve confirmed:

  • Port forwarding looks good (checked using external port checker sites.)
  • ufw is disabled (and local client connection works anyway)
  • i have tried adding my own IP as well as 0.0.0.0/0 to query_ip_allowlist.txt
  • My pfsense router shows udp traffic on 9987 making it through
  • Performing a packet cap using a container sidecar method shows that 9987/udp is making it all the way to the teamspeak 6 container’s docker network.
  • Looks like the connection attempts are always exactly 15 packets

Are there any logs other than docker compose logs -f or tsserver_2026-02-12__02_55_21.173968_0.log that might help shed light on what’s going on?

Is it perhaps not possible to do a “remote” test from your own home (even though tcpdump seems to show packets leaving the house and coming back in just fine?)

Sounds like a classic hairpin problem. Did you try connecting to a mobile hotspot and then testing the public IP?

1 Like

I’m inclined to agree with you based on my latest testing. Just did a VPN test from my phone (I’m in a cellphone dead area, boo) and still ran into issues using my domain name, but after using my hard coded public IP I got in. I was also able to get in using a duckdns DDNS address, so my next guess is that cloudflare proxy doesn’t play nice with UDP or something.

I wish I could understand why I was still getting 9987/udp packets showing up in the container for my original testing though, especially when I’m able to use other hosted apps this way (e.g. a Komga container on the same server accessible by my public IP when on LAN). It really made this feel like an app level thing and not networking. Some sort of anti-spoofing protection or confusion due to src/dst being the same?

I’ll note for the record that TS6 probably needs a more robust getting started guide. I’ve not been able to find good info about DNS, SRV records, IP allowlisting, whether or not a license.dat is needed, etc. Maybe i’m supposed to know to look to the older TS3 docs and make inferences?

We can consider this resolved for now but I hope that other folks trying the same erroneous testing process that I was might find this and save some time. Thanks!

1 Like

Hello. I’m trying to get the ts6-beta server running using docker currently but I’m having a problem where the port 9987 isn’t listening for traffic and won’t show as open on online portcheckers.

Connecting to the local IP is working but whenever i try from my public IP or my domain name is fails to connect with “failed connection initialization”

Running nc -l 9987 and using the same portcheckers shows it as open and other services (a website and mumble for example) I’m hosting haven’t had any problems so i doubt it’s something with my router.

Is there something obvious I’m missing here?

Other things I’ve tried:
Hosting on another computer
Adding 0.0.0.0/0 to the allowlist

Check for any firewall settings or try the steps that are mentioned here. Since it is always dependant on your network setup, we can in most cases only guess. :confused:

3 Likes

I messed around with it more since I made this post and honestly it seems like more of a client issue since I can connect just fine using the TS3 client for some reason.

Really weird problem.

1 Like

Ok even weirder now is that i can connect if i use a VPN. I’m guessing there is something wonky going on when you try to point the client to your own public ip? But again why would the old client work fine but not the TS6 version?