====== TeamSpeak ======
TeamSpeak ist eine proprietäre Sprachkonferenz-Software, die es ermöglicht, über das Internet oder ein LAN miteinander zu kommunizieren.
[[Mumble]] -> Open Source & freie TeamSpeak-Alternative mit Verschlüsselung
Aktuell ist ''TeamSpeak 3'' (Version 3.0.19.4)
* [[http://www.teamspeak.com/downloads]]
* **Client-Software** gibt es für **Linux**
* **Server-Software** (Die Versionierung der Server-Software ist unabhängig von der Versionierung der Client-Software!) gibt es für **Linux** __und__ **FreeBSD**
* [[http://forum.teamspeak.com/forums/108-Linux-FreeBSD]]
===== TeamSpeak 3 - Client =====
hier die Anleitung für Ubuntu, sie sollte aber für alle Linux-Distributionen so funktionieren, da hier nichts Distributionsabhängiges gemacht wird:
* [[https://wiki.ubuntuusers.de/TeamSpeak_3/]] - Hilfe
* [[https://www.teamspeak.com/de/downloads/|TeamSpeak Downloads]]
Installation:
> bash TeamSpeak3-Client-linux_amd64-3.0.19.4.run
das hier ist die Startdatei:
> ls -lha TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh
-rwx------ 1 fritz fritz 283 Jul 14 12:19 TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh
===== TeamSpeak 3 - Musik-Bot =====
* [[https://forum.teamspeak.com/threads/101054-GUIDE-WALKTHROUGH-Music-bot-without-GUI-or-soundcard-ideal-for-VPS-server?p=385221#post385221|Forum/Teamspeak: THE GUIDE TO THE EASY SERVERSIDE MUSICBOT]]
* [[https://www.youtube.com/watch?v=fXqXg39UQt0|20150202 HOWTO TS3BOT TS WARFREAKS.COM WARFREAKS ANLEITUNG DEUTSCH MUSIK MUSIC]]
* [[https://docs.mopidy.com/en/latest/|Mopidy]] - Server seitiger Musik-Bot
* [[https://github.com/bpetrikovics/teamspeak3-music-control|TS3 Music Control - Teamspeak bot / Mopidy remote control]]
* [[::TS3Bot]] - komplett in Python2 geschrieben
* [[::SinusBot]] - closed Source
===== TeamSpeak 3 - Server (Raspberry Pi 4 + Linux Ubuntu 20.04 LTS) =====
Download der Server-Version für Linux:
* **__[[https://www.teamspeak.com/de/downloads/#server]]__**
root@linux:~# useradd -m -s /bin/bash ts3
root@linux:~# passwd ts3
Datei runterladen: [[https://files.teamspeak-services.com/releases/server/]]
V="$(links -dump https://files.teamspeak-services.com/releases/server/ | egrep '[^0-9]3[.]' | awk '{a=$1;gsub("[.]","");print $1,a}' | sort -nr | head -n1 | awk '{print $2}')";wget https://files.teamspeak-services.com/releases/server/${V}/teamspeak3-server_freebsd_amd64-${V}.tar.bz2
ts3@ubuntu:~$ tar xjf teamspeak3-server_linux_amd64-3.13.3.tar.bz2
ts3@ubuntu:~$ cd teamspeak3-server_linux_amd64/
ts3@ubuntu:~$ less doc/server_quickstart.md
ts3@ubuntu:~$ touch .ts3server_license_accepted
ts3@ubuntu:~$ ./ts3server_startscript.sh start
Starting the TeamSpeak 3 server
./ts3server_startscript.sh: 44: ./ts3server: Exec format error
TeamSpeak 3 server could not start
Warum? => [[https://forum-raspberrypi.de/forum/thread/48506-teamspeak3-server-installieren-auf-ein-raspberry-pi4/|Teamspeak3-Server installieren auf ein Raspberry Pi 4]]
Antwort: Der "TeamSpeak 3 - Server" wurde für "Intel-CPUs" gebaut und läuft deshalb nicht auf "ARM-CPUs".
===== TeamSpeak 3 - Server (FreeBSD 13.0 RC1) =====
[root@freebsd ~]# pw useradd -m -M 0700 -s bash -n ts3
[root@freebsd ~]# passwd ts3
[[https://www.teamspeak-connection.de/forum/thread/327-ts3-server-startet-nur-mit-root-rechten/|ggf. ist das folgende noch zu tun...]]
[root@freebsd ~]# echo "tmpfs /dev/shm tmpfs rw,mode=1777 0 0" >> /etc/fstab
[root@freebsd ~]# mount /dev/shm
Datei runterladen: [[https://files.teamspeak-services.com/releases/server/]]
V="$(links -dump https://files.teamspeak-services.com/releases/server/ | egrep '[^0-9]3[.]' | awk '{a=$1;gsub("[.]","");print $1,a}' | sort -nr | head -n1 | awk '{print $2}')";wget https://files.teamspeak-services.com/releases/server/${V}/teamspeak3-server_freebsd_amd64-${V}.tar.bz2
[ts3@freebsd ~]$ tar xjf teamspeak3-server_freebsd_amd64-3.13.3.tar.bz2
[ts3@freebsd ~]$ cd teamspeak3-server_freebsd_amd64
[ts3@freebsd ~]$ less doc/server_quickstart.md
[ts3@freebsd ~]$ touch .ts3server_license_accepted
[ts3@freebsd ~]$ vi ts3server_startscript.sh
...
COMMANDLINE_PARAMETERS="createinifile=1"
...
[ts3@freebsd ~]$ ./ts3server_startscript.sh start
[ts3@freebsd ~]$ vi ts3server_startscript.sh
...
COMMANDLINE_PARAMETERS="inifile=ts3server.ini"
...
[ts3@freebsd ~]$ vi ts3server.ini
[ts3@freebsd ~]$ ./ts3server_startscript.sh restart
In der FreeBSD-Version gibt es einen Fehler (Bug).
Der bewirkt, dass man hier den ''default_voice_port'' nicht ändern kann, egal was man im //inifile// einträgt, er startet __immer__ mit dem ''default_voice_port=9987''.
Alle anderen Ports kann man ändern, nur diesen einen nicht.
**//Allerdinsgs habe ich es bis jetzt noch nicht geschafft, den TeamSpeak 3 - Server ohne root-Rechte zu starten.//**
Bei mir startet er nur so:
[root@freebsd ~]$ cd /home/ts3/teamspeak3-server_freebsd_amd64/
[root@freebsd ~]$ ./ts3server_startscript.sh restart
//Dieses Sicherheitsproblem habe ich dadurch gelöst, dass ich meinen TeamSpeak-Server jetzt in einer [[::freebsd:FreeBSD - Bhyve|Bhyve]]-VM mit Linux laufen lasse. Und damit meine Fritz!Box nicht immerzu mit der IP des Host- und der IP des Gast-Systems durcheinander kommt und dadurch der Zugriff auf den TeamSpeak-Server gestört ist, muß das Netzwerk für die [[::freebsd:FreeBSD - Bhyve|Bhyve]]-VM als ''NIC Passthrough'' (eine Netzwerkkarte alleine nur für die VM) konfiguriert werden. Dann gibt es keine Sicherheitslücke und keine Probleme mehr.//
===== TeamSpeak 3 - Server (FreeBSD 12.0) =====
**__ACHTUNG! Wenn eine neue Version veröffentlicht wurde, dann funktionieren die alten nicht mehr.__** Es gibt dann die Fehlermeldung ''"Failed loading default license file!"''.\\
Um den Fehler zu beseitigen, muss man ein Upgrade durchführen.
Um den TeamSpeak-Server mit der Version 3.12.1 starten zu können, benötigt der [[::FreeBSD:nur den FreeBSD-Kernel bauen|Kernel von FreeBSD 12.1]] diese beiden Optionen:
options INET6 # IPv6 communications protocols
options COMPAT_FREEBSD11 # Compatible with FreeBSD11
[[https://support.teamspeak.com/hc/en-us/articles/360002712257-Which-ports-does-the-TeamSpeak-3-server-use-|TeamSpeak3 Server Ports]]:
* Sprache (UDP): **9987**
* Dateitransfer (TCP): **30033**
=== failed to register local accounting service: File exists ===
Leider kann man den "TeamSpeak 3 - Server" auf FreeBSD nicht in einer Jail und nicht mit einem unprivilegierten Benutzer starten.
Dann erscheint diese Fehlermeldung im Log.
2021-01-05 20:52:36.738472|ERROR |Accounting | |failed to register local accounting service: File exists
Ruft man dagegen das Startkommando als "root" auf, dann startet der TS3-Server.
Es hat irgendwie mit den SHM-Rechten zu tun...
Mit diesem Kommando kann man sich die "POSIX shared memory segments" anzeigen lassen
> posixshmcontrol ls
**//meine// Lösung:**
Ich habe mir in einer [[::freebsd:FreeBSD - Bhyve|Bhyve]]-VM ein Linux installiert und betreibe da drin einen Linux-TS3-Server.
==== Download: TeamSpeak 3 - Server (FreeBSD 12.0) ====
diese Version ist oft aktueller als die Version aus den Ports:
* **__[[https://www.teamspeak.com/de/downloads/#server]]__**
Beispiel Version 3.5 (es funktionierte nicht in einer Jail):
> pkg install security/ca_root_nss
> tar xjf teamspeak3-server_freebsd_amd64-3.5.1.tar.bz2 -C /usr/local/
> cd /usr/local/teamspeak3-server_freebsd_amd64/
> less doc/server_quickstart.txt
> touch .ts3server_license_accepted
> ./ts3server_startscript.sh start
...
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Account created
loginname= "serveradmin", password= "5dES0fRS"
------------------------------------------------------------------
------------------------------------------------------------------
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/privilegekey_guide.txt for details.
token=EroSShyR4R00o961S+ucdknq0NJ6yiJ68hsWUcSc
------------------------------------------------------------------
> netstat -anp tcp
> netstat -anNp tcp
> ls -lha logs/
> less logs/ts3server_*.log
=== Backup: TeamSpeak 3 - Server (FreeBSD 12.0) ===
[[https://www.teamspeak-info.de/ts_server_backup_erstellen.htm]]
Die folgenden Dateien bzw. Verzeichnisse gehören in ein Backup rein:
* ''ts3server.sqlitedb'' - enthält u.a. Channels, Einstellungen, User, Rechte, alle virtuellen Server
* ''ts3server.ini'' (falls vorhanden)
* ''query_ip_whitelist.txt''
* ''query_ip_blacklist.txt''
* ''files/''
zum Beispiel könnte man das so machen:
> tar czf /home/TS3-Server_Backup.tgz /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb /usr/local/teamspeak3-server_freebsd_amd64/ts3server.ini /usr/local/teamspeak3-server_freebsd_amd64/query_ip_whitelist.txt /usr/local/teamspeak3-server_freebsd_amd64/query_ip_blacklist.txt /usr/local/teamspeak3-server_freebsd_amd64/files/ /usr/local/teamspeak3-server_freebsd_amd64/.ts3server_license_accepted
#!/bin/sh
#
# http://wir1234.de/wiki/doku.php?id=teamspeak#downloadteamspeak_3_-_server_freebsd_120
#
SiK="/home"
if [ -e ${SiK}/TS3-Server_Backup.tgz ] ; then
if [ -e ${SiK}/TS3-Server_Backup_01.tgz ] ; then
if [ -e ${SiK}/TS3-Server_Backup_02.tgz ] ; then
if [ -e ${SiK}/TS3-Server_Backup_03.tgz ] ; then
rm -f ${SiK}/TS3-Server_Backup_03.tgz
fi
mv ${SiK}/TS3-Server_Backup_02.tgz ${SiK}/TS3-Server_Backup_03.tgz
fi
mv ${SiK}/TS3-Server_Backup_01.tgz ${SiK}/TS3-Server_Backup_02.tgz
fi
mv ${SiK}/TS3-Server_Backup.tgz ${SiK}/TS3-Server_Backup_01.tgz
fi
tar czf ${SiK}/TS3-Server_Backup.tgz /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb /usr/local/teamspeak3-server_freebsd_amd64/ts3server.ini /usr/local/teamspeak3-server_freebsd_amd64/query_ip_whitelist.txt /usr/local/teamspeak3-server_freebsd_amd64/query_ip_blacklist.txt /usr/local/teamspeak3-server_freebsd_amd64/files/
=== Fehlermeldung: Failed loading default license file! ===
Bei dieser Fehlermeldung hat es mir geholfen, das ich mir die neueste Version runtergeladen und installiert habe (Update von Version 3.5.1 auf 3.9.1).
Und dann die folgenden Dateien und Verzeichnisse aus dem alten einfach rüber kopiert (Backup + ''.ts3server_license_accepted''):
* ''ts3server.sqlitedb'' - enthält u.a. Channels, Einstellungen, User, Rechte, alle virtuellen Server
* ''ts3server.ini'' (falls vorhanden)
* ''query_ip_whitelist.txt''
* ''query_ip_blacklist.txt''
* ''files/''
* ''.ts3server_license_accepted''
''WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT''
==== Update des TeamSpeak-Servers ====
__neueste FreeBSD-Version (64-Bit) holen:__ [[https://www.teamspeak.com/de/downloads/#server]]
__Daten sichern:__
tar czf TS3-Server_Backup_-_SiK_der_Daten.tgz /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb /usr/local/teamspeak3-server_freebsd_amd64/ts3server.ini /usr/local/teamspeak3-server_freebsd_amd64/query_ip_whitelist.txt /usr/local/teamspeak3-server_freebsd_amd64/query_ip_blacklist.txt /usr/local/teamspeak3-server_freebsd_amd64/files/ /usr/local/teamspeak3-server_freebsd_amd64/.ts3server_license_accepted
__alte Version bei Seite legen:__
mv /usr/local/teamspeak3-server_freebsd_amd64 /usr/local/teamspeak3-server_freebsd_amd64_-_$(date +'%F_%H-%M-%S')
__neueste Version entpacken:__
tar xjf teamspeak3-server_freebsd_amd64-3.12.1.tar.bz2 -C /usr/local/
__gesicherte Daten zurückspielen:__
tar xzf TS3-Server_Backup_-_SiK_der_Daten.tgz -C /
__und zum Schuß ggf. noch die Rechte anpassen:__
chown -R teamspeak:teamspeak /usr/local/teamspeak3-server_freebsd_amd64
===== Admin-Rechte in der Datenbank vergeben =====
Quelle: [[https://www.teamspeak-connection.de/forum/thread/930-rechte-in-der-datenbank-mit-sqlite-manager-ändern/|Rechte in der Datenbank mit Sqlite Manager ändern]]
Wenn man Zugang zu den [[SQLite]]-Dateien von TeamSpeak hat, dann kann man sich Admin-Rechte verschaffen, wie im folgenden beschrieben.
In diesem Beispiel wurde es auf einem FreeBSD 12 durchgeführt.
1. vom richtigen Server die ID ermitteln:
> echo -e ".header on \n SELECT * FROM servers;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
server_id|server_port|server_autostart|server_machine_id|server_month_upload|server_month_download|server_total_upload|server_total_download
1|9987|1||0|120429|3543318|6131488
server_id=1
2. vom Admin die ID ermitteln:
> echo -e ".header on \n SELECT * FROM groups_server;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
group_id|server_id|name|type|org_group_id
1|0|Guest Server Query|2|
2|0|Admin Server Query|2|
3|0|Server Admin|0|
4|0|Normal|0|
5|0|Guest|0|
6|1|Server Admin|1|3
group_id=6
3. vom User mit der richtigen client_unique_id bzw. dem richtigen Namen ("Fritz"):
> echo -e ".header on \n SELECT * FROM clients;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
client_id|server_id|client_unique_id|client_nickname|client_login_name|client_login_password|client_lastconnected|client_totalconnections|client_month_upload|client_month_download|client_total_upload|client_total_download|client_lastip|org_client_id
1|0|serveradmin|serveradmin|serveradmin|V4ZvXlLwn3nJa2qxhjs4R77G4rs=|0|0|0|0|0|0||
2|1|eu7t26sa4sfADoiKris1u9DLI0A=|Otto|||1546627755|1|0|0|0|0|192.168.2.111|
3|1|ServerQuery|ServerQuery Guest|||1546627755|0|0|0|0|0||
4|1|zs04xrL8e853l0tk5o6nklWsUPg=|Fritz|||1569873812|318|0|40619|2761850|818703|192.168.2.169|
client_id=4
4. Zwischenstand, jetzt sollten wir folgende Daten haben:
group_id=6
server_id=1
client_id=4
5. einen Admin-Datensatz wie folgt anlegen:
group_id = 6 (group_id)
server_id = 1 (server_id)
id1 = 4 (client_id)
id2 = 0
> echo "INSERT INTO group_server_to_client (group_id,server_id,id1,id2) VALUES(6,1,4,0);" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
> echo -e ".header on \n SELECT * FROM group_server_to_client WHERE group_id=6 AND server_id=1 AND id1=4 ORDER BY group_id;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
group_id|server_id|id1|id2
6|1|4|0
Jetzt hat "Fritz" Admin-Rechte.
==== Admin Server Query - Rechte ====
Wenn man über den TS3-Client Berechtigungsschlüssel erstellt, dann haben diese nur max. das Recht ''"Server Admin"'' (**6**), um sich aber Instanz-Rechte wieder zurück holen zu können, benötigt man Berechtigungsschlüssel mit dem Recht ''"Admin Server Query"'' (**2**).
echo -e ".header on \n SELECT * FROM groups_server/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
group_id|server_id|name|type|org_group_id
1|0|Guest Server Query|2|
2|0|Admin Server Query|2|
3|0|Server Admin|0|
4|0|Normal|0|
5|0|Guest|0|
6|1|Server Admin|1|3
8|1|Neuling|1|5
Und so kann man erstellte Berechtigungsschlüssel vom Recht "**6**" auf das Recht "**2**" anheben.
hier die Schlüssel mit den Standardrechten "**6**":
echo -e ".header on \n SELECT * FROM tokens;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
server_id|token_key|token_type|token_id1|token_id2|token_created|token_description|token_customset|token_from_client_id
1|AGRowEv4RZcs+WZb2XZG6xxiADWBXi14bmqhEhHN|0|6|0|1594161216|||4
1|BiWmEeAeYxEpYKvreWhGknxQx9OwwzvLTYvY+6hM|0|6|0|1594161226|||4
1|CWiv+NhTvfbTlfyMYRBX3RsC7s4cJLT9UdSnT1FL|0|6|0|1594161226|||4
1|DQ2Vf2yG0nRrp1RQEAkby7bz6OYJ5AFvLWCTmYhK|0|6|0|1594161227|||4
1|EXH+PWHuQmwRbCFxhLOWfD9S6ukRsVKG1ZwCifBJ|0|6|0|1594161227|||4
1|FqpJs38WTdk22gbRQgZ46olk7rGxqzqnw9Gfyh2I|0|6|0|1594161227|||4
1|Go2Wsj5KssHRWtFzgubdC7dRER0Gj5ReN7d14lXH|0|6|0|1594161229|||4
die Rechte der Schlüssel aufwerten:
echo "UPDATE tokens SET token_id1 = 2 WHERE token_id1 = 6;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
jetzt haben die Schlüssel die erweiterten Rechten "**2**":
echo -e ".header on \n SELECT * FROM tokens;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
server_id|token_key|token_type|token_id1|token_id2|token_created|token_description|token_customset|token_from_client_id
1|AGRowEv4RZcs+WZb2XZG6xxiADWBXi14bmqhEhHN|0|2|0|1594161216|||4
1|BiWmEeAeYxEpYKvreWhGknxQx9OwwzvLTYvY+6hM|0|2|0|1594161226|||4
1|CWiv+NhTvfbTlfyMYRBX3RsC7s4cJLT9UdSnT1FL|0|2|0|1594161226|||4
1|DQ2Vf2yG0nRrp1RQEAkby7bz6OYJ5AFvLWCTmYhK|0|2|0|1594161227|||4
1|EXH+PWHuQmwRbCFxhLOWfD9S6ukRsVKG1ZwCifBJ|0|2|0|1594161227|||4
1|FqpJs38WTdk22gbRQgZ46olk7rGxqzqnw9Gfyh2I|0|2|0|1594161227|||4
1|Go2Wsj5KssHRWtFzgubdC7dRER0Gj5ReN7d14lXH|0|2|0|1594161229|||4