TeamSpeak es un sistema de chat de voz muy extendido entre comunidades de juego y equipos de trabajo, con buena calidad de audio y un sistema de permisos muy detallado. El servidor de TeamSpeak 3 se distribuye como un binario para Linux que no está en los repositorios de Ubuntu. En este tutorial lo instalarás en Ubuntu 24.04 con un usuario sin privilegios, lo ejecutarás como servicio systemd, reclamarás los permisos de administrador y harás tareas básicas desde ServerQuery.

Requisitos previos

  • Un servidor con Ubuntu 24.04 LTS de 64 bits (x86_64), por ejemplo un VPS de CubePath. Con 1 GB de RAM es suficiente.
  • Un usuario no root con privilegios sudo.
  • UFW activo con el acceso SSH permitido.
  • El cliente de TeamSpeak instalado en tu ordenador.

TeamSpeak 3 Server usa estos puertos:

PuertoProtocoloUso¿Abrir en el firewall?
9987UDPVoz (servidor virtual por defecto)Sí
30033TCPTransferencia de archivosSí
10011TCPServerQuery en texto planoNo
10022TCPServerQuery por SSHSolo si lo necesitas

Paso 1: Crear un usuario dedicado

El servidor no necesita privilegios de root, así que lo ejecutarás con un usuario de sistema propio, sin shell de login, cuyo directorio personal será /opt/teamspeak:

sudo adduser --system --group --home /opt/teamspeak --shell /usr/sbin/nologin teamspeak

Comprueba que el usuario existe:

id teamspeak
uid=112(teamspeak) gid=113(teamspeak) groups=113(teamspeak)

Paso 2: Descargar y verificar TeamSpeak 3 Server

Consulta la versión más reciente en la página de descargas de TeamSpeak. En el momento de escribir este tutorial es la 3.13.7. Descarga el archivo en tu directorio personal:

cd ~
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2

Calcula su suma SHA256 y compárala con la que aparece en la página de descargas:

sha256sum teamspeak3-server_linux_amd64-3.13.7.tar.bz2
775a5731a9809801e4c8f9066cd9bc562a1b368553139c1249f2a0740d50041e  teamspeak3-server_linux_amd64-3.13.7.tar.bz2

Extrae el contenido directamente en /opt/teamspeak y asigna la propiedad al usuario teamspeak:

sudo tar -xjf teamspeak3-server_linux_amd64-3.13.7.tar.bz2 -C /opt/teamspeak --strip-components=1
sudo chown -R teamspeak:teamspeak /opt/teamspeak

Comprueba que el binario y los scripts de arranque están en su sitio:

ls /opt/teamspeak/ts3server*
/opt/teamspeak/ts3server  /opt/teamspeak/ts3server_minimal_runscript.sh  /opt/teamspeak/ts3server_startscript.sh

Paso 3: Aceptar la licencia

TeamSpeak no arranca hasta que aceptas su licencia. Léela en /opt/teamspeak/LICENSE y, si estás de acuerdo, créala como aceptada con un archivo vacío:

sudo -u teamspeak touch /opt/teamspeak/.ts3server_license_accepted

Paso 4: Crear el servicio systemd

Un servicio systemd arranca TeamSpeak con el sistema, lo reinicia si falla y guarda su salida en el journal. Crea el archivo de la unidad:

sudo nano /etc/systemd/system/teamspeak.service
[Unit]
Description=TeamSpeak 3 Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=teamspeak
Group=teamspeak
WorkingDirectory=/opt/teamspeak
ExecStart=/opt/teamspeak/ts3server_minimal_runscript.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

ts3server_minimal_runscript.sh ejecuta el servidor en primer plano, que es lo que espera Type=simple. Recarga systemd y arranca el servicio:

sudo systemctl daemon-reload
sudo systemctl enable --now teamspeak
sudo systemctl status teamspeak
● teamspeak.service - TeamSpeak 3 Server
     Loaded: loaded (/etc/systemd/system/teamspeak.service; enabled; preset: enabled)
     Active: active (running) since ...

Paso 5: Guardar las credenciales de administrador

En el primer arranque, TeamSpeak crea la base de datos SQLite y muestra dos credenciales que no vuelve a enseñar: la contraseña de la cuenta de ServerQuery serveradmin y un token de privilegio para convertirte en administrador del servidor virtual. Como la salida va al journal, puedes recuperarlas así:

sudo journalctl -u teamspeak --no-pager | grep -E 'loginname|token='
... loginname= "serveradmin", password= "fR3kXz9q"
... token=AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd

Copia ambos valores a tu gestor de contraseñas ahora. El token solo sirve una vez; la contraseña de serveradmin la usarás para ServerQuery.

Comprueba también que el servidor escucha en los puertos esperados:

sudo ss -tulpn | grep ts3server
udp   UNCONN 0      0            0.0.0.0:9987       0.0.0.0:*    users:(("ts3server",pid=3120,fd=12))
tcp   LISTEN 0      128          0.0.0.0:30033      0.0.0.0:*    users:(("ts3server",pid=3120,fd=20))
tcp   LISTEN 0      128          0.0.0.0:10011      0.0.0.0:*    users:(("ts3server",pid=3120,fd=18))
tcp   LISTEN 0      128          0.0.0.0:10022      0.0.0.0:*    users:(("ts3server",pid=3120,fd=19))

