Cómo autoalojar Beszel en un VPS (Guía completa)
Beszel es un panel de monitoreo autoalojado que te proporciona visibilidad en tiempo real sobre CPU, RAM, disco y métricas de red en múltiples servidores. Es extremadamente ligero (funciona con 512 MB de RAM), usa SQLite para almacenamiento y puede desplegarse en minutos con Docker. Esta guía cubre todo, desde la selección del VPS hasta la monitorización de tu primer servidor remoto.
Requisitos previos
Antes de comenzar, necesitas:
- Un VPS — 1 GB RAM, 1 vCPU, 10 GB de almacenamiento mínimo. Proveedores recomendados:
- Hetzner Cloud — 4,15 EUR/mes, 4 GB RAM, 40 GB NVMe (mejor relación calidad/precio UE)
- Contabo VPS — 5,99 EUR/mes, 8 GB RAM, 200 GB NVMe (mejor almacenamiento)
- DigitalOcean — 6 USD/mes, 1 GB RAM (amigable para principiantes)
- Ubuntu 22.04 o Debian 12 instalado en el VPS.
- Acceso SSH al VPS.
- Docker (o descarga directa del binario de Beszel).
- Puerto 8090 abierto en tu firewall.
Paso 1: Conectarse al VPS
ssh root@ip-de-tu-vps
Actualizar paquetes:
apt update && apt upgrade -y
Paso 2: Instalar Docker
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
Verificar la instalación:
docker --version
Paso 3: Abrir el puerto 8090 en el firewall
Con UFW en Ubuntu:
ufw allow 8090/tcp
ufw reload
Paso 4: Desplegar el hub Beszel
Opción A: Docker Run (inicio rápido)
docker run -d \
--name beszel \
--restart unless-stopped \
-p 8090:8090 \
-v beszel_data:/beszel_data \
henrygd/beszel
Opción B: Docker Compose (recomendado)
Crear un directorio del proyecto:
mkdir -p /opt/beszel && cd /opt/beszel
Crear docker-compose.yml:
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
ports:
- "8090:8090"
volumes:
- beszel_data:/beszel_data
volumes:
beszel_data:
Iniciar el servicio:
docker compose up -d
Verificar el estado:
docker compose ps
docker compose logs -f
Opción C: Instalación por binario (sin Docker)
Descargar la última versión para tu arquitectura:
curl -sL https://api.github.com/repos/henrygd/beszel/releases/latest \
| grep "browser_download_url.*linux_amd64" \
| cut -d '"' -f 4 \
| xargs curl -Lo /usr/local/bin/beszel
chmod +x /usr/local/bin/beszel
Crear un servicio systemd en /etc/systemd/system/beszel.service:
[Unit]
Description=Beszel monitoring hub
After=network.target
[Service]
ExecStart=/usr/local/bin/beszel serve
WorkingDirectory=/var/lib/beszel
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Activar e iniciar:
mkdir -p /var/lib/beszel
systemctl daemon-reload
systemctl enable --now beszel
Paso 5: Primer inicio de sesión
Abre tu navegador y navega a:
http://ip-de-tu-vps:8090
En el primer inicio se te pedirá crear una cuenta de administrador. Usa una contraseña segura.
Paso 6: Añadir servidores para monitorizar
Beszel usa un agente ligero instalado en cada servidor a monitorizar.
6.1 Generar una clave de agente
En el panel de Beszel:
- Hacer clic en Añadir servidor.
- Introducir un nombre y el nombre de host o IP del servidor.
- Copiar la Clave de agente generada — la necesitarás en el servidor monitorizado.
6.2 Instalar el agente en el servidor destino
Conectarse por SSH al servidor a monitorizar y ejecutar:
Docker:
docker run -d \
--name beszel-agent \
--restart unless-stopped \
--network host \
-e KEY="<pega-tu-clave-de-agente-aquí>" \
henrygd/beszel-agent
Binario:
curl -sL https://api.github.com/repos/henrygd/beszel/releases/latest \
| grep "browser_download_url.*beszel-agent.*linux_amd64" \
| cut -d '"' -f 4 \
| xargs curl -Lo /usr/local/bin/beszel-agent
chmod +x /usr/local/bin/beszel-agent
Crear /etc/systemd/system/beszel-agent.service:
[Unit]
Description=Beszel monitoring agent
After=network.target
[Service]
ExecStart=/usr/local/bin/beszel-agent
Environment=KEY=<tu-clave-de-agente>
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Activar e iniciar:
systemctl daemon-reload
systemctl enable --now beszel-agent
En pocos segundos el servidor debería aparecer como Conectado en el panel de Beszel.
Paso 7: (Opcional) Poner Beszel detrás de un proxy inverso
Para acceso HTTPS, configura Caddy o Nginx delante de Beszel.
Ejemplo con Caddy (/etc/caddy/Caddyfile):
monitor.tudominio.es {
reverse_proxy localhost:8090
}
Ejemplo con Nginx:
server {
listen 443 ssl;
server_name monitor.tudominio.es;
ssl_certificate /etc/letsencrypt/live/monitor.tudominio.es/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.tudominio.es/privkey.pem;
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Resolución de problemas
| Problema | Solución |
|---|---|
| Panel inaccesible | Verificar firewall (ufw status), confirmar que el contenedor está activo (docker ps) |
| El agente no se conecta | Verificar la variable de entorno KEY, revisar logs del agente (docker logs beszel-agent) |
| Alto uso de disco | Reducir el intervalo de retención en la configuración de Beszel |
| El contenedor no inicia | Revisar logs: docker compose logs beszel |
Preguntas frecuentes
¿Cómo hago copia de seguridad de los datos de Beszel?
Todo el estado de Beszel está en el volumen Docker beszel_data. Crear una copia de seguridad de la base de datos:
docker exec beszel sqlite3 /beszel_data/beszel.db ".backup /beszel_data/beszel.db.bak"
Luego copiar el archivo de copia de seguridad fuera del servidor con rsync o scp.
¿Puedo monitorizar servidores Windows con Beszel?
El agente Beszel admite Linux, macOS y Windows. Instala el binario de Windows y regístralo como servicio de Windows.
¿Beszel requiere conexión a internet?
No. Beszel es completamente autónomo. El hub y los agentes se comunican solo entre sí, sin llamadas externas. Funciona perfectamente en una red privada o VPN.