Problema
Muchos entusiastas de homelab empiezan con Raspberry Pi por su bajo costo y facilidad de despliegue. Con el tiempo, la carga de trabajo crece: más contenedores Docker, servicios que demandan CPU/GPU, y la necesidad de aislar tráfico mediante VLAN o DMZ. En ese punto, la arquitectura ARM se vuelve limitante y la migración a servidores x86 con Proxmox parece la solución natural. El reto consiste en trasladar datos, configuraciones y redes sin interrumpir servicios críticos, manteniendo la separación de tráfico (admin, DMZ, usuarios) y aprovechando hardware de 10 GbE.
Causa
Los cuellos de botella típicos al pasar de Pi a x86 son:
- Diferencias de arquitectura – imágenes Docker basadas en ARM no arrancan en x86.
- Redes estáticas – los Pi suelen usar
eth0con IP fija; Proxmox introduce puentes (vmbr0,vmbr1) y VLAN que requieren re‑mapear direcciones. - Almacenamiento – los SSD en los Pi están montados directamente; Proxmox usa LVM/ZFS y puede requerir migrar datos a volúmenes lógicos.
- Persistencia de configuraciones – Home Assistant, Nextcloud y JellyFin guardan datos en rutas específicas (
/config,/data). Copiar esas carpetas sin perder permisos es crítico. - Aislamiento de tráfico – al crear una DMZ en Proxmox, es fácil olvidar reglas de firewall o asignar VLAN incorrectas, lo que genera pérdida de conectividad externa.
Solución
1. Preparar el nodo Proxmox
- Instalar Proxmox VE (ISO oficial) en el nuevo servidor x86.
- Configurar los dos puertos SFP+ como un LAGG (
bond0) y asignarlo avmbr0. - Crear un puente adicional (
vmbr1) conectado al puerto RJ‑45 de 2.5 GbE para la red de gestión.
# Crear bond0 con los dos DAC
cat <<EOF > /etc/network/interfaces.d/bond0.cfg
auto bond0
iface bond0 inet manual
bond-slaves eth0 eth1
bond-mode 802.3ad
bond-miimon 100
EOF
# Puente para tráfico de VMs/containers
cat <<EOF > /etc/network/interfaces.d/vmbr0.cfg
auto vmbr0
iface vmbr0 inet static
address 10.0.10.1/24
bridge-ports bond0
bridge-stp off
bridge-fd 0
EOF
# Puente para gestión
cat <<EOF > /etc/network/interfaces.d/vmbr1.cfg
auto vmbr1
iface vmbr1 inet static
address 192.168.1.10/24
bridge-ports eth2
bridge-stp off
bridge-fd 0
EOF
systemctl restart networking
2. Definir VLAN y DMZ
- En el switch (Zyxel XGS1210) crear VLAN 10 (admin), 20 (DMZ) y 30 (usuarios).
- En Proxmox, añadir sub‑interfaces a
vmbr0:
cat <<EOF > /etc/network/interfaces.d/vmbr0.10.cfg
auto vmbr0.10
iface vmbr0.10 inet static
address 10.0.10.2/24
vlan-raw-device vmbr0
EOF
cat <<EOF > /etc/network/interfaces.d/vmbr0.20.cfg
auto vmbr0.20
iface vmbr0.20 inet static
address 10.0.20.2/24
vlan-raw-device vmbr0
EOF
- Activar firewall de Proxmox y crear reglas que permitan solo SSH/HTTPS desde la VLAN 10 al host, y tráfico HTTP/HTTPS desde VLAN 20 al contenedor Nextcloud.
3. Migrar datos de los Pi
- Copiar volúmenes – montar los SSD de los Pi en el nuevo nodo (USB‑SATA) y usar
rsyncpreservando permisos y atributos:
rsync -aHAX --progress /mnt/pi_homeassistant/ /mnt/pve/storage/homeassistant/
rsync -aHAX --progress /mnt/pi_nextcloud/ /mnt/pve/storage/nextcloud/
rsync -aHAX --progress /mnt/pi_jellyfin/ /mnt/pve/storage/jellyfin/
- Convertir contenedores Docker a LXC – para servicios ligeros (Home Assistant, BBS) crear plantillas LXC basadas en Debian/Ubuntu y montar los directorios copiados como volúmenes bind.
pct create 101 local:vztmpl/debian-12-standard_12.0-1_amd64.tar.gz \
-hostname homeassistant -net0 name=eth0,bridge=vmbr0.20,ip=10.0.20.101/24 \
-rootfs local-lvm:8 \
-features nesting=1
pct set 101 -mp0 /mnt/pve/storage/homeassistant,mp=/config
pct start 101
- Re‑crear VMs para aplicaciones que requieren Docker – usar una VM con Ubuntu 22.04, instalar Docker y restaurar los
docker-compose.ymloriginales. Cambiar la arquitectura de las imágenes condocker pull --platform linux/amd64.
docker compose up -d
4. Configurar replicación y alta disponibilidad (opcional)
- Si se añade un segundo nodo HP, conectar los dos servidores con un cable DAC directo y crear un segundo bond (
bond1). - Configurar
pve-clustery habilitarHApara los contenedores críticos (Nextcloud, Home Assistant).
pvecm add <IP_del_segundo_nodo>
ha-manager add ha-nextcloud --vmid 102 --max-restarts 3
5. Ajustar transcoding y rendimiento
- Instalar
intel-media-driveryffmpegdentro de la VM Jellyfin para aprovechar la GPU UHD 630. - Configurar Jellyfin para usar hardware acceleration (
VAAPI) y desactivar la transcodificación automática en los Pi.
Cuándo aplicar esta solución
- Escalado de carga: cuando varios contenedores consumen más CPU/RAM de lo que una Raspberry Pi puede ofrecer.
- Necesidad de aislamiento: si se requiere separar tráfico de gestión, DMZ y usuarios mediante VLAN o firewalls.
- Requerimientos de hardware: cuando se necesita GPU para transcodificación, 10 GbE para backup rápido o almacenamiento SSD NVMe.
- Plan de crecimiento: si se prevé añadir nodos adicionales y alta disponibilidad.
No es apropiado si la infraestructura sigue siendo un único Pi con menos de 2 TB de datos y sin requisitos de aislamiento; la complejidad añadida de Proxmox y LAGG superaría los beneficios.
Verificación
- Conectividad – ping desde una máquina en VLAN 20 a la IP de Nextcloud (
10.0.20.102). - Acceso a gestión – SSH al host Proxmox desde VLAN 10 (
192.168.1.10). - Integridad de datos – comparar hashes de los directorios originales y los copiados (
sha256sum -c). - Transcodificación – reproducir un video 4K en Jellyfin y confirmar que la carga de CPU se mantiene bajo el 20 % y que
ffmpeg -hwaccel vaapimuestra uso de VAAPI. - Failover – apagar el nodo principal y verificar que la VM/LCX HA arranca en el nodo secundario.
Notas adicionales
- Arquitectura de imágenes: antes de migrar, revisa
docker imagesy etiqueta las que sonarm64. Usadocker buildxpara crear versionesamd64si no existen. - Permisos de SELinux/AppArmor: al montar volúmenes en LXC, puede ser necesario ajustar
lxc.cgroup2.devices.allowo desactivar AppArmor para evitar denegaciones de acceso. - Backup inicial: realiza una copia de seguridad completa del nodo Proxmox (
vzdump --dumpdir /backup --all) antes de iniciar la migración; facilita la recuperación ante errores de configuración. - Monitoreo: habilita
node-exporteryprometheuspara observar el uso de 10 GbE y detectar cuellos de botella en la red de replicación. - Consumo energético: los servidores x86 consumen más que los Pi; considera programar apagados nocturnos de VMs no críticas para reducir la factura eléctrica.