UTG|Clan-Forum

Öffentliche Foren => Teamspeak3 Server => Thema gestartet von: UTG|SePHTaN am 21.01.2010, 22:31:24

Titel: Installation eines Teamspeak3 Server's unter Linux (Debian)
Beitrag von: UTG|SePHTaN am 21.01.2010, 22:31:24
Die meisten haben bestimmt mitbekommen dass die Version3 von Teamspeak endlich veröffentlicht wurde.

Die Frage ist lohnt sich der Umstieg ja oder nein ?
Meine Meinung ist ganz klar : Es lohnt sich !
Die Latenz(Signallaufzeit/Verzögerung) wurde deutlich verbessert, die benötigte Bandbreite hat sich ca. um den
Faktor 10 verringert.
Der Klang ist wesentlich heller als beim alten TS2 allerdings klingt es bisweilen etwas blechern.

Deshalb habe ich in den letzten Tagen einen Teamspeak3 Server für unseren Clan installiert.

Damit andere es etwas leichter haben, bzw. es ist ja nicht jeder in der Administration eines Linux Servers
bewandert dachte ich mir ich setz hier mal eine Anleitung rein.

EDIT : Heute (14.02) mal upgedatet  auf die aktuelle Server-Version BETA18
EDIT : Heute (19.03) mal upgedatet  auf die aktuelle Server-Version BETA20
EDIT : Heute (27.05) mal upgedatet  auf die aktuelle Server-Version BETA22
EDIT : Heute (06.10) mal upgedatet  auf die aktuelle Server-Version BETA29

Special thx an iD für den Hinweis auf den Fehler mit dem DAEMON_USER :)
Titel: Re: Installation eines Teamspeak3 Server's
Beitrag von: UTG|SePHTaN am 21.01.2010, 22:45:37
Vorraussetzungen:

Ein Server mit Root-Rechten.
Die Linux-Binaries des TS3 Servers.
Die licensekey.dat der NonProfit Registrierung für Privatleute, Clans usw.
Etwas Ahnung von Linux.
Diese Anleitung.

Diese Anleitung basiert auf meiner Installation auf einem CT-Debian-Server
Verwendetes Betriebssystem : Debian5 (Lenny) 32-bit

1. Schritt : Anlegen eines Benutzers (Users) unter dessen Rechten der TS3-Server laufen soll :

Erzeugen des Homedirs ins welches TS3 installiert werden soll:
www:~# mkdir /var/www/TS3
Anlegen des Users für TS3 :
www:~# useradd -g users teamspeak -d /var/www/TS3/ -s /bin/bash
Vergeben eines Passwortes für diesen User :
www:~# passwd teamspeak
Das oben erstellte Homeverzeichniss den Besitzer "teamspeak" zuweisen :
www:~# chown teamspeak /var/www/TS3/
Entweder ihr wechselt jetzt einfach den Benutzer durch eingabe von : su teamspeak
oder loggt euch alternativ ein zweites mal auf den Server ein diesmal aber als Benutzer teamspeak.
Deshalb haben wir oben dem Benutzer auch ein Passwort zugewiesen damit das geht.

2.Schritt : Installation des Teamspeak Servers :

Ihr seid angemeldet als Benutzer "teamspeak" und seid in dessen Homverzeichniss "var/www/TS3"
Ladet auch jetzt den Teamspeak wie folgt herunter :

64bit Linux :
wget http://www.stephansandmann.mine.nu/teamspeak3-server_linux-amd64-3.0.0-beta29.tar.gz
32bit-Linux :
wget http://www.stephansandmann.mine.nu/teamspeak3-server_linux-x86-3.0.0-beta29.tar.gz

Jetzt entpackt ihr den TS3 Server wie folgt :
64Bit:
www:/var/www/TS3# tar xfvz teamspeak3-server_linux-amd64-3.0.0-beta29.tar.gz32Bit:
webserver:~# tar xfvz teamspeak3-server_linux-x86-3.0.0-beta29.tar.gz
Kopiert jetzt noch die Datei "licensekey.dat" in den Ordner TS3, und ändert den Besitzer auf Teamspeak.
www:~# cp /dein/pfad/zur/licensekey.dat /var/www/TS3 -v
www:~# chown teamspeak /var/www/TS3/licensekey.dat -v

