Instalación de TeamSpeak Server en Linux

TeamSpeak es uno de los servidores de comunicación de voz más populares para gaming y equipos profesionales, con baja latencia y alta calidad de audio. Esta guía explica cómo instalar y configurar TeamSpeak 3 en Linux, incluyendo la gestión de licencias, canales, permisos y administración mediante ServerQuery.

Requisitos Previos

  • Servidor Ubuntu 20.04/22.04 o CentOS 7/8 con acceso root
  • Mínimo 1 GB de RAM y 1 vCPU
  • Puerto UDP 9987 disponible (voz), TCP 10011 (ServerQuery), TCP 30033 (transferencia de archivos)
  • Conexión a internet para descargar el paquete

Descarga e Instalación

Crea un usuario dedicado para TeamSpeak por razones de seguridad:

# Crear usuario sin privilegios para teamspeak
useradd -m -d /opt/teamspeak -s /bin/bash teamspeak

# Cambiar al directorio de instalación
su - teamspeak

Descarga el paquete desde el sitio oficial de TeamSpeak:

# Descargar TeamSpeak 3 Server (verificar la versión más reciente en teamspeak.com)
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2

# Extraer el archivo
tar xvfj teamspeak3-server_linux_amd64-3.13.7.tar.bz2

# Mover los archivos al directorio de trabajo
mv teamspeak3-server_linux_amd64/* /opt/teamspeak/

# Aceptar la licencia de TeamSpeak
touch /opt/teamspeak/.ts3server_license_accepted

Configuración Inicial

Inicia el servidor por primera vez para generar las credenciales de administrador:

# Iniciar el servidor como usuario teamspeak
su - teamspeak -c "/opt/teamspeak/ts3server_linux_amd64"

En la primera ejecución, TeamSpeak mostrará información crítica:

------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Account created
loginname= "serveradmin", password= "XXXXXXXXXX"

ServerAdmin privilege key created, please use it to gain
serveradmin rights for your virtual server. please
also check the doc/privilegekey_guide.txt for details.

token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
------------------------------------------------------------------

Guarda estas credenciales inmediatamente. No se mostrarán de nuevo.

# Detener el servidor después de anotar las credenciales
# Presiona Ctrl+C o usa kill

# Verificar que los archivos de configuración se crearon
ls /opt/teamspeak/

Gestión de Licencias

TeamSpeak ofrece una licencia gratuita para hasta 32 usuarios simultáneos. Para más usuarios, necesitas una licencia comercial o ATHP (Authorized TeamSpeak Host Provider):

# Verificar el estado de la licencia
cat /opt/teamspeak/licensekey.dat

# Si tienes una licencia comercial, coloca el archivo en el directorio de instalación
cp licensekey.dat /opt/teamspeak/licensekey.dat
chown teamspeak:teamspeak /opt/teamspeak/licensekey.dat

Para la licencia de No-Profit (hasta 512 usuarios gratis para organizaciones sin ánimo de lucro):

# Crear el directorio para la licencia
mkdir -p /opt/teamspeak

# Copiar la licencia descargada del sitio oficial de TeamSpeak
cp myteamspeak_license.dat /opt/teamspeak/licensekey.dat

Configuración de Canales y Permisos

Conéctate al servidor con el cliente TeamSpeak y usa el token de privilegio generado en la primera ejecución para obtener derechos de administrador. Después puedes:

Crear canales desde el cliente o usando ServerQuery:

# Conectar a ServerQuery para crear canales vía línea de comandos
telnet localhost 10011

# Seleccionar el servidor virtual (ID 1 por defecto)
use sid=1

# Crear un canal
channelcreate channel_name=General channel_flag_permanent=1

# Crear un canal con contraseña
channelcreate channel_name=Privado channel_flag_permanent=1 channel_password=miclave

Configurar permisos para grupos de usuarios:

# Listar grupos del servidor
serverGroupList

# Añadir permiso a un grupo (b_channel_create_permanent = crear canales permanentes)
serverGroupAddPerm sgid=6 permid=75 permvalue=1 permnegated=0 permskip=0

Administración con ServerQuery

ServerQuery es la interfaz de línea de comandos de TeamSpeak para administración remota:

# Conectar a ServerQuery vía Telnet
telnet tu-servidor.com 10011

# Autenticarse
login serveradmin TU_CONTRASEÑA

# Seleccionar servidor virtual
use sid=1

# Listar clientes conectados
clientlist

# Expulsar a un cliente (reemplaza clid con el ID del cliente)
clientkick clid=5 reasonid=5 reasonmsg=Comportamiento\sinadecu

# Banear una IP
banadd ip=192.168.1.100 time=3600 banreason=Spam

# Ver información del servidor virtual
serverinfo

# Cambiar el nombre del servidor virtual
serveredit virtualserver_name=Mi\sServidor\sTeamSpeak

# Salir de la sesión
quit

También puedes usar la librería Python ts3 para automatizar tareas:

# Instalar la librería ts3 para Python
pip3 install ts3

# Script de ejemplo para listar usuarios conectados
cat << 'EOF' > /opt/teamspeak/query_usuarios.py
import ts3

# Conectar al servidor TeamSpeak
with ts3.query.TS3ServerConnection("telnet://serveradmin:CONTRASEÑA@localhost:10011") as ts3conn:
    ts3conn.exec_("use", sid=1)
    clientes = ts3conn.exec_("clientlist")
    for cliente in clientes:
        print(f"Cliente: {cliente.get('client_nickname')} (ID: {cliente.get('clid')})")
EOF

python3 /opt/teamspeak/query_usuarios.py

Configuración del Firewall

# Ubuntu/Debian con UFW
ufw allow 9987/udp comment 'TeamSpeak voz'
ufw allow 10011/tcp comment 'TeamSpeak ServerQuery'
ufw allow 30033/tcp comment 'TeamSpeak transferencia de archivos'

# CentOS/Rocky con firewalld
firewall-cmd --permanent --add-port=9987/udp
firewall-cmd --permanent --add-port=10011/tcp
firewall-cmd --permanent --add-port=30033/tcp
firewall-cmd --reload

Inicio Automático con systemd

# Crear el archivo de servicio systemd
cat << 'EOF' > /etc/systemd/system/teamspeak.service
[Unit]
Description=TeamSpeak 3 Server
After=network.target

[Service]
Type=forking
User=teamspeak
Group=teamspeak
WorkingDirectory=/opt/teamspeak
ExecStart=/opt/teamspeak/ts3server_linux_amd64 inifile=/opt/teamspeak/ts3server.ini
ExecStop=/opt/teamspeak/ts3server_linux_amd64 stop
PIDFile=/opt/teamspeak/ts3server.pid
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# Recargar systemd y habilitar el servicio
systemctl daemon-reload
systemctl enable teamspeak
systemctl start teamspeak

# Verificar el estado del servicio
systemctl status teamspeak

Solución de Problemas

El servidor no inicia:

# Verificar los logs del servidor
cat /opt/teamspeak/logs/ts3server_*.log | tail -50

# Verificar que el puerto no está en uso
ss -tulnp | grep 9987

No se puede conectar al servidor:

# Verificar que el proceso está corriendo
ps aux | grep ts3server

# Comprobar que los puertos están escuchando
ss -tulnp | grep -E '9987|10011|30033'

# Probar la conectividad de red
nc -zv tu-servidor.com 10011

Problemas de permisos:

# Asegurarse de que el usuario teamspeak es propietario de los archivos
chown -R teamspeak:teamspeak /opt/teamspeak/

# Verificar los permisos del ejecutable
ls -la /opt/teamspeak/ts3server_linux_amd64
chmod +x /opt/teamspeak/ts3server_linux_amd64

Error de licencia:

# Verificar que el archivo de licencia existe y tiene los permisos correctos
ls -la /opt/teamspeak/licensekey.dat
cat /opt/teamspeak/licensekey.dat

Conclusión

TeamSpeak Server en Linux ofrece una plataforma de comunicación de voz robusta y de baja latencia, ideal para equipos de gaming y entornos corporativos. Con la configuración de systemd, permisos adecuados y las reglas de firewall correctas, el servidor funcionará de forma estable y segura. Recuerda revisar regularmente los logs y actualizar TeamSpeak cuando haya nuevas versiones disponibles.