Hi guys. I am new to Teamspeak and I was interested in setting up a VoIP on my server. So I looked at Ventrilo and saw that it was crap that they would only let you have 8 slots max. So I found that Teamspeak gives out free licenses for non profit use, which is perfect for me. So, I guess I will start out by telling you what I am using. For the distro of Linux I am using is Ubuntu 10.10 32 Bit Server Edition. I set up a LAMP server so I have Apache, MySQL, and PHP5 all installed because I run a website and a dedicated game server for my clan I am planning on starting. So, the tutorials I have used and have read over many times are these; Video Tutorial by KoldFusion, TS3 Server on Ubuntu 10.04, and This Howto(right from the Ubutnu Community Forums). So pretty much I have kind of used parts from all three tutorials to try to get this to work, but I couldn't get it to work right. I got the server started and I could join if I typed in my Local IP address (192.168.1.103) but when I tired me external IP address I couldn't join. I even added the exceptions in my iptables for the correct ports Teamspeak needs to allow connections. Here is what I did;

I made sure I was in root:
Code:
sudo -i
Switch into the /opt/ directory:
Code:
cd /opt/
I then downloaded the newest version of the Server client:
Code:
wget http://teamspeak.gameserver.gamed.de/ts3/releases/beta-30/teamspeak3-server_linux-x86-3.0.0-beta30.tar.gz
Then extracted the contents inside the tarball:
Code:
tar zxf teamspeak3-server_linux-x86-3.0.0-beta30.tar.gz
I then created a user called teamspeak with a disabled login:
Code:
adduser --disabled-login teamspeak
It did not ask for a password, but I gave it the full name TeamSpeak Daemon Runner

I then changed ownership of the teamspeak3-server_linux-x86 to teamspeak:
Code:
chown teamspeak /opt/teamspeak3-server_linux-x86
The rest of the files inside the directory are still owned by the account I use to log in with (administrator), I did not use -R because the tutorial from the Ubuntu forums said not too, so I do not know if that is correct.

I then created a new file in /etc/init.d/ called teamspeak
PHP Code:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          teamspeak
# Required-Start:    networking
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: TeamSpeak Server Daemon
# Description:       Starts/Stops/Restarts the TeamSpeak Server Daemon
### END INIT INFO

set -e

PATH
=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC
="TeamSpeak Server"
NAME=teamspeak
USER
=teamspeak
DIR
=/opt/teamspeak3-server_linux-x86
DAEMON
=$DIR/ts3server_minimal_runscript.sh
#PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

cd $DIR
sudo 
-u teamspeak ./ts3server_minimal_runscript.sh $
Then I set the correct permissions
Code:
chmod 755 /etc/init.d/teamspeak
After I created new file for the licensekey.dat and ts3server.ini. this is what my ini file looks like:
Code:
machine_id=
default_voice_port=9987
voice_ip=192.168.1.103
licensepath=
filetransfer_port=30033
filetransfer_ip=192.168.1.103
query_port=10011
query_ip=192.168.1.103
dbplugin=ts3db_sqlite3
dbpluginparameter=
dbsqlpath=sql/
dbsqlcreatepath=create_sqlite/
logpath=logs
logquerycommands=1
I know that I have put my Local Network IP in for all three and this is what the output was in screen:
Code:
2011-01-28 03:23:18.991102|INFO    |Accounting    |   | Licensing Information
2011-01-28 03:23:18.991205|INFO    |Accounting    |   | type              : Non-profit
2011-01-28 03:23:18.991319|INFO    |Accounting    |   | starting date     : Wed Jan 26 00:00:00 2011
2011-01-28 03:23:18.991382|INFO    |Accounting    |   | ending date       : Thu Jan 26 00:00:00 2012
2011-01-28 03:23:18.991442|INFO    |Accounting    |   | max virtualservers: 10
2011-01-28 03:23:18.991498|INFO    |Accounting    |   | max slots         : 512
2011-01-28 03:23:19.021259|INFO    |FileManager   |   | listening on 192.168.1.103:30033
2011-01-28 03:23:19.027195|INFO    |VirtualSvrMgr |   | executing monthly interval
2011-01-28 03:23:19.027270|INFO    |VirtualSvrMgr |   | reset client traffic statistics
2011-01-28 03:23:19.027641|INFO    |VirtualSvrMgr |   | reset virtualserver traffic statistics
2011-01-28 03:23:19.363807|INFO    |VirtualServer |  1| listening on 192.168.1.103:9987
2011-01-28 03:23:19.364953|INFO    |VirtualServer |  1| client 'server'(id:0) added privilege key for servergroup 'Server Admin'(id:6)
2011-01-28 03:23:19.365737|WARNING |VirtualServer |  1| --------------------------------------------------------
2011-01-28 03:23:19.366285|WARNING |VirtualServer |  1| ServerAdmin privilege key created, please use the line below
2011-01-28 03:23:19.366823|WARNING |VirtualServer |  1| token=***
2011-01-28 03:23:19.367353|WARNING |VirtualServer |  1| --------------------------------------------------------

------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
      ServerAdmin privilege key created, please use it to gain
      serveradmin rights for your virtualserver. please
      also check the doc/token_guide.txt for details.

       token=***
------------------------------------------------------------------

