Valheim incluye un servidor dedicado gratuito para Linux que se descarga de forma anónima con SteamCMD, el cliente de Steam para línea de comandos. Tener tu propio servidor mantiene el mundo en línea aunque el anfitrión se desconecte y te da control total sobre contraseñas, administradores y copias de seguridad. En este tutorial instalarás el servidor de Valheim en Ubuntu 24.04, lo ejecutarás como servicio systemd con su propio usuario, abrirás los puertos necesarios y programarás copias del mundo.

Requisitos previos

Para seguir esta guía necesitas:

  • Un servidor con Ubuntu 24.04 LTS (x86_64), por ejemplo un VPS de CubePath. Calcula 2 núcleos de CPU y 4 GB de RAM para un grupo pequeño; los mundos grandes o muy construidos consumen más memoria.
  • Unos 5 GB libres en disco para los archivos del servidor y las partidas.
  • Un usuario no root con privilegios sudo.
  • Una copia de Valheim en Steam en el ordenador desde el que vas a jugar.

Paso 1: Instalar SteamCMD

SteamCMD está en el repositorio multiverse de Ubuntu y necesita bibliotecas de 32 bits, así que activa ambos primero:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update

Instala el paquete. Durante la instalación se te pedirá aceptar la licencia de Steam; selecciona I AGREE para continuar:

sudo apt install steamcmd

El binario queda instalado en /usr/games/steamcmd. Compruébalo:

ls -l /usr/games/steamcmd

Paso 2: Crear un usuario dedicado

Un servidor de juegos nunca debe ejecutarse como root. Crea un usuario normal llamado steam con su propio directorio personal, donde estarán los archivos del servidor y las partidas:

sudo useradd -m -s /bin/bash steam

Cambia a ese usuario para el siguiente paso:

sudo -iu steam

Paso 3: Descargar el servidor de Valheim

El servidor dedicado de Valheim es la aplicación de Steam 896660 y se puede descargar sin cuenta de Steam. Ten en cuenta que +force_install_dir debe ir antes de +login:

/usr/games/steamcmd +force_install_dir /home/steam/valheim +login anonymous +app_update 896660 validate +quit

La primera ejecución también actualiza SteamCMD, por lo que tarda unos minutos. Termina con:

Success! App '896660' fully installed.

Comprueba que el binario del servidor existe y vuelve a tu usuario con sudo:

ls /home/steam/valheim/valheim_server.x86_64
exit

Paso 4: Crear el servicio systemd

Valheim trae un script de ejemplo, start_server.sh, pero una unidad systemd es mejor opción: arranca el servidor al iniciar el sistema, lo reinicia si se cae, envía los logs al journal y puede actualizar el juego antes de cada arranque.

Decide los valores que vas a usar:

  • Nombre del servidor (-name): el que verán los jugadores en la lista de servidores.
  • Nombre del mundo (-world): el nombre del archivo de partida. En el primer arranque se crea un mundo nuevo con ese nombre.
  • Contraseña (-password): al menos 5 caracteres y no puede estar contenida en el nombre del servidor, o el servidor se negará a arrancar.

Crea el archivo de la unidad:

sudo nano /etc/systemd/system/valheim.service
[Unit]
Description=Valheim dedicated server
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/valheim
Environment=LD_LIBRARY_PATH=/home/steam/valheim/linux64
Environment=SteamAppId=892970
ExecStartPre=-/usr/games/steamcmd +force_install_dir /home/steam/valheim +login anonymous +app_update 896660 +quit
ExecStart=/home/steam/valheim/valheim_server.x86_64 -nographics -batchmode -name "CubePath Vikings" -port 2456 -world "Midgard" -password "tu_contraseña_servidor" -public 1 -savedir /home/steam/valheim-data
KillSignal=SIGINT
TimeoutStartSec=600
TimeoutStopSec=60
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Sustituye tu_contraseña_servidor por la contraseña que elijas. Qué hacen las líneas menos evidentes:

  • SteamAppId=892970 es el ID del juego Valheim, que el servidor necesita para registrarse en Steam (la descarga del servidor en sí es 896660).
  • ExecStartPre busca actualizaciones del juego en cada arranque, así que tras un parche de Valheim basta con reiniciar. El - inicial permite arrancar igualmente si Steam no responde, y TimeoutStartSec da tiempo a que termine la actualización.
  • KillSignal=SIGINT hace que systemctl stop apague el servidor igual que CTRL+C, que guarda el mundo antes de salir.
  • -public 1 muestra el servidor en el navegador de la comunidad del juego. Usa -public 0 para ocultarlo y conectar solo por IP.
  • -savedir guarda los mundos, la lista de administradores y la de baneos en /home/steam/valheim-data en lugar de un directorio oculto.