Euer Verzeichniss sollte jetzt so aussehen :
www:/var/www/TS3# ls -la
insgesamt 6586
drwxr-xr-x 5 teamspeak ftpuser    1024 21. Jan 20:42 .
drwxr-xr-x 7 admin-www ftpuser    1024 21. Jan 20:50 ..
-rw------- 1 teamspeak users        10 21. Jan 21:09 .bash_history
drwx------ 3 teamspeak users      1024 21. Jan 20:08 files
-rw-r--r-- 1 teamspeak ftpuser  195093 21. Jan 20:05 libts3db_mysql.so
-rw-r--r-- 1 teamspeak ftpuser  827377 21. Jan 20:05 libts3db_sqlite3.so
-rw-r--r-- 1 teamspeak ftpuser     910 21. Jan 20:08 licensekey.dat
drwx------ 2 teamspeak users      1024 21. Jan 20:15 logs
-rw-r--r-- 1 teamspeak ftpuser      11 21. Jan 20:05 query_ip_whitelist.txt
-rw-r--r-- 1 teamspeak users       112 21. Jan 20:15 serverkey.dat
drwxr-xr-x 4 teamspeak ftpuser    4096 21. Jan 20:04 sql
-rw-r--r-- 1 teamspeak ftpuser      96 21. Jan 20:04 ts3db_mysql.ini
-rw-r--r-- 1 teamspeak ftpuser     310 21. Jan 20:04 ts3server.ini
-rwxr--r-- 1 teamspeak ftpuser 5441884 21. Jan 20:05 ts3server_linux_x86
-rw-r--r-- 1 teamspeak ftpuser  234496 21. Jan 20:15 ts3server.sqlitedb
files, logs und ts3server.ini fehlen bei euch da die erst erstellt werden.
docs und serverquerydocs  könnt ihr auf dem Server löschen wenn ihr sie nicht braucht.
ts3db_mysql.ini braucht Ihr nur wenn Ihr anstelle von  SQLLite MySQL verwenden wollt.

So das meiste ist jetzt schon passiert. Jetzt starten wir den Server das erste mal von Hand
damit wir das ADMIN-Token und das "serveradmin" Kennwort des Servers erhalten.


3.Schritt : Erstes Starten des Servers

Jetzt starten wir den Server wie folgt :

64Bit:
./ts3server_linux_amd64 createinifile=132Bit:
./ts3server_linux_x86 createinifile=1
Wenn Ihr alles richtig gemacht habt seht Ihr jetzt eine Ausgabe wie folgt :
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Acccount created
loginname= "serveradmin", password= "aKrWcOBW"
------------------------------------------------------------------

ServerAdmin token created, please use the line below
token=ppEa0Wp6hopKBzKhH5RiUtb5Ggve5aI8J7ifu+/P

Diese Informationen sind WICHTIG speichert sie deshalb
am besten in einer Textdatei, Ihr braucht sie in jedem Fall später noch.

4.Schritt : Ein Startskript erstellen zum starten und beenden des Servers

