Cómo configurar un servidor dedicado de Valheim en una VPS con backups automáticos y gestión de mods
Servidores de jogos · Por Kevin Marcondes · Publicado el · Actualizado el · 9 min de lectura
¿Quieres alojar tu propio servidor de Valheim en una VPS con seguridad, backups automáticos y soporte para mods? En esta guía aprenderás a configurar un servidor dedicado de Valheim en una VPS, preparar el firewall, automatizar backups e instalar mods con BepInEx, paso a paso y con comandos listos para copiar y pegar.
1. Requisitos previos y planificación de la VPS
Necesitas una VPS Linux actualizada (Ubuntu o Debian) y un usuario con privilegios sudo. Las siguientes etapas requieren acceso root/sudo. Planifica directorios de datos, retención de backups y horarios de tareas.
Recomendaciones útiles:
- Elige un tamaño de VPS acorde al número de jugadores y mods. Consulta criterios en elegir el tamaño adecuado de VPS.
- Ten el sistema base listo. Si hace falta, sigue cómo instalar Ubuntu Server paso a paso.
- Anota el nombre del mundo, nombre del servidor, puerto y contraseña. La contraseña debe ser robusta.
- Abre únicamente los puertos necesarios. Si usas UFW, revisa cómo configurar el firewall en Ubuntu con UFW.
- Sistema: Ubuntu/Debian actualizados con sudo
- Puertos UDP 2456–2458 abiertos en el firewall y en el panel del proveedor
- Espacio en disco para mundos y backups
- Nombre del mundo, puerto y contraseña del servidor definidos
2. Instalar dependencias y SteamCMD en Linux
Instala SteamCMD y utilidades. En algunas distribuciones es necesario habilitar la arquitectura i386. Crea un usuario dedicado para aislar el servicio y el directorio del servidor.
sudo apt update
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1 unzip
# Usuário dedicado e diretório do servidor
sudo useradd -r -m -d /home/steam -s /bin/bash steam || true
sudo mkdir -p /opt/valheim
sudo chown -R steam:steam /opt/valheim
3. Descargar y organizar el servidor dedicado de Valheim
Usa SteamCMD para descargar el servidor dedicado. Luego crea un script de arranque con las opciones de Valheim y apunta el directorio de saves a una ruta separada (facilita los backups). Cambia la contraseña en el script antes de iniciar.
| Ruta | Descripción |
|---|---|
| /opt/valheim | Binarios del servidor Valheim |
| /opt/valheim/data | Mundos y saves (definido por -savedir) |
| /opt/valheim/BepInEx | Carpeta de mods y configuraciones (tras instalar BepInEx) |
| /opt/valheim/backups | Archivos .tgz de backup |
| /etc/systemd/system/valheim.service | Servicio systemd del servidor |
# Baixar/atualizar servidor dedicado (AppID 896660)
sudo -u steam /usr/games/steamcmd +login anonymous \
+force_install_dir /opt/valheim \
+app_update 896660 validate +quit
# Script de inicialização
sudo -u steam bash -lc 'cat > /opt/valheim/start.sh <<"EOF"
#!/bin/bash
set -euo pipefail
export LD_LIBRARY_PATH=/opt/valheim/linux64:$LD_LIBRARY_PATH
export SteamAppId=892970
NAME="Servidor Valheim"
WORLD="mundo1"
PASSWORD="TroqueEstaSenha"
PORT=2456
SAVEDIR="/opt/valheim/data"
mkdir -p "$SAVEDIR"
cd /opt/valheim
./valheim_server.x86_64 -name "$NAME" -port $PORT -world "$WORLD" -password "$PASSWORD" -savedir "$SAVEDIR" -public 1
EOF'
sudo chmod +x /opt/valheim/start.sh
sudo chown steam:steam /opt/valheim/start.sh
4. Crear servicio systemd para iniciar automáticamente
Crea un servicio systemd para arrancar el servidor al boot, reiniciar en fallos y facilitar la gestión. Guarda el nombre del servicio para consultar logs.
sudo bash -c 'cat > /etc/systemd/system/valheim.service <<"EOF"
[Unit]
Description=Valheim Dedicated Server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
Group=steam
WorkingDirectory=/opt/valheim
ExecStart=/opt/valheim/start.sh
Restart=on-failure
RestartSec=15
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
EOF'
sudo systemctl daemon-reload
sudo systemctl enable --now valheim
sudo systemctl status --no-pager valheim || true
5. Abrir firewall y probar conectividad
Abre los puertos estándar de Valheim (UDP 2456–2458). Luego verifica que el puerto esté escuchando y revisa los logs del servicio. Si la VPS está detrás de NAT, ajusta el reenvío en el panel del proveedor.
Cómo confirmar que funcionó: abre Valheim en el cliente y conéctate con la IP pública de la VPS y el puerto 2456. Si no aparece, prueba "Conectar a IP" manualmente.
- Si usas otro firewall distinto a UFW, replica las reglas.
- Los puertos deben ser UDP. TCP no es necesario en 2456–2458.
- Verifica que la contraseña cumpla los requisitos del juego.
# UFW (Ubuntu)
sudo ufw allow 2456:2458/udp
sudo ufw reload
# Checar porta e logs
sudo ss -lunp | grep 2456 || true
sudo journalctl -u valheim -n 50 --no-pager
6. Backups automáticos con rotación (local y opcional en nube)
Crearemos un script que comprima los mundos y elimine backups antiguos. Luego un timer systemd ejecutará el backup periódicamente. Probar la restauración es parte esencial del plan de backups. Para copia externa, añade al script una etapa con la herramienta de tu nube (ej.: AWS CLI) según tu cuenta.
- Define la retención según la frecuencia de juego.
- Almacena backups en un disco separado cuando sea posible.
- Para offsite, añade sincronización cifrada a un bucket.
# Pastas e script
sudo install -d -o steam -g steam /opt/valheim/scripts /opt/valheim/backups
sudo tee /opt/valheim/scripts/backup.sh >/dev/null <<'EOF'
#!/bin/bash
set -euo pipefail
SAVEDIR="/opt/valheim/data"
DEST="/opt/valheim/backups"
RETENTION_DAYS=7
TS=$(date +%F-%H%M)
mkdir -p "$DEST"
# Arquiva somente os dados do mundo
tar -czf "$DEST/world-$TS.tgz" -C "$SAVEDIR" .
# Remove backups antigos conforme retenção
find "$DEST" -type f -name "world-*.tgz" -mtime +$RETENTION_DAYS -delete
EOF
sudo chmod +x /opt/valheim/scripts/backup.sh
# Unidade e timer do systemd
sudo tee /etc/systemd/system/valheim-backup.service >/dev/null <<'EOF'
[Unit]
Description=Backup Valheim worlds
[Service]
Type=oneshot
User=steam
Group=steam
ExecStart=/opt/valheim/scripts/backup.sh
EOF
sudo tee /etc/systemd/system/valheim-backup.timer >/dev/null <<'EOF'
[Unit]
Description=Schedule Valheim backups
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now valheim-backup.timer
sudo systemctl list-timers --all | grep valheim-backup || true
7. Gestión de mods con BepInEx (servidor)
Para usar mods, instala el BepInEx Pack para Valheim en el servidor. Descarga el paquete en tu máquina local, sube el .zip a la VPS y extrae en la carpeta del servidor. Para modificar mods, detén el servicio antes de realizar cambios. Tras el primer inicio con BepInEx, se creará la carpeta de plugins.
Instalación general:
- Sube el ZIP de BepInEx a /tmp de la VPS.
- Extrae el contenido en el directorio del servidor.
- Inicia el servidor una vez para generar BepInEx/ y las configuraciones.
- Coloca los mods en BepInEx/plugins. Los clientes necesitan los mismos mods.
# Supondo o pacote em /tmp/BepInExPack_Valheim_x64.zip
sudo systemctl stop valheim
sudo -u steam unzip -o /tmp/BepInExPack_Valheim_x64.zip -d /opt/valheim
# Inicie uma vez para gerar BepInEx/ e configs
sudo systemctl start valheim
sleep 10
sudo systemctl stop valheim
# Exemplo: instalar um mod (ZIP contendo pastas do BepInEx)
sudo -u steam unzip -o /tmp/AlgumMod.zip -d /opt/valheim
sudo systemctl start valheim
8. Actualizaciones, logs y solución de problemas
Mantén el servidor actualizado mediante SteamCMD. Consulta los logs con journalctl y revisa los registros de BepInEx. Si algo falla, restaura desde un backup reciente. Las actualizaciones del juego y de los mods deben coordinarse para evitar incompatibilidades.
Consejos rápidos de diagnóstico:
- Puerto no aparece: confirma UFW, las reglas en el proveedor y que 2456/UDP esté en escucha.
- Caídas: revisa recursos de la VPS y mods recientes.
- Mismatch de versión: alinea versión del cliente, servidor y mods.
- Contraseña inválida: usa una contraseña fuerte sin caracteres extraños.
# Atualizar servidor dedicado
sudo -u steam /usr/games/steamcmd +login anonymous \
+force_install_dir /opt/valheim \
+app_update 896660 validate +quit
# Reiniciar e acompanhar logs
sudo systemctl restart valheim
sudo journalctl -u valheim -f
Preguntas frecuentes
¿Qué puertos necesito abrir para el servidor de Valheim?
El servidor usa por defecto los puertos UDP 2456 a 2458. Abre esos puertos en el firewall de la VPS y, si aplica, en el panel del proveedor. Si cambias el puerto en el script, ajusta el intervalo correspondiente. Usa herramientas como ss o netstat para confirmar que el puerto está en escucha.
¿Dónde están los archivos del mundo y cómo restaurar un backup?
En el ejemplo de la guía los saves están en /opt/valheim/data (definido por -savedir). Para restaurar, detén el servicio, descomprime el .tgz del backup en esa carpeta y reinicia. Es recomendable probar la restauración periódicamente en un entorno de pruebas para garantizar la integridad.
¿Cómo actualizar el servidor sin perder progreso?
Detén el servidor, ejecuta SteamCMD para actualizar y vuelve a iniciar. Haz un backup antes de cualquier actualización. Si usas mods, verifica que existan versiones compatibles con la actualización del juego. Si hay problemas, restaura el backup más reciente y prueba los mods individualmente.
¿Puedo usar mods? ¿Los jugadores deben instalarlos también?
Sí. Instala BepInEx en el servidor y coloca los mods en BepInEx/plugins. En la mayoría de los casos, los jugadores deben tener los mismos mods y versiones en el cliente. Mantén una lista clara de mods y versiones para tu grupo y actualiza de forma coordinada.
¿Cómo mover el servidor a otra VPS?
Copia la carpeta de instalación (/opt/valheim) y, sobre todo, el directorio de datos (-savedir) a la nueva VPS. Recrea el servicio systemd, abre los puertos y prueba. Si ya usas backups versionados, la migración suele reducirse a restaurar el backup y ajustar el DNS si aplica.
¿Necesitas ayuda para mantener tu servidor estable?
Puedo ayudarte con la automatización de backups, monitorización y mantenimiento continuo de tu servidor Valheim en la VPS.
Hablar sobre automatización y mantenimientoVer también
- Tutorial: implementar Canary releases con Traefik en Docker Compose usando headers y weighted routing para despliegues graduales de aplicaciones PHP
- Tutorial: configurar HAProxy con Let's Encrypt y healthchecks para balanceo de tráfico entre contenedores Docker en VPS (paso a paso)
- Tutorial práctico: implementar mTLS entre Nginx y microservicios usando smallstep CA en Docker Compose
- Tutorial: configurar cgroup v2 y systemd ResourceControl para limitar CPU, memoria e I/O de contenedores Docker en Debian