Crear una VM en Proxmox y migrar CasaOS.

Crear una VM en Proxmox y migrar CasaOS.

Esta es la Parte 2 de la serie sobre cómo monté mi ZimaBlade como servidor principal. En la Parte 1 expliqué cómo instalar Proxmox VE desde cero. Aquí viene lo interesante — crear la VM y migrar todos mis servicios desde la Raspberry Pi al ZimaBlade sin perder nada.


El objetivo

Tenía una Raspberry Pi corriendo CasaOS con un buen puñado de servicios — Nextcloud, Jellyfin, Radarr, Sonar y varios más. El objetivo era moverlo todo al ZimaBlade manteniendo las configuraciones y los datos intactos.

La clave que lo hizo posible: todos los datos estaban en un SSD externo extraíble. Eso convirtió una migración potencialmente dolorosa en algo relativamente sencillo.


Paso 1 — Crear la VM en Proxmox

En el panel de Proxmox pulsa Create VM y configúrala así:

General

  • ID: el que quieras (ej: 100)
  • Name: CasaOSZima1

OS

Antes de seleccionar la ISO hay que descargarla. En Proxmox ve a:
local (pve) → ISO Images → Download from URL

Pega la URL de descarga de la ISO de Ubuntu 24.04 y espera a que se descargue directamente en el servidor. Luego selecciónala en este paso.

System

  • Machine: q35

Disks

  • Tamaño: el que necesites según tu disco — en mi caso 1.35TB del HDD disponible

CPU

  • Cores: 2 — el máximo disponible en el ZimaBlade

Memory

  • RAM: 7800 MB — equivale a ~7.6GB de los 8GB disponibles, dejando algo de margen al sistema

Network

  • Dejar por defecto

Con esto ya tienes la VM creada. Arráncala e instala Ubuntu 24.04 siguiendo el proceso de instalación estándar.


Paso 2 — Configurar hostname e IP estática

Una vez instalado Ubuntu, lo primero es darle una identidad fija al servidor. Sin IP estática, si el router le asigna una IP diferente al reiniciar, pierdes acceso a todos los servicios.

# Ver el hostname actual y cambiarlo
hostnamectl
sudo hostnamectl set-hostname casaoszima1

# Editar el archivo hosts para que coincida
sudo nano /etc/hosts

# Cambiar contraseñas por seguridad
sudo passwd ubuntu
sudo passwd root

# Reiniciar para aplicar cambios
sudo reboot

Para configurar la IP estática usa nmtui — tiene interfaz gráfica en terminal, mucho más cómodo que editar netplan a mano:

sudo nmtui

Selecciona Edit a connection → tu interfaz de red → configura la IPv4 como Manual y asigna la IP que quieras. Guarda y sal.


Paso 3 — Instalar CasaOS

Con la VM lista instalamos CasaOS con el comando oficial:

curl -fsSL https://get.casaos.io | sudo bash

La instalación es automática y tarda unos minutos. Una vez termine, CasaOS estará accesible desde el navegador en el puerto 80 de la IP de la VM — pero de momento estará vacío, sin ningún servicio.


Paso 4 — Montar el SSD externo de la Raspberry Pi

Conecta el SSD externo de la Raspberry Pi al ZimaBlade por USB. Proxmox se encargará de detectarlo automáticamente. Ahora hay que pasárselo a la VM.

En el panel de Proxmox ve a la VM → Hardware → Add → USB Device y selecciona el SSD externo. Esto lo monta directamente dentro de la VM.

Dentro de la VM verifica que el disco aparece:

lsblk

Monta el disco en una ruta temporal:

sudo mkdir -p /mnt/rpi
sudo mount /dev/sdb2 /mnt/rpi
💡 Si lsblk muestra más información necesaria sobre los discos usa lsblk -f

Paso 5 — Preparar la migración

Antes de copiar nada hay que hacer dos cosas: parar los servicios para evitar archivos corruptos, y ampliar el almacenamiento de la VM para que quepa todo.

Parar servicios

sudo systemctl stop casaos
sudo systemctl stop docker

Ampliar el almacenamiento

# Ver los volúmenes lógicos disponibles
sudo lvdisplay

# Ampliar al máximo disponible
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

# Redimensionar el sistema de archivos
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

# Verificar el espacio disponible
df -h

Paso 6 — Copiar los datos

Aquí está el núcleo de la migración. Copiamos las carpetas que contienen toda la configuración y los datos de CasaOS:

# Datos principales (Nextcloud, Jellyfin, etc.)
sudo rsync -avh --progress /mnt/rpi/DATA/ /DATA/

# Configuración de CasaOS
sudo rsync -avh /mnt/rpi/var/lib/casaos/ /var/lib/casaos/
sudo rsync -avh /mnt/rpi/etc/casaos/ /etc/casaos/

# Configuración de servicios lsio
sudo rsync -avh /mnt/rpi/srv/lsio/ /srv/lsio/
💡 El flag --progress en el primer rsync te muestra el progreso en tiempo real. Con varios cientos de GB puede tardar un buen rato.

Una vez copiado todo, asigna los permisos correctos:

sudo chown -R root:root /DATA
sudo chown -R root:root /var/lib/casaos
sudo chown -R root:root /etc/casaos
sudo chown -R root:root /srv/lsio/

Paso 7 — Arrancar y verificar

Arranca Docker y CasaOS:

sudo systemctl start docker
sudo systemctl start casaos

Abre el panel de CasaOS desde el navegador. Si todos los servicios aparecen y funcionan correctamente — la migración fue perfecta. 🎉

Una vez verificado, desmonta el SSD externo de forma limpia:

# Verificar que no hay procesos usando el disco
sudo lsof +D /mnt/rpi 2>/dev/null

# Desmontar
sudo umount /mnt/rpi

# Verificar que está desmontado
lsblk

Retira el SSD externo físicamente y reinicia la VM. Si arranca correctamente con todos los servicios — ya no lo necesitas.


Bonus — Dashboard con Glance

Para tener una vista general de todos los servicios del homelab instalé Glance en una LXC dedicada a servicios de red. Es un dashboard muy personalizable con una estética limpia.

mkdir glance && cd glance && curl -sL \
  https://github.com/glanceapp/docker-compose-template/archive/refs/heads/main.tar.gz \
  | tar -xzf - --strip-components 2

docker compose up -d

La configuración está en ./glance/config/ — viene con ejemplos pero yo los borré y creé la mía desde cero. Para obtener métricas de los contenedores Docker añade el agente al docker-compose.yml:

services:
  glance-agent:
    container_name: glance-agent
    image: glanceapp/agent:latest
    restart: unless-stopped
    volumes:
      - /:/host:ro
      - /proc:/proc:ro
      - /sys:/sys:ro
      - /dev:/dev:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/os-release:/etc/os-release:ro
    ports:
      - "27973:27973"

Accede al dashboard en http://IP-DE-TU-LXC:8080/


Resultado final

Con esto tienes el ZimaBlade completamente operativo con todos los servicios migrados:

  • ✅ VM con Ubuntu 24.04 corriendo en Proxmox
  • ✅ IP estática configurada
  • ✅ CasaOS instalado y funcionando
  • ✅ Todos los servicios migrados desde la Raspberry Pi
  • ✅ Dashboard Glance para monitorización

El siguiente paso fue añadir el segundo ZimaBlade al cluster para tener alta disponibilidad y replicación — que es exactamente lo que explico en el siguiente tutorial. 👀