📡 Mi Servidor Casero: Caso de Estudio Real, Problemas y Soluciones
En artículos anteriores te hemos contado qué es un servidor casero y qué hardware elegir. Ahora toca la parte real: cómo es mi setup actual, qué servicios corro, qué problemas me he encontrado y cómo los solucioné.
Esto no es teoría de manual. Es mi experiencia con errores, parches de madrugada y lecciones aprendidas a base de cagarlas.
🖥️ Mi hardware actual (2025)
Servidor principal: Build custom AMD
- CPU: AMD Ryzen 7 5700X (8 cores, 16 threads, 65W TDP)
- Placa base: ASUS TUF Gaming B550-PLUS
- RAM: 64GB DDR4 3600MHz (4x16GB Crucial Ballistix)
- Almacenamiento:
- 1TB NVMe Gen3 (Kingston KC3000) – Sistema y VMs
- 500GB SATA SSD (Samsung 870 EVO) – Docker volumes críticos
- 2x 8TB HDD WD Red Plus – Almacenamiento masivo RAID 1
- Red: 2x Gigabit Ethernet (onboard + tarjeta PCIe)
- Caja: Fractal Design Meshify 2 (excelente airflow)
- Fuente: Corsair RM750 80+ Gold modular
- UPS: APC Back-UPS 1500VA (autonomía ~15min a carga media)
Consumo medido:
- Idle: 55-65W
- Media (con VMs activas): 80-100W
- Pico (todos los contenedores + transcoding): 150W
Coste electricidad: ~7-10€/mes (kWh a 0.15€)
Hardware secundario
- Raspberry Pi 4 (8GB): Pi-hole + Unbound (DNS local)
- Laptop viejo (i5-4300U, 8GB): Backup server con rsync automático nocturno
- Synology DS220+: NAS dedicado (backups críticos + Plex transcoding offload)
🐳 Software: Proxmox + Docker Stack
Sistema base: Proxmox VE 8.1
Proxmox me permite correr VMs (máquinas virtuales completas) y LXC containers (contenedores Linux ligeros) en un mismo host.
¿Por qué Proxmox y no solo Docker?
- Necesito VMs Windows ocasionalmente (testing, software legacy)
- Aislamiento total entre servicios críticos
- Snapshots antes de updates
- Interfaz web cómoda para gestión remota
VMs que corro actualmente
- Ubuntu Server 22.04 LTS «Production» (16GB RAM, 4 cores)
- Docker stack principal (ver servicios abajo)
- Nginx Proxy Manager (reverse proxy con SSL automático)
- Portainer (gestión Docker vía web)
- Ubuntu Server «Testing» (8GB RAM, 2 cores)
- Pruebas antes de desplegar en producción
- n8n workflows experimentales
- Windows 10 LTSC (8GB RAM, 4 cores)
- Software que no corre en Wine
- Apagada 95% del tiempo
- TrueNAS Scale (8GB RAM, 2 cores, passthrough discos)
- Gestión RAID 1 de los WD Red
- Shares SMB/NFS para backups
🚀 Servicios que corro (Docker en VM Production)
Productividad y automatización
- Nextcloud (AIO) – Nube personal (archivos, calendarios, contactos, notas)
- n8n – Automatización workflows (publicación blog, scraping, notificaciones)
- Vaultwarden – Gestor contraseñas autoalojado
- Paperless-ngx – OCR y gestión documental (facturas, contratos)
- Linkwarden – Gestor de marcadores (alternativa a Pocket)
Multimedia
- Jellyfin – Servidor multimedia (películas, series, música)
- Navidrome – Servidor música (subsonic API)
- Audiobookshelf – Audiolibros y podcasts
- Komga – Cómics y mangas
- Calibre-web – Biblioteca eBooks
Infraestructura
- Nginx Proxy Manager – Reverse proxy con SSL automático Let’s Encrypt
- Portainer – Gestión contenedores Docker
- Uptime Kuma – Monitorización servicios (alertas si algo cae)
- Dockge – Editor visual de docker-compose.yml
- Homepage – Dashboard con todos los servicios
Seguridad y red
- Wireguard – VPN para acceso remoto seguro
- Authelia – 2FA para servicios sin autenticación propia
- Fail2ban – Bloqueo IPs con intentos de acceso sospechosos
- Crowdsec – IDS colaborativo (detecta ataques)
Desarrollo y testing
- Gitea – Git server privado (repos propios)
- Code-server – VSCode en navegador (programar desde tablet)
- PostgreSQL + Redis – Bases de datos para proyectos
Otros
- FreshRSS – Lector RSS (feeds blogs/noticias)
- Stirling-PDF – Herramientas PDF (merge, split, OCR)
- Excalidraw – Diagramas y bocetos colaborativos
- Actual Budget – Gestor finanzas personales
Total contenedores Docker activos: 35-40 simultáneos
🌐 Acceso desde internet: Mi setup de red
Dominio y DNS
- Dominio: Registrado en Cloudflare (~10€/año)
- DNS: Cloudflare con proxy desactivado (nube gris) para servicios autoalojados
- Subdominios: nextcloud.midominio.com, n8n.midominio.com, etc.
Router y firewall
- Port forwarding: Solo 80 y 443 hacia Nginx Proxy Manager
- Todo el resto: Acceso vía VPN Wireguard (puerto 51820)
Seguridad en capas
- Cloudflare: Protección DDoS básica (aunque con proxy desactivado)
- Nginx Proxy Manager: SSL automático, access lists, rate limiting
- Authelia: 2FA (TOTP) para servicios sensibles
- Fail2ban + Crowdsec: Bloqueo IPs maliciosas automático
- VPN: Servicios administrativos (Portainer, Proxmox) SOLO vía VPN
⚠️ Problemas que me encontré y cómo los solucioné
Problema 1: Corrupción de contenedores Docker por apagones
Síntoma: Después de un apagón eléctrico, varios contenedores no arrancaban (bases de datos PostgreSQL corruptas, volúmenes Docker dañados).
Causa: Escrituras en disco no sincronizadas cuando se fue la luz.
Solución:
- Compré UPS (APC 1500VA) para autonomía de 15 minutos
- Configuré NUT (Network UPS Tools) para apagado automático ordenado si batería <20%
- Script que detiene contenedores Docker antes de apagar Proxmox:
# /etc/nut/upssched.conf
CMDSCRIPT /usr/local/bin/upssched-cmd
# /usr/local/bin/upssched-cmd
case $1 in
onbatt)
logger "UPS on battery"
;;
lowbatt)
logger "UPS battery low - shutting down"
pct exec 100 -- docker stop $(docker ps -q) # Detener Docker en VM ID 100
sleep 10
shutdown -h now
;;
esac
Resultado: Cero corrupciones desde entonces.
Problema 2: Rendimiento de Nextcloud pésimo
Síntoma: Subir/bajar archivos en Nextcloud era dolorosamente lento (500KB/s en red Gigabit).
Causa: Configuración PHP por defecto muy conservadora + Redis no configurado.
Solución:
- Activé Redis para caché de sesiones y archivos:
# En Nextcloud AIO ya viene con Redis, solo ajusté config.php
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'nextcloud-aio-redis',
'port' => 6379,
],
- Aumenté límites PHP en
docker-compose.yml:
environment:
- PHP_MEMORY_LIMIT=2G
- PHP_UPLOAD_LIMIT=10G
Resultado: Velocidad subió a ~80MB/s (límite de mi red 1Gbps compartida).
Problema 3: n8n workflows fallaban aleatoriamente
Síntoma: Workflows de n8n se colgaban o devolvían errores de timeout sin razón aparente.
Causa: n8n en Docker con recursos limitados (1GB RAM asignada, CPU throttling).
Solución:
- Aumenté RAM del contenedor a 4GB
- Configuré
N8N_EXECUTION_TIMEOUTa 300 (5 min en lugar de 60s) - Separé n8n en VM propia (en lugar de compartir con otros servicios)
version: "3.7"
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
environment:
- N8N_EXECUTION_TIMEOUT=300
- N8N_LOG_LEVEL=debug
deploy:
resources:
limits:
memory: 4G
reservations:
memory: 2G
Resultado: Workflows pesados (scraping con Playwright) ahora funcionan sin problemas.
Problema 4: Disco NVMe lleno constantemente
Síntoma: Proxmox avisaba de disco lleno cada 2-3 semanas.
Causa: Logs de Docker sin rotación + snapshots de VMs acumulándose + imágenes Docker viejas.
Solución:
- Configuré rotación de logs Docker:
# /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
- Script cron para limpieza automática:
#!/bin/bash
# /usr/local/bin/docker-cleanup.sh
# Borrar imágenes sin usar
docker image prune -a -f --filter "until=720h" # Más de 30 días
# Borrar volúmenes huérfanos
docker volume prune -f
# Borrar build cache
docker builder prune -a -f --filter "until=168h" # Más de 7 días
# Logs Proxmox
journalctl --vacuum-time=7d
# Crontab (cada domingo 3am)
0 3 * * 0 /usr/local/bin/docker-cleanup.sh >> /var/log/docker-cleanup.log 2>&1
- Borré snapshots viejos manualmente (ahora uso max 2 snapshots por VM)
Resultado: Espacio libre estable en ~30-40% del disco.
Problema 5: Jellyfin tartamudeaba con archivos 4K
Síntoma: Reproducir películas 4K HEVC causaba buffering constante.
Causa: Jellyfin transcodificando por CPU (muy lento).
Solución:
- Pasé transcoding a Synology DS220+ (tiene Intel Quick Sync)
- Configuré Jellyfin para usar hardware acceleration:
Dashboard → Playback → Hardware Acceleration:
- VA-API (en Synology con Docker)
- Device: /dev/dri/renderD128
- Monté
/dev/drien contenedor Docker:
services:
jellyfin:
devices:
- /dev/dri:/dev/dri
group_add:
- "989" # Grupo 'render'
Resultado: 4K HEVC → 1080p H.264 transcoding en tiempo real sin buffering.
📊 Costes reales (2025)
Hardware (inversión inicial)
- Servidor custom: ~1100€
- UPS: 150€
- Raspberry Pi 4 8GB kit: 110€
- Synology DS220+: 280€ (comprado usado)
- Discos 2x 8TB WD Red Plus: 320€
Total hardware: ~1960€ (amortizado en 3 años = 55€/mes)
Costes recurrentes
- Electricidad: ~9€/mes
- Dominio: ~10€/año (~1€/mes)
- Cloudflare: Gratis (plan free)
- Let’s Encrypt SSL: Gratis
Total mensual: ~10€/mes (sin contar amortización hardware)
Comparativa con cloud equivalente
Si contratara servicios cloud equivalentes:
- Nextcloud 1TB: ~10€/mes (Hetzner Storage Share)
- n8n Cloud Pro: ~50€/mes
- Bitwarden Premium: ~10€/año
- Plex Pass: ~5€/mes
- VPS 8GB RAM: ~20€/mes
Total cloud: ~85€/mes = 1020€/año
Mi setup se paga solo en ~2 años comparado con cloud, y luego es profit.
📈 Monitorización: Cómo sé que todo funciona
Uptime Kuma
Monitoriza todos los servicios cada 60s. Si algo cae:
- Notificación push vía Telegram Bot
- Email de alerta
Servicios monitorizados:
- Checks HTTP (Nextcloud, n8n, Jellyfin, etc.)
- Docker containers (vía Docker socket)
- Proxmox API (estado VMs)
- Pi-hole DNS
Grafana + Prometheus (intenté y abandoné)
Monté Grafana con Prometheus para métricas detalladas… pero era overkill para mis necesidades. Uptime Kuma + logs de Proxmox son suficientes para mi escala.
🔄 Backups: La parte más importante
Regla 3-2-1:
- 3 copias de datos importantes
- 2 tipos de almacenamiento diferentes
- 1 copia offsite (fuera de casa)
Mi estrategia actual
- Datos críticos (Nextcloud, Vaultwarden, Paperless):
- Backup diario automático a Synology (rsync)
- Backup semanal a disco USB externo (rotado mensualmente)
- Backup mensual cifrado a Backblaze B2 (~5€/mes por 100GB)
- Configuraciones (docker-compose, scripts):
- Git privado en Gitea
- Sincronizado a GitHub privado como backup offsite
- Multimedia (Jellyfin):
- NO hago backup (puedo re-descargar si se pierde)
- Metadata y configuración sí (Jellyfin database)
- VMs Proxmox:
- Snapshot semanal antes de updates
- Máximo 2 snapshots por VM (espacio limitado)
Script de backup crítico
#!/bin/bash
# Backup diario Nextcloud, Vaultwarden, Paperless a Synology
BACKUP_DIR="/mnt/synology/backups/$(date +%Y-%m-%d)"
mkdir -p $BACKUP_DIR
# Nextcloud (parar contenedor, backup, reiniciar)
docker exec nextcloud-aio-nextcloud php occ maintenance:mode --on
rsync -avz /var/lib/docker/volumes/nextcloud_data/ $BACKUP_DIR/nextcloud/
docker exec nextcloud-aio-nextcloud php occ maintenance:mode --off
# Vaultwarden (backup SQLite + attachments)
docker exec vaultwarden sqlite3 /data/db.sqlite3 ".backup '/data/db-backup.sqlite3'"
rsync -avz /var/lib/docker/volumes/vaultwarden_data/ $BACKUP_DIR/vaultwarden/
# Paperless (export vía comando propio)
docker exec paperless document_exporter /tmp/export
rsync -avz /var/lib/docker/volumes/paperless_export/ $BACKUP_DIR/paperless/
# Borrar backups >30 días
find /mnt/synology/backups/ -type d -mtime +30 -exec rm -rf {} \;
# Notificar éxito
curl -X POST "https://ntfy.sh/miserver" -d "Backup completado $(date)"
Ejecutado vía cron cada noche a las 3am.
💡 Lecciones aprendidas
1. Empieza simple, escala después
Mi primer server fue una Raspberry Pi 3 con Pi-hole y Nextcloud. No montes Kubernetes en el primer día.
2. Documenta TODO
Cuando algo se rompe a las 2am, tu yo del futuro agradecerá tener un README.md con comandos y configuraciones.
3. Backups automáticos o no existen
Si el backup requiere acordarte manualmente, eventualmente olvidarás hacerlo justo antes del desastre.
4. No expongas servicios innecesariamente
Portainer, Proxmox, bases de datos: SOLO accesibles vía VPN. Nunca directamente a internet.
5. Monitoriza con alertas
Si no sabes que algo está roto hasta que intentas usarlo, llegas tarde. Uptime Kuma + notificaciones push salvan vidas.
6. UPS no es opcional
Aprendí por las malas. Perdí 3 días de trabajo por una corrupción de PostgreSQL. 150€ en UPS los recuperé en paz mental.
7. Snapshots antes de updates
Siempre. Siempre. Siempre. Proxmox hace snapshots en segundos. Úsalos.
8. La comunidad es oro
Reddit (r/selfhosted, r/homelab), foros de Proxmox, Discord de servicios específicos. Alguien ya tuvo tu problema y lo solucionó.
❓ FAQs sobre mi setup
¿Por qué Proxmox y no solo Docker en Ubuntu?
Proxmox me da:
- Snapshots de VMs completas antes de updates
- Aislamiento total (una VM comprometida no afecta al resto)
- Posibilidad de correr Windows cuando lo necesito
- Interfaz web para gestión remota sin SSH
¿Cuánto tiempo dedicas al mantenimiento?
~2-3 horas al mes:
- Updates de Proxmox y VMs: 1h/mes
- Updates de contenedores Docker (Watchtower automático)
- Revisar logs de Uptime Kuma: 30min/mes
- Experimentar con servicios nuevos: 1-2h/mes (hobby)
¿Qué haría diferente si empezara de cero?
- Comprar UPS desde día 1
- Usar solo Docker Compose (evitar docker run manual)
- Documentar configuraciones en Git desde el inicio
- Empezar con 32GB RAM (amplié de 16GB a 64GB, hubiera ahorrado 32GB intermedios)
- Elegir caja con mejor acceso a discos (cambiar HDD es un coñazo en mi Meshify 2)
¿Merece la pena vs pagar cloud?
Sí si:
- Te gusta trastear y aprender
- Valoras privacidad y control total
- Usarás múltiples servicios (no solo 1-2)
- Tienes internet estable con buen upload
No si:
- Solo quieres una web/blog (usa Webempresa o similar)
- No tienes tiempo para mantenimiento ocasional
- Vives en sitio con cortes de luz frecuentes sin UPS
- Tu internet es inestable
¿Tuviste problemas con el ISP por tráfico?
No. Mi ISP (Movistar Fibra 600Mbps) no tiene límites de datos ni me han dicho nada por tráfico. Uso ~2-3TB/mes subida+bajada.
¿Cómo manejas actualizaciones sin downtime?
No las manejo. 😄 Mi servidor es para uso personal, acepto 15-30min de downtime mensual para updates.
Si necesitara alta disponibilidad, montaría cluster Proxmox con 3 nodos (migración de VMs en vivo).
¿Qué harías si se te rompe el servidor?
- Bootear laptop de backup con Ubuntu live
- Restaurar backup de Synology a disco USB
- Correr servicios críticos (Nextcloud, Vaultwarden) en Docker directo
- Ordenar componente de reemplazo (24-48h)
Con backups 3-2-1, perder hardware es molesto pero no catastrófico.
🎸 Resumen punk
Mi servidor casero NO es perfecto. Ha tenido caídas, corrupciones, y noches arreglando cosas a las 2am. Pero me ha enseñado más sobre Linux, redes, virtualización y Docker que cualquier curso online.
Y lo más importante: Controlo mis datos. Google/Microsoft no tienen mis archivos, contraseñas ni emails. Cuando mi internet falla, sigo teniendo mi nube local funcionando.
Si estás pensando en montar tu homelab: hazlo. Empieza con algo simple (Pi-hole en Raspberry Pi), aprende, rompe cosas, arregla, y escala.
La comunidad r/selfhosted está esperándote con memes, ayuda y demasiadas ideas de servicios para instalar. 🚀