2011-01-28 03:23:19.368230|INFO    |CIDRManager   |   | updated query_ip_whitelist ips: 127.0.0.1,
2011-01-28 03:23:19.368725|INFO    |Query         |   | listening on 192.168.1.103:10011
I then press Ctrl+C to stop it. I started up the Teamspeak client and I connected to my server using the IP 192.168.1.103. So, next I decided to put in my external IP (67.240.97.233) and this is what the output was in screen
Code:
2011-01-28 03:30:03.138423|INFO    |ServerLibPriv |   | Server Version: 3.0.0-beta30 [Build: 12998], Linux
2011-01-28 03:30:03.138796|INFO    |DatabaseQuery |   | dbPlugin name:    SQLite3 plugin, Version 2, (c)TeamSpeak Systems GmbH
2011-01-28 03:30:03.138861|INFO    |DatabaseQuery |   | dbPlugin version: 3.7.3
2011-01-28 03:30:03.139260|INFO    |DatabaseQuery |   | checking database integrity (may take a while)
2011-01-28 03:30:03.153798|INFO    |SQL           |   | pruning old database log entries where timestamp is older than 90 days
2011-01-28 03:30:04.155876|INFO    |Accounting    |   | Licensing Information
2011-01-28 03:30:04.155990|INFO    |Accounting    |   | type              : Non-profit
2011-01-28 03:30:04.156105|INFO    |Accounting    |   | starting date     : Wed Jan 26 00:00:00 2011
2011-01-28 03:30:04.156168|INFO    |Accounting    |   | ending date       : Thu Jan 26 00:00:00 2012
2011-01-28 03:30:04.156227|INFO    |Accounting    |   | max virtualservers: 10
2011-01-28 03:30:04.156283|INFO    |Accounting    |   | max slots         : 512
2011-01-28 03:30:04.186737|ERROR   |FileManager   |   | bind() failed: 99
2011-01-28 03:30:04.186842|ERROR   |FileManager   |   | bind failed on 67.240.97.233:30033
2011-01-28 03:30:04.388250|ERROR   |VirtualServer |  1| bind failed on 67.240.97.233:9987
2011-01-28 03:30:04.388931|ERROR   |VirtualSvrMgr |   | loading VirtualServer(1) failed to start, error: unable to bind network port
2011-01-28 03:30:04.455609|INFO    |VirtualServer |  1| stopped
2011-01-28 03:30:04.456507|INFO    |CIDRManager   |   | updated query_ip_whitelist ips: 127.0.0.1,
2011-01-28 03:30:04.457792|ERROR   |Query         |   | bind failed on 67.240.97.233:10011
2011-01-28 03:30:05.171950|ERROR   |              |   | read invalid packet size size
And I couldn't connect when I used my external IP.

Next I wanted to make the init.d script to start at boot time so I do not have to manually start my server with:
Code:
update-rc.d teamspeak defaults
So I thought maybe if I restared my server it might help... Well for some reason when I did reboot as root my SSH connect disconnected, like usual but it was taking an abnormally long time to restart. So I did a hard restart (pressing the power button) and did a hard boot. When i did this my SSH connect worked fine again, but it still did not work. Only this time in screen my output was different:
Code:
2011-01-28 03:30:04.186737|ERROR   |FileManager   |   | bind() failed: 99
2011-01-28 03:30:04.186842|ERROR   |FileManager   |   | bind failed on 0.0.0.0:30033
2011-01-28 03:30:04.388250|ERROR   |VirtualServer |  1| bind failed on 0.0.0.0:9987
2011-01-28 03:30:04.388931|ERROR   |VirtualSvrMgr |   | loading VirtualServer(1) failed to start, error: unable to bind network port
2011-01-28 03:30:04.455609|INFO    |VirtualServer |  1| stopped
2011-01-28 03:30:04.456507|INFO    |CIDRManager   |   | updated query_ip_whitelist ips: 127.0.0.1,
2011-01-28 03:30:04.457792|ERROR   |Query         |   | bind failed on 0.0.0.0:10011
2011-01-28 03:30:05.171950|ERROR   |              |   | read invalid packet size size
It not shows 0.0.0.0 for my IPs now and I checked the ini file and they were sill 192.168.1.103. I then tired changing the IPs in the ini file to my external IP (67.240.97.233) But the IPs in the output were still 0.0.0.0. Well at this point I got kind of frustrated because this has literally taken me all day to get to this point, so I decided I will start fresh and remove everything I did. That is why I am here.

Oh yeah I forgot to mention, when I went to remove the teamspeak user, it was logged in. Why? I thought i disabled log in, or is that just for SSH/direct access to the server, etc. Also, I guess the boot script I had worked because I could see the it running when I did ps x but screen wasn't running. So I did kill -9 PID but the server was still running? Why is that? I thought I killed the pid file...

All I would like is a TeamSpeak server running, that is secure. That is why I made the teamspeak user to run the server so it does not have direct access to my files (administrator). So is there like other steps I need to do to ensure security? Because I read that there is a web-interface you can log into? If so, how do I disable that, etc. Also, did I even do anything right above? With permissions, having the server start up at boot, etc? I am not a total noob with Linux, but I am not also an expert. If that makes sense... But I was just hoping you guys might be able to help me out or point me in the right direction.

-Thank You very much. I know that I have posted a lot of information to read, but I really do appreciate you taking time to read this. Again, thank you!

Regards,
jchiera93