Paso 6: Abrir los puertos en el firewall

Abre solo los puertos que necesitan los clientes: la voz y la transferencia de archivos. ServerQuery se queda cerrado al exterior y lo usarás desde el propio servidor:

sudo ufw allow 9987/udp comment 'TeamSpeak voz'
sudo ufw allow 30033/tcp comment 'TeamSpeak archivos'
sudo ufw status
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
9987/udp                   ALLOW       Anywhere                   # TeamSpeak voz
30033/tcp                  ALLOW       Anywhere                   # TeamSpeak archivos

Paso 7: Conectarte y reclamar los permisos de administrador

En el cliente de TeamSpeak, conéctate a your_server_ip (o a tu dominio, si tiene un registro A apuntando al servidor) con el apodo que quieras. En la primera conexión como único usuario, el cliente suele pedir directamente la clave de privilegio. Si no lo hace, ve a Permisos > Usar clave de privilegio y pega el token del paso 5.

Tu usuario pasa a pertenecer al grupo Server Admin. Compruébalo en la ventana de información de tu cliente, o simplemente haz clic derecho en el servidor y verifica que puedes crear canales con Crear canal.

Desde aquí puedes crear la estructura de canales, asignar grupos a otros usuarios (clic derecho sobre el usuario > Establecer grupos de servidor) y ajustar permisos en Permisos > Grupos de servidor.

Paso 8: Administrar el servidor con ServerQuery

ServerQuery es la interfaz de comandos de TeamSpeak. Por defecto solo acepta conexiones sin límite de velocidad desde 127.0.0.1, así que conéctate desde el propio servidor con nc:

nc 127.0.0.1 10011
TS3
Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a list of commands and "help <command>" for information on a specific command.

Inicia sesión con la contraseña de serveradmin y selecciona el servidor virtual 1:

login serveradmin your_serveradmin_password
use sid=1

Cada comando correcto responde con error id=0 msg=ok. Algunos comandos útiles:

serverinfo
clientlist
channelcreate channel_name=General channel_flag_permanent=1
serveredit virtualserver_name=Mi\sservidor\sTeamSpeak

ServerQuery escapa los espacios como \s, por eso el nombre del servidor se escribe Mi\sservidor\sTeamSpeak. Para expulsar a un usuario, busca su clid en clientlist y ejecuta:

clientkick clid=5 reasonid=5 reasonmsg=Spam

Cierra la sesión con:

quit

Paso 9: Hacer copias de seguridad

Toda la configuración (canales, grupos, permisos, usuarios registrados) vive en la base de datos SQLite ts3server.sqlitedb, y los archivos subidos por los usuarios en el subdirectorio files. Para una copia consistente, detén el servicio, archiva el directorio completo de la instalación (ocupa pocos megas) y vuelve a arrancar:

sudo systemctl stop teamspeak
sudo tar -czf ~/teamspeak-backup-$(date +%F).tar.gz -C /opt teamspeak
sudo systemctl start teamspeak

Comprueba que la base de datos está dentro de la copia:

tar -tzf ~/teamspeak-backup-$(date +%F).tar.gz | grep sqlitedb
teamspeak/ts3server.sqlitedb

Guarda la copia fuera del servidor. Para restaurar, extráela en /opt con el servicio parado y revisa que la propiedad sigue siendo del usuario teamspeak.

Solución de problemas

El servicio se detiene nada más arrancar. Revisa el journal con sudo journalctl -u teamspeak -n 50. Si menciona la licencia, falta el archivo .ts3server_license_accepted o no pertenece al usuario teamspeak. Corrige la propiedad con sudo chown -R teamspeak:teamspeak /opt/teamspeak.

Perdiste la contraseña de serveradmin. Detén el servicio y arranca el servidor una vez a mano con el parámetro serveradmin_password:

sudo systemctl stop teamspeak
sudo -u teamspeak /opt/teamspeak/ts3server_minimal_runscript.sh serveradmin_password=your_new_password

Cuando veas que el servidor ha arrancado, deténlo con Ctrl+C y vuelve a iniciar el servicio con sudo systemctl start teamspeak.

Los clientes no conectan. Comprueba que el puerto 9987/udp está abierto en UFW y en cualquier firewall del panel de tu proveedor, y que ss -tulpn muestra ts3server escuchando en UDP 9987.

Las subidas de archivos fallan. Falta abrir el puerto 30033/tcp.

Conclusión

Tienes TeamSpeak 3 Server en Ubuntu 24.04 ejecutándose como servicio con un usuario sin privilegios, con permisos de administrador reclamados, ServerQuery accesible solo desde el propio servidor y un método de copia de seguridad. Como siguientes pasos puedes programar la copia con un timer de systemd, dar de alta un registro SRV _ts3._udp en tu DNS para conectar por nombre sin indicar el puerto, o solicitar una licencia si necesitas más de 32 usuarios.