Meldet euch wieder als Root an.
Legt jetzt in /etc/init.d ein Startskript an mit Namen "ts3d" :
www:/etc/init.d#nano ts3d
Ihr seid wenn Ihr "nano" installiert habt jetzt in der Eingabemaske von "nano".
Dorthin kopiert Ihr folgendes Startskript:
32Bit:
#!/bin/sh
#
# Shellscript, startet einen TeamSpeakServer im
# Kontext des angegebenen Benutzers.
#
# UTG|SePHTaN (sephatan@utgclan.de)
# dank an FearFactor für die Vorlage
# ============================================
#
# Voraussetzungen:
#
# - Ein installierter/entpackter TeamSpeakServer
# - der Benutzer in dessen Kontext der Server laufen soll
# muss existieren und muss volle Rechte auf den TSS-Ordner und Dateien
# haben. (aktuellen Status mit "ls -l" anzeigen)
# Siehe bei Bedarf die Manpages von chown (Besitzer ändern)
# Beispiel: "chown user:gruppe datei"
# Rechte ändert man mit "chmod"
# Beispiel: "chmod 770 datei"
# - Die Variablen m�ssen Deinem System angepasst werden.
#
# Das Script am Besten als ts3d im Ordner /etc/init.d erstellen,
# und ausführbar machen (z.B. mit "chmod 755 ts3d")
#
# damit der Server von jedem Verzeichnis aus gestartet und beendet werden
# kann, erstellt man am Besten einen harten link ins Verzeichnis /usr/bin,
#
# Beispiel "ln Pfad-zum-script /usr/bin" :
# Beispiel "ln /etc/init.d/ts3d /usr/bin"
#
# Soll der Server beim Hochfahren automatisch starten,
# erstelle noch einen Link im init.d-Verzeichnis
# (kann je nach Distribution abweichen!)
#
# und dann noch einen symbolischen Link ins Verzeichnis
# des richtigen Runlevels erstellen
# (den Standardrunlevel am Besten in /etc/inittab nachsehen):
#
# Beispiel Debian "ln -s /etc/init.d/ts3d /etc/rc2.d/S99ts3d"
# Beispiel SuSE "ln -s /etc/init.d/ts3d /etc/rc.d/rc2.d/S99ts3d"
#
# Um den Server manuell zu starten/stoppen verwende:
# "ts3d start"
# "ts3d stop"
#
# "ts3d status" zeigt alle laufenden TSS-Prozesse
# und die Adminpasswörter an! (ausgelesen aus server.log)

### BEGIN INIT INFO
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

set -e

DAEMON_USER="teamspeak"
DESC="Teamspeak3-Server"
DIR=/var/www/TS3
BIN=ts3server_linux_x86

DAEMON=$DIR/$BIN
NAME="Teamspeak3"
PATH=$DIR:/bin:/usr/bin:/sbin:/usr/sbin
PIDFILE=/var/run/$NAME/$NAME.pid
PARAMS=inifile=$DIR/ts3server.ini
export LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH"

test -x $DAEMON || exit 0

case "$1" in
  start)
    echo -n "Starting TS server: $NAME "
    [ -d /var/run/$NAME ] || mkdir -p /var/run/$NAME
    start-stop-daemon --start --background --chdir $DIR --chuid $DAEMON_USER -m --pidfile $PIDFILE --exec $DAEMON -- $PARAMS
    echo "."
    ;;
  stop)
    echo -n "Stopping TS server: $NAME "
    start-stop-daemon --stop --pidfile $PIDFILE --oknodo --exec $DAEMON
    rm -f $PIDFILE
    echo "."
    ;;
  restart)
    echo -n "Restarting TS server: $NAME "
    start-stop-daemon --stop --pidfile $PIDFILE --oknodo --exec $DAEMON
    rm -f $PIDFILE
    start-stop-daemon --start --background --chdir $DIR --chuid $DAEMON_USER -m --pidfile $PIDFILE --exec $DAEMON -- $PARAMS
    echo "."
    ;;
  reload|force-reload)
    echo "Reloading $NAME configuration files"
    start-stop-daemon --stop --pidfile $PIDFILE --signal 1 --exec $DAEMON -- $PARAMS
    echo "."
    ;;
  status)
       [ -e $PIDFILE ] && echo "$NAME seems to be running with pid: `cat $PIDFILE`." \
                       || echo "$NAME is not running."
    ;;
  *)
    echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload}"
    exit 1
    ;;
esac

exit 0
64Bit:
folgende Zeilen
set -e

DAEMON_USER="teamspeak"
DESC="Teamspeak3-Server"
DIR=/var/www/TS3
BIN=ts3server_linux_x86
wie folgt ändern:
set -e

