¡Hola, mundo! (Otra vez)
(Sopla el polvo del teclado... tose un poco).
Bueno, bueno. Si miramos el calendario, mi última publicación por aquí fue allá por Enero de 2024. Ha llovido bastante, la IA ha conquistado el mundo (hola, Gemini), y yo he estado hibernando... o mejor dicho, cacharreando.
Quiero arrancar este 2026 rompiendo la maldición del blog abandonado. Y qué mejor forma de hacerlo que compartiendo las batallas que he tenido montando mi propio HomeLab. Porque seamos honestos: no hay nada más gratificante (y frustrante a la vez) que ser tu propio SysAdmin.
Hoy vamos a hablar de Immich, esa maravilla para gestionar fotos que le da mil vueltas a Google Photos. Pero no vamos a hacer una instalación "siguiente-siguiente". No, señor. Vamos a montar una arquitectura robusta, limpia y recuperable.
El Objetivo: La Arquitectura "Plug & Play"
Mi obsesión era simple: Separar el cerebro de la memoria.
Quiero que Immich corra en un contenedor ligero (LXC) en Proxmox, pero que mis gigas y gigas de fotos vivan felices y seguras en mi NAS (OpenMediaVault).
¿Por qué? Porque si mañana explota mi contenedor de Immich (o si decido borrarlo porque me levanté con ganas de caos), quiero poder reinstalarlo en 5 minutos y que todas mis fotos sigan intactas en el NAS, esperando ser leídas. Sin duplicados. Sin dramas.
¿Suena bien? Pues agarra tu café, abre la terminal y vamos al lío.
📡 Fase 1: El Búnker (OpenMediaVault)
Lo primero es preparar el terreno en nuestro NAS. Necesitamos compartir la carpeta de fotos vía NFS, pero con un "hechizo" especial para que Docker no llore por los permisos.
Identifica a tu dueño: Entra por SSH a tu OMV y averigua el UID/GID de tu usuario (el dueño de los datos).
id tu_usuario # Quédate con estos números. Ej: uid=1000 gid=100La configuración NFS Mágica: Vete a Servicios > NFS > Recursos Compartidos. Crea uno apuntando a tu disco de datos. En el campo de Opciones, borra lo que haya y pega esto (es la clave del éxito):
rw,subtree_check,insecure,all_squash,anonuid=1000,anongid=100💡 ¿Qué acabamos de hacer? Con
all_squash, le decimos al NAS: "No me importa quién venga a escribir aquí (aunque sea un contenedor extraño), trátalo como si fuera el usuario 1000". ¡Adiós errores de permisos!
🌉 Fase 2: El Puente (Nodo Proxmox)
Aquí viene el truco pro. En lugar de luchar montando el NFS dentro del contenedor (que suele dar guerra en contenedores "Unprivileged"), lo montaremos en el "metal" (el Host Proxmox) y se lo pasaremos al contenedor.
⚠️ OJO: Estos comandos van en la consola de tu Nodo Proxmox (ej. aurora), no en el contenedor.
Crea el punto de montaje:
mkdir -p /mnt/pve/pinas-immichEdita el
fstabpara que sea persistente:nano /etc/fstabAgrega esto al final (usa la IP de tu OMV):
100.100.100.45:/export/pinas-immich /mnt/pve/pinas-immich nfs defaults 0 0Monta y reza (bueno, mejor verifica):
mount -a🧪 La Prueba de Fuego: Vamos a ver si realmente podemos escribir.
touch /mnt/pve/pinas-immich/test_host.txt && echo "¡ÉXITO!"rm /mnt/pve/pinas-immich/test_host.txtSi salió "¡ÉXITO!", seguimos. Si no, revisa la Fase 1.
📦 Fase 3: El Cerebro (LXC Container)
Vamos a crear el contenedor donde vivirá Immich.
Template: Debian 12 (Bookworm) - Lo clásico nunca falla.
Recursos: Dale cariño. 4 Cores y 4GB RAM mínimo (Immich usa Machine Learning, tiene hambre).
Unprivileged: SÍ. (Seguridad ante todo).
El Truco del Almendruco (Bind Mount):
Antes de encender el contenedor, ejecuta esto en la consola del Nodo Proxmox (cambia 10X por el ID de tu nuevo contenedor):
(Traducción: "Oye contenedor, la carpeta que tengo aquí, hazla aparecer allá adentro").
Ahora sí, inicia el contenedor, entra a su consola y haz otra prueba de fuego con touch para asegurarte de que heredó los poderes de escritura.
🧹 Fase 4: Limpieza Saiyajin (Staging)
Si vienes de una instalación anterior fallida o tienes una carpeta con fotos desordenadas, NO las importes directamente. Immich puede entrar en un bucle infinito de "leo foto, copio foto, leo la copia, copio la copia...".
Vamos a curarnos en salud dentro del LXC:
Borra basura vieja: (Solo si tenías una instalación previa)
cd /mnt/pinas-immichrm -rf thumbs/* encoded-video/* upload/* profile/*Elimina duplicados: (Seamos eficientes)
apt update && apt install fdupes -yfdupes -r -d -N ./libraryLa Zona de Paso (CRÍTICO): Saca todo de la carpeta
libraryy ponlo en una carpeta temporal. Immich leerá de aquí y organizará en el destino final.mkdir -p import_sourcemv library/* import_source/ # Tu carpeta 'library' debe quedar vacía como mi cuenta bancaria.
🐳 Fase 5: Docker e Immich
Ya tenemos la infraestructura. Ahora instalemos el software.
Instala Docker:
curl -fsSL https://get.docker.com -o get-docker.shsh get-docker.shPrepara Immich:
mkdir -p /opt/immich && cd /opt/immichwget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.envEdita el
.env:nano .envAjusta esto:
UPLOAD_LOCATION=/mnt/pinas-immich DB_DATA_LOCATION=./postgres¡Despegue! 🚀
docker compose up -d
⚙️ Fase 6: Configuración del Storage Template
Antes de importar ni una sola foto, entra a la web (http://IP-LXC:2283), crea tu usuario admin y configura CÓMO quieres que se guarden los archivos.
Ve a Administration > Settings > Storage Template.
Enabled: ON
Template:
{{filetype}}/{{y}}/{{y}}-{{MM}}-{{dd}}/{{filename}}
Nota importante: Usar
{{filename}}al final asegura que Immich respete el nombre original de tu archivo y no le pegue un ID aleatorio feo al principio.
📥 Fase 7: La Gran Importación (CLI)
El momento de la verdad. Vamos a decirle a Immich: "Toma estos archivos desordenados de import_source y déjamelos bonitos en library".
Genera una API Key en tus ajustes de usuario y lanza esto en la terminal del LXC:
-v "/mnt/pinas-immich:/import" \
--network host \
ghcr.io/immich-app/immich-cli:latest \
upload \
--key TU_API_KEY \
--url http://localhost:2283/api \
--recursive \
/import/import_source
Si todo sale bien, verás una lluvia de texto verde confirmando la subida. Immich moverá tus fotos, las organizará por fecha y tu carpeta library quedará inmaculada.
Conclusión
Y ahí lo tienen. Una instalación de Immich que sobrevive a apocalipsis nucleares (o al menos a que borres el contenedor sin querer).
Espero que esta guía les sirva para perderle el miedo a mezclar Proxmox, LXC y NFS. Yo por ahora me despido, prometo no tardar otros dos años en volver a escribir... o quizás sí, depende de cuántos contenedores rompa la próxima semana.
Finalmente no olvides aplicar la estrategia de backups 3-2-1
¡Nos leemos en los comentarios! 👋
No hay comentarios.:
Publicar un comentario