Si van a entrar jugadores de Xbox o de la versión de Microsoft Store, añade -crossplay al final de la línea ExecStart.

Recarga systemd y arranca el servidor:

sudo systemctl daemon-reload
sudo systemctl enable --now valheim

Paso 5: Comprobar que el servidor funciona

Sigue el log. El mundo se genera o se carga y, tras uno o dos minutos, deberías ver que el servidor se registra en Steam:

sudo journalctl -u valheim -f
... Game server connected

Pulsa CTRL+C para dejar de seguir el log. El estado del servicio debe ser active (running):

sudo systemctl status valheim --no-pager

Comprueba que el servidor escucha en sus puertos UDP:

sudo ss -ulpn | grep valheim
UNCONN 0 0 0.0.0.0:2456 0.0.0.0:* users:(("valheim_server.",pid=4121,fd=...))
UNCONN 0 0 0.0.0.0:2457 0.0.0.0:* users:(("valheim_server.",pid=4121,fd=...))

Paso 6: Abrir el cortafuegos

Valheim usa el puerto indicado en -port (2456) y el siguiente (2457), ambos UDP. Si tienes UFW activado, permítelos:

sudo ufw allow 2456:2457/udp
sudo ufw status

Ahora conéctate desde el juego. En Valheim, elige Unirse a partida, pulsa Unirse por IP, escribe ip_de_tu_servidor:2456 e introduce la contraseña. Si usaste -public 1, el servidor también aparecerá en la pestaña Comunidad al cabo de unos minutos.

Paso 7: Añadir administradores

Los administradores pueden expulsar y banear jugadores y usar los comandos de consola del juego. El servidor lee la lista de administradores de adminlist.txt en el directorio de partidas, con un SteamID64 por línea. Puedes ver el SteamID64 de un jugador en el panel de conexión del juego (F2) o en la URL de su perfil de Steam.

sudo -u steam nano /home/steam/valheim-data/adminlist.txt
76561198000000000

Reinicia el servidor para aplicar el cambio:

sudo systemctl restart valheim

En el mismo directorio, bannedlist.txt y permittedlist.txt (lista blanca, cuando no está vacía) usan el mismo formato.

Paso 8: Hacer copias de seguridad del mundo

Un mundo de Valheim son dos archivos en /home/steam/valheim-data/worlds_local/: Midgard.db contiene los datos del mundo y Midgard.fwl sus metadatos. Valheim guarda sus propias copias rotativas ahí, pero están en el mismo disco, así que conviene tener copias en otro sitio.

Crea un directorio de copias y añade una tarea cron para el usuario steam que archive los mundos cada noche a las 05:00 y borre los archivos de más de 14 días:

sudo -u steam mkdir -p /home/steam/backups
sudo -u steam crontab -e
0 5 * * * tar -czf /home/steam/backups/valheim-$(date +\%F).tar.gz -C /home/steam/valheim-data worlds_local && find /home/steam/backups -name 'valheim-*.tar.gz' -mtime +14 -delete

Los % van escapados porque cron interpreta un % sin escapar como salto de línea. Ejecuta el mismo tar una vez a mano para comprobar que funciona y copia el directorio backups fuera del servidor con regularidad (por ejemplo con rsync a otra máquina o a un almacenamiento de objetos).

Para restaurar, detén el servidor, extrae el archivo en /home/steam/valheim-data y vuelve a arrancarlo:

sudo systemctl stop valheim
sudo -u steam tar -xzf /home/steam/backups/valheim-2026-09-25.tar.gz -C /home/steam/valheim-data
sudo systemctl start valheim

Solución de problemas

  • El servicio se detiene justo después de arrancar. Revisa sudo journalctl -u valheim -n 50. La causa más habitual es una contraseña de menos de 5 caracteres o que aparece dentro del nombre del servidor.
  • El servidor funciona pero nadie puede conectarse. Asegúrate de que UDP 2456 y 2457 están permitidos en UFW y en cualquier cortafuegos externo, y de que te conectas al puerto 2456, no al 2457.
  • El servidor no aparece en la lista de la comunidad. El listado puede tardar varios minutos y a veces falla. Conectar por IP funciona siempre.
  • Los jugadores ven un error de versión incompatible. Se actualizó el cliente pero no el servidor. Ejecuta sudo systemctl restart valheim; la línea ExecStartPre descarga la actualización.

Conclusión

Tu servidor dedicado de Valheim ya funciona en Ubuntu 24.04 como servicio systemd, se actualiza al reiniciar y guarda copias nocturnas del mundo. Como siguientes pasos, puedes subir un mundo de un solo jugador copiando sus archivos .db y .fwl a worlds_local y poniendo su nombre en -world, limitar el acceso con permittedlist.txt o instalar BepInEx si tu grupo quiere mods en el servidor.