DAEMON_USER="teamspeak"
DESC="Teamspeak3-Server"
DIR=/var/www/TS3
BIN=ts3server_linux_amd64

Lest euch den Kopfteil des Skriptes durch !!!!!
Dort steht wie Ihr einen Hardlink auf /etc/init.d/ts3d macht, was euch erlaubt egal wo Ihr im Verzeichnissbaum seid
einfach "ts3d start" einzugaben um den Server zu starten.
Ebenfalls steht dort wie Ihr den Server in den Autostart bekommt so dass er zusammen mit euerem Linuxserver startet,
falls Ihr mal neu booten müsst oder Stromausfall war.

So fertig !
Euer Server sollte bereits laufen und IHR müsstet jetzt bereits in der Lage sein zu connecten.

Nachtrag:
Wer seinen Teamspeak3 Server in einem Rootjail laufen lassen will, der sollte sich folgende Anleitung zum erstellen eines Rootjail's mal durchlesen.
Dort wird alles schön von Hand gemacht was fürs Verständniss besser ist als irgendwelche vorgefertigten Scripte die einem die Arbeit abnehmen man aber eigentlich gar nicht weiss was man da gemacht hat und warum.

Erstellen eines Rootjails für einen Teamspeak3 Server (http://www.feldstudie.net/2009/12/22/teamspeak-3-how-to-chroot/) <-- Hier klicken

Das Startscript von oben kann man mit einigen kleinen Anpassungen weiterverwenden :

DAEMON_USER="teamspeak"
DESC="Teamspeak3-Server"
DIR=/var/www/TS3
BIN=ts3server_linux_x86
Hier muss natürlich bei DIR= das Verzeichniss des Rootjails angegeben sein.

case "$1" in
  start)
    echo -n "Starting TS server: $NAME "
    [ -d /var/run/$NAME ] || mkdir -p /var/run/$NAME
    start-stop-daemon --start --background --chdir $DIR --chuid $DAEMON_USER -m --pidfile $PIDFILE --exec $DAEMON -- $PARAMS
    echo "."
    ;;
  stop)
    echo -n "Stopping TS server: $NAME "
    start-stop-daemon --stop --pidfile $PIDFILE --oknodo --exec $DAEMON
    rm -f $PIDFILE
    echo "."
    ;;
  restart)
    echo -n "Restarting TS server: $NAME "
    start-stop-daemon --stop --pidfile $PIDFILE --oknodo --exec $DAEMON
    rm -f $PIDFILE
    start-stop-daemon --start --background --chdir $DIR --chuid $DAEMON_USER -m --pidfile $PIDFILE --exec $DAEMON -- $PARAMS
    echo "."
    ;;
  reload|force-reload)
    echo "Reloading $NAME configuration files"
    start-stop-daemon --stop --pidfile $PIDFILE --signal 1 --exec $DAEMON -- $PARAMS
    echo "."
    ;;
  status)
       [ -e $PIDFILE ] && echo "$NAME seems to be running with pid: `cat $PIDFILE`." \
                       || echo "$NAME is not running."
    ;;
  *)
Die Zeilen mit start-stop-daemon müssen ergänzt werden um --chroot $DIR
Wer will kann auch wegen dem Verständniss überall die Variable DIR durch CHRDIR ersetzen weil so klarer wird dass der Daemon in einem Rootjail läuft.
Titel: Re: Installation eines Teamspeak3 Server's unter Linux (Debian)
Beitrag von: UTG|SePHTaN am 14.02.2010, 19:19:26
Solltet ihr Probleme an der einen oder anderen Stelle haben :

z.B. Ihr wollt das WebInterface von Psychokiller benutzen und erhaltet folgende Fehlermeldung :
 Error while fetching: 'error id=3329 msg=connection failed, you are banned extra_msg=you may retry in 538 seconds'

So liegt das an einer fehlenden IP-Freigabe in der Datei query_ip_whitelist.txt
In diese Datei müssen im Prinzip alle IP's rein von denen aus auf das Query-Interface des Server's
zugegriffen werden darf.