TShock es un servidor de Terraria mantenido por la comunidad que se basa en el servidor oficial y le añade cuentas de usuario, grupos de permisos, regiones protegidas, baneos persistentes y soporte para plugins. En este tutorial instalarás TShock en Ubuntu 24.04, generarás un mundo, lo ejecutarás como servicio systemd dentro de una sesión tmux para conservar el acceso a la consola, crearás tu cuenta de administrador, abrirás el cortafuegos y programarás copias de seguridad.
Requisitos previos
Para seguir esta guía necesitas:
- Un servidor con Ubuntu 24.04 LTS (x86_64), por ejemplo un VPS de CubePath. Con 1 núcleo de CPU y 2 GB de RAM basta para un grupo pequeño en un mundo mediano; los mundos grandes con muchos jugadores necesitan más memoria.
- Un usuario no root con privilegios
sudo. - Terraria para PC en la misma versión para la que está compilado TShock. Cada versión de TShock indica en su nombre la versión de Terraria compatible.
Paso 1: Instalar los paquetes necesarios
TShock se distribuye como archivo ZIP y las compilaciones para Linux incluyen su propio runtime de .NET, así que no necesitas instalar .NET aparte. Solo hacen falta unzip, tmux para mantener la consola interactiva en segundo plano y la biblioteca ICU que usa .NET:
sudo apt update
sudo apt install unzip tmux libicu74
Paso 2: Crear un usuario dedicado
Ejecuta el servidor con su propia cuenta sin privilegios, nunca como root:
sudo useradd -m -s /bin/bash terraria
sudo -iu terraria
El resto de este paso y el siguiente se ejecutan como el usuario terraria.
Paso 3: Descargar TShock
Abre la página de versiones del proyecto en GitHub, github.com/Pryaxis/TShock/releases, y copia el enlace del archivo para Linux x64 de la última versión estable. Descárgalo con ese enlace:
wget -O tshock.zip "URL_DEL_ARCHIVO_LINUX_X64"
mkdir -p ~/tshock
unzip tshock.zip -d ~/tshock
rm tshock.zip
ls ~/tshock
En las versiones recientes el ZIP contiene a su vez un archivo .tar que conserva los permisos de ejecución. Si lo ves en el listado, extráelo en el mismo directorio y bórralo:
cd ~/tshock
tar -xf TShock-*.tar
rm TShock-*.tar
ls
Deberías ver el ejecutable TShock.Server junto a sus bibliotecas y el directorio ServerPlugins. Crea también el directorio donde vivirán los mundos:
mkdir -p ~/worlds
Paso 4: Primer arranque y creación del mundo
Arranca el servidor una vez a mano para que genere el mundo y los archivos de configuración. Los argumentos son los mismos que los del servidor oficial: -world es la ruta del mundo, -autocreate su tamaño si todavía no existe (1 pequeño, 2 mediano, 3 grande) y -worldname el nombre que se le da:
cd ~/tshock
./TShock.Server -port 7777 -maxplayers 8 -world /home/terraria/worlds/CubePath.wld -autocreate 2 -worldname CubePath
Generar un mundo mediano tarda uno o dos minutos. Cuando termine, la consola muestra algo parecido a esto:
TShock Notice: To become SuperAdmin, join the game and type /setup 1234567
...
Listening on port 7777
Type 'help' for a list of commands.
Apunta el código de /setup: lo necesitarás en el paso 7. Escribe off en la consola para guardar el mundo y detener el servidor. Después de este arranque, ~/tshock/tshock/ contiene config.json, la base de datos tshock.sqlite con usuarios, grupos y baneos, y los logs.
Paso 5: Configurar TShock
Con el servidor detenido, edita la configuración principal:
nano ~/tshock/tshock/config.json
Todas las opciones están dentro del objeto Settings. Cambia los valores de estas claves y deja el resto como está:
{
"Settings": {
"ServerPassword": "tu_contraseña_servidor",
"ServerPort": 7777,
"MaxSlots": 8,
"RestApiEnabled": false
}
}
El bloque anterior solo muestra las claves que debes modificar; no sustituyas el archivo entero por él.
ServerPasswordes la contraseña para entrar al servidor. Déjala vacía ("") para un servidor abierto.ServerPortyMaxSlotsson el puerto y el número máximo de jugadores.RestApiEnabledactiva la API REST de administración en el puerto 7878. Déjala desactivada si no la vas a usar.
Comprueba que el JSON sigue siendo válido antes de continuar, ya que un error de sintaxis impide arrancar el servidor:
python3 -m json.tool ~/tshock/tshock/config.json > /dev/null && echo OK
Sal del usuario terraria:
exit
Paso 6: Ejecutar TShock con systemd y tmux
La consola de TShock es interactiva y es donde se escriben los comandos de administración. Lo más práctico es arrancarlo dentro de una sesión tmux desacoplada y dejar que systemd gestione esa sesión: así arranca con el sistema, se reinicia si falla y puedes conectarte a la consola cuando quieras.
Crea el archivo de la unidad:
sudo nano /etc/systemd/system/terraria.service
[Unit]
Description=Terraria TShock server
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
User=terraria
Group=terraria
WorkingDirectory=/home/terraria/tshock
ExecStart=/usr/bin/tmux new-session -d -s terraria /home/terraria/tshock/TShock.Server -world /home/terraria/worlds/CubePath.wld
ExecStop=/bin/sh -c '/usr/bin/tmux send-keys -t terraria off Enter; while /usr/bin/tmux has-session -t terraria 2>/dev/null; do sleep 1; done'
TimeoutStopSec=90
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
ExecStop escribe off en la consola, que guarda el mundo y apaga el servidor limpiamente, y espera a que la sesión desaparezca antes de dar el servicio por detenido. El puerto y el número de jugadores ya vienen de config.json.
Arranca el servicio y actívalo al inicio:
sudo systemctl daemon-reload
sudo systemctl enable --now terraria
sudo systemctl status terraria --no-pager
Comprueba que el servidor escucha en el puerto 7777:
sudo ss -tlnp | grep 7777
LISTEN 0 ... 0.0.0.0:7777 0.0.0.0:* users:(("TShock.Server",pid=...,fd=...))
Para abrir la consola como el usuario terraria:
sudo -u terraria tmux attach -t terraria
En la consola los comandos se escriben sin barra: help, who (jugadores conectados), save, kick <jugador> o say <mensaje>. Para salir sin detener el servidor, desacopla tmux con CTRL+B y después D. No pulses CTRL+C ni escribas off salvo que quieras pararlo.
Paso 7: Abrir el cortafuegos y crear la cuenta de administrador
Terraria usa un único puerto TCP, el 7777 por defecto. Si tienes UFW activado, permítelo:
sudo ufw allow 7777/tcp
En Terraria, elige Multijugador, después Unirse por IP, selecciona un personaje, escribe ip_de_tu_servidor, el puerto 7777 y la contraseña de config.json.
Ya dentro, abre el chat y usa el código del paso 4 para activar el modo de configuración y crear tu cuenta en el grupo owner:
/setup 1234567
/user add tu_usuario tu_contraseña_admin owner
/login tu_usuario tu_contraseña_admin
/setup
El último /setup, ya con la sesión iniciada, desactiva el modo de configuración para que el código no se pueda volver a usar. Si has perdido el código, búscalo en el log de TShock en /home/terraria/tshock/tshock/logs/.
Algunos comandos útiles desde el chat:
| Comando | Qué hace |
|---|---|
/who | Lista los jugadores conectados |
/kick <jugador> [motivo] | Expulsa a un jugador |
/ban add <jugador> [motivo] | Banea a un jugador de forma permanente |
/region set 1, /region set 2, /region define <nombre> | Marca dos esquinas y protege esa zona |
/save | Guarda el mundo |
Paso 8: Copias de seguridad
Lo que no puedes perder es el mundo (/home/terraria/worlds) y los datos de TShock (/home/terraria/tshock/tshock), que incluyen cuentas, grupos, regiones y baneos. El servidor guarda el mundo automáticamente, pero una copia en el mismo disco no te protege de un fallo de disco o de una partida corrupta.
Crea un directorio de copias y programa un archivo diario a las 05:00 para el usuario terraria, conservando 14 días:
sudo -u terraria mkdir -p /home/terraria/backups
sudo -u terraria crontab -e
0 5 * * * tar -czf /home/terraria/backups/terraria-$(date +\%F).tar.gz -C /home/terraria worlds tshock/tshock && find /home/terraria/backups -name 'terraria-*.tar.gz' -mtime +14 -delete
El % va escapado porque cron interpreta un % sin escapar como salto de línea. Ejecuta el tar una vez a mano para comprobar que funciona y copia el directorio backups a otra máquina o a un almacenamiento de objetos con regularidad.
Paso 9: Actualizar TShock
Cuando sale una versión nueva de Terraria, los clientes actualizados no pueden entrar hasta que TShock publique una versión compatible. Cuando esté disponible, detén el servicio y reemplaza los binarios conservando el directorio tshock con tus datos:
sudo systemctl stop terraria
sudo -u terraria cp -a /home/terraria/tshock/tshock /home/terraria/tshock-data-antes-de-actualizar
Después descarga y extrae la versión nueva encima de la instalación actual, como en el paso 3, y vuelve a arrancar:
sudo systemctl start terraria
sudo journalctl -u terraria -n 20
Los plugins de terceros en ServerPlugins pueden dejar de funcionar entre versiones mayores de TShock; actualízalos a la vez.
Solución de problemas
- El servicio no arranca. Revisa
sudo journalctl -u terraria -n 50y el log más reciente en/home/terraria/tshock/tshock/logs/. Unconfig.jsoncon errores de sintaxis o la falta del permiso de ejecución enTShock.Serverson las causas más habituales. - Error sobre ICU o globalización al arrancar. Falta la biblioteca ICU. Instálala con
sudo apt install libicu74. - Los jugadores reciben un error de versión al entrar. El cliente y el servidor son de versiones distintas de Terraria. Instala la versión de TShock que corresponde a la del juego.
- Nadie puede conectarse desde fuera. Asegúrate de que TCP 7777 está abierto en UFW y en cualquier cortafuegos externo, y de que
ServerPortcoincide con el puerto al que te conectas.
Conclusión
Ya tienes un servidor de Terraria con TShock en Ubuntu 24.04 que funciona como servicio systemd, con consola accesible, una cuenta de administrador y copias diarias del mundo y de sus datos. Como siguientes pasos, puedes crear grupos propios con /group add y asignarles permisos con /group addperm, proteger zonas del mapa con regiones o instalar plugins copiando sus archivos .dll en ServerPlugins.
