Tutoriales de VPS
Crear un servidor dedicado de Valheim en un VPS (2026): SteamCMD, puertos, Crossplay, copias de seguridad y actualizaciones automáticas
Monta desde cero un servidor dedicado de Valheim en un VPS Ubuntu con SteamCMD, cubriendo el App ID 896660, los puertos 2456–2457, Crossplay, la migración de mundos, administradores, copia y restauración, y actualizaciones automáticas.

Si quieres explorar Valheim y construir bases con amigos a largo plazo sin que un jugador tenga que dejar su PC encendida, un servidor dedicado de Valheim autoalojado es la opción más estable. El servidor permanece en línea las 24 horas y tú controlas los archivos del mundo, la contraseña de acceso, la lista de administradores, las copias de seguridad y los momentos de actualización, lo que también encaja con escuadrones repartidos en distintas zonas horarias.
Este artículo usa Ubuntu 24.04 LTS, SteamCMD, el servidor Linux oficial de Valheim y systemd como ejemplos para completar la instalación, los puertos 2456–2457, los backends de Steam y Crossplay, la migración de mundos, la lista de administradores, las copias automáticas, las actualizaciones y la resolución de problemas. El texto principal no depende de imágenes de juego de terceros; la sección de mods solo explica riesgos y no trata los mods de la comunidad como funciones oficiales.
Las preguntas frecuentes oficiales de Valheim indican que un servidor admite hasta 10 jugadores, pero no publican unas especificaciones mínimas para escenarios de VPS que garanticen una concurrencia determinada. Los siguientes son puntos de partida prácticos para comprar y hacer pruebas de carga, no una promesa de rendimiento de Iron Gate:
| Escala de uso | Punto de partida sugerido del VPS | Disco | Escenario adecuado |
|---|---|---|---|
| Servidor vanilla de 2–5 jugadores | 2–4 vCPU de alto rendimiento, 4–8 GB de RAM | 40 GB NVMe | Mundo privado, construcción ligera |
| Servidor a largo plazo de 6–10 jugadores | 4 vCPU de alto rendimiento, 8 GB de RAM | 60 GB NVMe | Bases grandes, exploración multijugador |
| Servidor con mods o varias instancias | 6+ núcleos, 12–16 GB de RAM | 80 GB+ NVMe | Varios mundos, registros y copias adicionales |
La simulación del mundo de Valheim y las bases grandes amplifican los problemas de CPU de un solo núcleo, fluctuación de red y latencia de almacenamiento. No mires solo el número de vCPU; también considera si el proveedor está sobrevendido en horas punta de la noche, la pérdida de paquetes UDP, el precio de las instantáneas, el tratamiento de DDoS y el coste de cambiar de un nodo defectuoso. Al elegir centro de datos, prioriza la cercanía a tus jugadores principales; puedes empezar por configuración de VPS para servidores de juegos y selección de línea de red.
El servidor no necesita una GPU dedicada. El disco debe alojar a la vez el servidor, el espacio temporal de actualización de SteamCMD, los archivos del mundo y la caché de copias fuera del sitio; no reduzcas la partición raíz a unos pocos GB libres solo para ahorrar unos dólares.
| Opción | Ventajas | Coste | A quién le conviene |
|---|---|---|---|
| SteamCMD + systemd | Rutas transparentes, pocas dependencias, fácil de revisar registros y restaurar | Gestión principalmente por SSH | Un solo VPS, un mundo de Valheim |
| Script Docker oficial | Puede sortear GLIBC/GLIBCXX obsoletos | Requiere entender volúmenes y permisos de contenedores | Sistemas antiguos o experiencia previa en operación de Docker |
| Pterodactyl | Panel web, cuotas, varias instancias y gestión de usuarios | Mantenimiento adicional de Panel, Wings y la base de datos | Alojar varios servidores de juegos u operación entre varias personas |
El servidor oficial de Valheim incluye docker_start_server.sh, pero Ubuntu 24.04 ya cumple los requisitos de GLIBC indicados oficialmente. Este artículo elige SteamCMD nativo + systemd para que puedas ver claramente los parámetros de arranque, los directorios de guardado y las señales de parada. Si también alojas Minecraft, CS2, Rust y Valheim juntos, puedes cambiar a la guía de despliegue del panel de servidores de juegos Pterodactyl.
Valheim tiene dos métodos de conexión:
| Backend | Método de arranque | Requisitos de red | Jugadores adecuados |
|---|---|---|---|
| Steam | No añadir -crossplay | 2456–2457 UDP debe ser accesible desde internet pública | Todos los jugadores en Steam |
| Crossplay | Añadir -crossplay | Retransmitido por PlayFab, no requiere reenvío de puertos en el router | Steam mezclado con otras plataformas |
La guía oficial indica que un servidor Crossplay se puede conectar mediante IP pública, puerto, código de unión o lista de servidores, pero no mediante la dirección de bucle local ni una IP de LAN. Un VPS no tiene NAT de banda ancha doméstica, así que el backend de Steam suele ser más directo; activa Crossplay solo cuando el equipo realmente incluya jugadores de plataformas que no sean Steam.
Este artículo despliega primero el backend de Steam y abre 2456–2457 UDP, y después explica por separado cómo cambiar a Crossplay. No mezcles a la vez varios plugins de red de origen desconocido, o complicarás los problemas de versión o conexión.
Con una cuenta de administrador con privilegios sudo, actualiza el sistema e instala SteamCMD y las dependencias de Linux indicadas en la guía oficial de Valheim:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl ca-certificates tar lib32gcc-s1 libatomic1 libpulse0 libpulse-dev ufw
Crea una cuenta valheim que no se use para iniciar sesión a diario, y un directorio fijo:
sudo adduser --disabled-password --gecos "" valheim
sudo install -d -o valheim -g valheim /opt/steamcmd
sudo install -d -o valheim -g valheim /opt/valheim
sudo install -d -o valheim -g valheim /var/lib/valheim
sudo install -d -m 750 -o root -g valheim /var/backups/valheim
El servidor no debe ejecutarse como root. Una cuenta dedicada limita los privilegios del proceso y evita confusiones de propiedad de archivos tras las actualizaciones de SteamCMD.
Cambia a la cuenta de servicio y descarga la versión Linux de SteamCMD desde la CDN de Steam de Valve:
sudo -iu valheim
cd /opt/steamcmd
curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz -o steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
./steamcmd.sh +quit
La primera ejecución actualiza SteamCMD. Confirma que el punto de entrada es ejecutable:
test -x /opt/steamcmd/steamcmd.sh
El App ID de Steam del Valheim Dedicated Server es 896660. Primero intenta instalar con inicio de sesión anónimo; si acabas de terminar otro servidor de juego de supervivencia, también puedes comparar con el tutorial de SteamCMD para servidor dedicado de Palworld para no mezclar App IDs, puertos y directorios de guardado.
/opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/valheim \
+login anonymous \
+app_update 896660 validate \
+quit
validate es adecuado para una primera instalación o para reparar archivos dañados; las actualizaciones diarias normalmente no necesitan validar todos los archivos cada vez. Si Steam devuelve actualmente falta de licencia, falta de información de la app o un fallo de descarga anónima, no escribas la contraseña de tu cuenta personal en un script. Prepara una cuenta de Steam independiente que posea Valheim, inicia sesión en SteamCMD de forma interactiva y completa la verificación de Steam Guard, y luego ejecuta app_update 896660 validate.
Comprueba el servidor Linux y el script de arranque oficial:
test -x /opt/valheim/valheim_server.x86_64
test -f /opt/valheim/start_server.sh
ls -lh /opt/valheim/valheim_server.x86_64
du -sh /opt/valheim
exit
No modifiques directamente el start_server.sh oficial. La guía oficial advierte que este archivo puede sobrescribirse durante las actualizaciones de Steam; la unidad de systemd debe guardar los parámetros personalizados por separado.
La contraseña del juego no debe escribirse en repositorios públicos ni en los comandos del artículo. Crea el archivo de entorno:
sudo install -d -m 700 -o root -g root /etc/valheim
sudo nano /etc/valheim/valheim.env
Escribe:
SERVER_NAME="My Valheim Server"
WORLD_NAME="Dedicated"
SERVER_PASSWORD="REPLACE_WITH_A_LONG_RANDOM_PASSWORD"
Genera una contraseña aleatoria:
openssl rand -base64 24
Sustituye el resultado en SERVER_PASSWORD y luego restringe los permisos:
sudo chown root:root /etc/valheim/valheim.env
sudo chmod 600 /etc/valheim/valheim.env
systemd lee este archivo como PID 1 y luego inicia el juego como el usuario valheim. Los administradores con privilegios root aún pueden ver los parámetros de arranque del servicio, así que no abras la cuenta del servidor a usuarios no confiables.
Crea la unidad:
sudo nano /etc/systemd/system/valheim.service
Escribe:
[Unit]
Description=Valheim Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=valheim
Group=valheim
WorkingDirectory=/opt/valheim
EnvironmentFile=/etc/valheim/valheim.env
Environment=SteamAppId=892970
Environment=LD_LIBRARY_PATH=/opt/valheim/linux64
ExecStart=/opt/valheim/valheim_server.x86_64 -nographics -batchmode -name ${SERVER_NAME} -port 2456 -world ${WORLD_NAME} -password ${SERVER_PASSWORD} -savedir /var/lib/valheim -public 1 -saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=120
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
Aquí se establece -savedir /var/lib/valheim de forma explícita para que los archivos del mundo no se dispersen en el directorio Unity predeterminado de la cuenta de servicio. La documentación oficial indica que -port 2456 usa tanto el puerto especificado como port+1, es decir, el 2456–2457 predeterminado; KillSignal=SIGINT hace que systemd simule el método de parada Ctrl+C recomendado oficialmente, dejando tiempo para que el mundo se guarde.
Carga e inicia:
sudo systemctl daemon-reload
sudo systemctl enable --now valheim
sudo systemctl status valheim --no-pager
sudo journalctl -u valheim -n 150 --no-pager
Cuando el registro muestra Game server connected, la documentación oficial considera que el servicio ya puede aceptar conexiones. Crear un mundo por primera vez puede tardar un poco; no fuerces la terminación del proceso durante la inicialización.
Mantén abierta la sesión SSH actual, confirma primero que SSH está permitido y luego abre los puertos predeterminados de Valheim:
sudo ufw allow OpenSSH
sudo ufw allow 2456:2457/udp
sudo ufw status numbered
sudo ufw enable
El grupo de seguridad del proveedor de nube también debe añadir el mismo rango de puertos UDP. Comprueba en qué está escuchando realmente el servicio:
sudo ss -lunp | grep -E ':2456|:2457'
El error más común es cambiar solo UFW y olvidar el grupo de seguridad de la nube, o escribir la regla por error solo como TCP. Para una sola instancia del backend de Steam, abre primero 2456–2457 UDP; no abras todo un rango de puertos altos sin justificación.
Si el dominio valheim.example.com apunta al VPS, basta con un registro A normal. El proxy HTTP de nube naranja de Cloudflare no puede hacer proxy del tráfico UDP del juego Valheim; configúralo como DNS only, o haz que los jugadores usen directamente la IP pública.
En la pantalla de unirse a partida de Valheim, añade un servidor e introduce:
203.0.113.20:2456
Sustituye la dirección de ejemplo por la IPv4 pública del VPS. La forma con dominio es:
valheim.example.com:2456
La lista de servidores puede tardar en actualizarse. Si no lo encuentras, prioriza la unión directa y revisa al mismo tiempo:
sudo systemctl is-active valheim
sudo journalctl -u valheim -n 200 --no-pager
sudo ss -lunp | grep -E ':2456|:2457'
sudo ufw status numbered
Cuando el equipo incluya jugadores de plataformas que no sean Steam, añade esto al final de ExecStart:
-crossplay
Recarga y reinicia:
sudo systemctl daemon-reload
sudo systemctl restart valheim
sudo journalctl -u valheim -n 200 --no-pager
La documentación oficial indica que Crossplay usa la retransmisión de PlayFab, no requiere reenvío de puertos y admite conexión mediante IP pública, puerto, código de unión o lista de servidores. Sin embargo, Crossplay no puede conectarse mediante la dirección de bucle local ni una IP de LAN; al probar, usa un cliente externo y la información de unión que se muestra oficialmente.
Si todos son jugadores de Steam, no actives Crossplay a ciegas por "quizá sea más rápido". Los dos backends difieren en descubrimiento, conexión y comportamiento ante fallos; fija una opción y completa la aceptación primero, y luego considera cambiar.
La documentación oficial define tres archivos de permisos:
adminlist.txt: administradores.bannedlist.txt: jugadores prohibidos de unirse.permittedlist.txt: jugadores permitidos para unirse; una vez escrita la lista, se rechaza a los demás.
Como este artículo usa -savedir /var/lib/valheim, primero localiza los archivos realmente generados:
sudo find /var/lib/valheim -maxdepth 2 -type f \
\( -name 'adminlist.txt' -o -name 'bannedlist.txt' -o -name 'permittedlist.txt' \) \
-print
Introduce un Platform User ID por línea con el formato [Platform]_[User ID], distinguiendo mayúsculas y minúsculas. Este ID se puede obtener del registro del servidor o del panel F2 dentro del juego. No adivines IDs a partir de apodos y no trates permittedlist.txt como un archivo de notas normal, o rechazarás accidentalmente a todos los jugadores no listados.
Tras los cambios, reinicia y revisa los registros:
sudo systemctl restart valheim
sudo journalctl -u valheim -n 120 --no-pager
Un mundo suele constar de un archivo .db y otro .fwl con el mismo nombre. Antes de migrar, primero cambia las partidas guardadas en la nube a locales en el PC original y sal del juego, luego copia los archivos en pareja; no subas solo uno de ellos.
En el VPS, detén el servicio e inspecciona la estructura de guardado actual:
sudo systemctl stop valheim
sudo find /var/lib/valheim -maxdepth 3 -type f | sort
Sube los archivos del mundo existente al directorio worlds_local generado por el servidor; supongamos que el mundo se llama MyWorld:
sudo install -d -o valheim -g valheim /var/lib/valheim/worlds_local
sudo cp /tmp/MyWorld.db /var/lib/valheim/worlds_local/MyWorld.db
sudo cp /tmp/MyWorld.fwl /var/lib/valheim/worlds_local/MyWorld.fwl
sudo chown valheim:valheim /var/lib/valheim/worlds_local/MyWorld.db
sudo chown valheim:valheim /var/lib/valheim/worlds_local/MyWorld.fwl
Cambia WORLD_NAME en /etc/valheim/valheim.env por MyWorld, luego inicia y verifica:
sudo systemctl start valheim
sudo journalctl -u valheim -n 200 --no-pager
Si el servidor genera un mundo nuevo, normalmente se debe a que los archivos se colocaron en el directorio equivocado, el nombre del archivo no coincide en mayúsculas y minúsculas, .db y .fwl no están emparejados, o WORLD_NAME no coincide con el nombre del archivo. Conserva la copia original y solo limpia los archivos temporales de subida después de confirmar que las construcciones del mundo y los puntos de aparición de los personajes son correctos.
Los parámetros de arranque de systemd de este artículo ya incluyen:
-saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200
Los significados oficiales son los siguientes:
- Guardar el mundo cada 1800 segundos.
- Conservar 4 copias automáticas.
- El primer intervalo de copia de ciclo corto es de 7200 segundos.
- Los intervalos de copia de ciclo largo posteriores son de 43200 segundos.
Estas copias automáticas pueden cubrir errores recientes, pero no sustituyen a las copias fuera de la máquina. Si el disco falla, la cuenta se ve comprometida o se elimina todo el VPS, las copias en el mismo disco se pierden con él.
Primero haz una copia manual coherente:
sudo systemctl stop valheim
sudo tar -C /var/lib/valheim -czf \
"/var/backups/valheim/valheim-save-$(date -u +%Y%m%dT%H%M%SZ).tar.gz" \
.
sudo systemctl start valheim
sudo systemctl is-active valheim
Inspecciona el contenido del archivo:
sudo ls -lh /var/backups/valheim
sudo tar -tzf /var/backups/valheim/valheim-save-YYYYMMDDTHHMMSSZ.tar.gz | head -n 80
Sustituye el nombre de archivo de ejemplo por el real. Sincroniza al menos una copia a otra máquina o a almacenamiento de objetos, y establece un periodo de retención. Para un plan fuera del sitio más completo, consulta la guía de copias de seguridad y simulacros de restauración en VPS.
Detén el servicio antes de restaurar y conserva primero el directorio de guardado actual:
sudo systemctl stop valheim
sudo tar -tzf /var/backups/valheim/valheim-save-YYYYMMDDTHHMMSSZ.tar.gz | head -n 80
sudo mv /var/lib/valheim \
"/var/lib/valheim.before-restore-$(date -u +%Y%m%dT%H%M%SZ)"
sudo install -d -o valheim -g valheim /var/lib/valheim
sudo tar -C /var/lib/valheim -xzf \
/var/backups/valheim/valheim-save-YYYYMMDDTHHMMSSZ.tar.gz
sudo chown -R valheim:valheim /var/lib/valheim
sudo systemctl start valheim
Verifica los registros, el nombre del mundo, las construcciones y las listas de permisos:
sudo systemctl status valheim --no-pager
sudo journalctl -u valheim -n 200 --no-pager
sudo find /var/lib/valheim -maxdepth 3 -type f | sort
La restauración solo se completa tras confirmar que las conexiones multijugador y el progreso del mundo son correctos. Conserva valheim.before-restore-* hasta la aceptación y no borres de inmediato la única copia de reversión.
Cuando las versiones del cliente y del servidor no coinciden, los jugadores ven incompatible version. Crea un script de mantenimiento ejecutable solo por root:
sudo nano /usr/local/sbin/update-valheim-server
Escribe:
#!/usr/bin/env bash
set -euo pipefail
backup_dir=/var/backups/valheim
stamp=$(date -u +%Y%m%dT%H%M%SZ)
was_active=0
install -d -m 750 -o root -g valheim "$backup_dir"
if systemctl is-active --quiet valheim; then
was_active=1
systemctl stop valheim
fi
restart_service() {
if [ "$was_active" -eq 1 ]; then
systemctl start valheim
fi
}
trap restart_service EXIT
tar -C /var/lib/valheim -czf \
"$backup_dir/valheim-before-update-$stamp.tar.gz" \
.
sudo -u valheim /opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/valheim \
+login anonymous \
+app_update 896660 \
+quit
Establece permisos y prueba en una ventana de mantenimiento:
sudo chown root:root /usr/local/sbin/update-valheim-server
sudo chmod 750 /usr/local/sbin/update-valheim-server
sudo /usr/local/sbin/update-valheim-server
sudo systemctl is-active valheim
sudo journalctl -u valheim -n 150 --no-pager
El script detiene primero el servicio y empaqueta todo el directorio de guardado; si SteamCMD falla, el manejador de salida aún intenta restaurar el estado original del servicio. Si el inicio de sesión anónimo no está disponible, no codifiques la contraseña de Steam en el script; actualiza de forma interactiva en una ventana de mantenimiento, o usa un esquema de cuenta dedicada con aislamiento de credenciales más estricto.
Activa el timer solo después de confirmar que SteamCMD anónimo funciona a largo plazo y que los jugadores aceptan una ventana de mantenimiento fija. Crea el servicio:
sudo nano /etc/systemd/system/valheim-update.service
[Unit]
Description=Update Valheim Dedicated Server
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/update-valheim-server
Crea el timer:
sudo nano /etc/systemd/system/valheim-update.timer
[Unit]
Description=Daily Valheim update maintenance window
[Timer]
OnCalendar=*-*-* 05:40:00
RandomizedDelaySec=10m
Persistent=true
[Install]
WantedBy=timers.target
Actívalo y consulta la próxima ejecución:
sudo systemctl daemon-reload
sudo systemctl enable --now valheim-update.timer
systemctl list-timers valheim-update.timer
Antes de actualizaciones grandes, lo más seguro es avisar a los jugadores, hacer copia manual, actualizar el servidor y luego usar un cliente de prueba para confirmar que se puede entrar al mundo. Las tareas programadas no deben detener el servidor de repente durante una pelea de jefe o una construcción multijugador.
Las preguntas frecuentes oficiales de Valheim indican que el contenido fijo, como nuevo terreno, edificios o mazmorras, normalmente solo aparece en zonas previamente inexploradas; las zonas exploradas también incluyen un radio de unos 500 metros alrededor de las huellas de los jugadores. Antes de una versión importante deberías:
- Detener el servicio y hacer una copia fuera del sitio.
- Leer las notas del parche oficiales y confirmar las versiones del servidor y del cliente.
- Tras actualizar, que un administrador entre primero a probar.
- Para experimentar contenido nuevo, viaja a zonas inexploradas o evalúa si crear un mundo nuevo.
No borres directamente .db, .fwl ni los archivos de copia solo para refrescar contenido nuevo. Reiniciar el mundo es una decisión de negocio irreversible y debe confirmarla todo el grupo de jugadores.
Las preguntas frecuentes oficiales de Valheim indican explícitamente que los mods no tienen soporte oficial. Al ejecutar BepInEx u otros mods de la comunidad, registra además las versiones de los mods, los archivos de configuración y las fuentes de instalación, y desactiva las actualizaciones automáticas antes de las actualizaciones del juego.
Si aparecen incompatibilidades de versión, personajes que no pueden entrar o anomalías en el mundo, prueba primero el servidor vanilla sobre una copia de seguridad. No dejes que el script de actualización sobrescriba automáticamente los archivos de mods, ni trates ensamblados de servidor no verificados como binarios oficiales.
Primero registra datos reales de horas punta:
free -h
df -h /opt/valheim /var/lib/valheim /var/backups/valheim
uptime
ps -C valheim_server -o pid,%cpu,%mem,rss,etime,cmd
sudo journalctl -u valheim --since "30 minutes ago" --no-pager
Céntrate en:
- Saturación sostenida de CPU de un solo núcleo cerca de bases grandes: prioriza un nodo con mejor rendimiento de un solo núcleo y menor sobreventa.
- Latencia y reversiones durante la exploración multijugador: revisa la pérdida de paquetes UDP, la latencia de disco y los registros de guardado.
- Memoria que crece continuamente o OOM: desactiva primero los mods y luego evalúa ampliar.
- Mundo y copias que crecen rápido: revisa el directorio de guardado, la cantidad retenida y la estrategia de sincronización fuera del sitio.
- Lag en horas punta de la noche con normalidad de día: más probablemente sobreventa de vecinos o congestión de línea, no solo especificaciones insuficientes.
No juzgues solo por la CPU media del panel. El lag de Valheim suele ocurrir en bases concretas, en el momento de guardar o cuando los jugadores exploran por separado; represéntalo con marcas de tiempo, registros y ubicaciones de los jugadores.
Revisa el estado, la unidad completa y los registros:
sudo systemctl status valheim --no-pager
sudo journalctl -u valheim -n 250 --no-pager
sudo systemctl cat valheim
Comprueba si existen libatomic1, libpulse0 y libpulse-dev, si LD_LIBRARY_PATH apunta a /opt/valheim/linux64, y si la cuenta de servicio es propietaria de /opt/valheim y /var/lib/valheim.
Confirma el binario, la red y el estado del servicio de Steam:
test -x /opt/valheim/valheim_server.x86_64
sudo -u valheim test -w /var/lib/valheim
sudo journalctl -u valheim -n 250 --no-pager | grep -iE 'error|steam|connected|failed'
En el primer arranque, espera a la generación del mundo. Si el registro muestra bibliotecas faltantes, no reinicies repetidamente; instala las dependencias por los nombres faltantes. Si el backend de Steam no está disponible temporalmente, conserva los archivos del mundo y espera a que el servicio se recupere.
Revisa en orden el servicio, la escucha, el firewall y el grupo de seguridad de la nube:
sudo systemctl is-active valheim
sudo ss -lunp | grep -E ':2456|:2457'
sudo ufw status numbered
sudo journalctl -u valheim -n 200 --no-pager
Usa la IP pública para conexión directa y descartar DNS. Para el backend de Steam, confirma que 2456–2457 UDP están abiertos; para Crossplay, revisa si se usó por error una dirección interna o de bucle local, y los registros de conexión de PlayFab.
Detén primero el servicio y actualiza el App ID 896660:
sudo /usr/local/sbin/update-valheim-server
sudo systemctl is-active valheim
sudo journalctl -u valheim -n 200 --no-pager
Confirma que cliente y servidor están en la misma rama estable o de pruebas. En servidores con mods, verifica también BepInEx y la versión de cada mod; no resuelvas la incompatibilidad de versiones borrando archivos del mundo.
Detén el servicio y revisa el nombre del mundo y los archivos:
sudo systemctl stop valheim
sudo grep '^WORLD_NAME=' /etc/valheim/valheim.env
sudo find /var/lib/valheim -maxdepth 3 -type f \
\( -name '*.db' -o -name '*.fwl' \) -print
Asegúrate de que los nombres base de WORLD_NAME y .db/.fwl sean exactamente iguales, de que los archivos estén en el directorio de guardado que realmente usa el servicio y de que sean propiedad de valheim:valheim. Tras corregirlo, haz copia de los conjuntos de archivos nuevo y antiguo antes de arrancar para verificar.
El servicio debe reiniciarse tras cambiar el archivo de entorno:
sudo systemctl restart valheim
sudo systemctl show valheim -p EnvironmentFiles
sudo journalctl -u valheim -n 120 --no-pager
Al modificar la propia unidad de systemd, ejecuta también primero systemctl daemon-reload. No definas el mismo parámetro repetidamente en varios scripts de arranque, unidades y paneles, o será difícil saber qué valor acaba aplicándose.
- SteamCMD instaló el Valheim Dedicated Server App ID 896660.
- El servicio se ejecuta con el usuario dedicado
valheim, no con root. -
systemctl is-active valheimdevuelveactive. - El registro muestra
Game server connected. - El 2456–2457 UDP del backend de Steam está permitido tanto en UFW como en el grupo de seguridad de la nube.
- Crossplay solo se activa cuando realmente hay jugadores multiplataforma, y se prueba con un cliente externo.
-
/etc/valheim/valheim.envtiene permisos 600 y propietario root. - Los archivos
.dby.fwldel mundo existen en pareja, con nombres que coinciden conWORLD_NAME. - Administradores y lista blanca contienen Platform User IDs que distinguen mayúsculas y minúsculas.
- Los parámetros oficiales de guardado automático están en vigor.
- Antes de actualizar se detiene el servicio y se hace copia, y se conserva al menos una fuera de la máquina.
- Se ha realizado realmente una restauración del mundo, verificando construcciones, puntos de aparición de personajes y listas de permisos.
- Los servidores con mods tienen desactivadas las actualizaciones automáticas no probadas.
Ejecutar Valheim de forma estable en un VPS no consiste solo en arrancar el servidor; la clave es fijar el directorio de guardado, distinguir correctamente los backends de Steam y Crossplay, abrir 2456–2457 UDP, usar SIGINT para un apagado ordenado e incluir copias del mundo y simulacros de restauración en el proceso de actualización.
Un mundo vanilla de 2–5 jugadores puede empezar con 2–4 vCPU de alto rendimiento y 4–8 GB de RAM, mientras que acercarse a 10 jugadores, bases grandes o servidores con mods debe escalar gradualmente según los picos reales de CPU, la memoria y la fluctuación de red. Antes de lanzar, completar una prueba de conexión externa, migración de mundo, actualización de versión y restauración reduce las reversiones y el tiempo de inactividad más que añadir puertos o automatización a ciegas.