2-Crear un NAS con una Laptop Vieja con Open Media Vault
Se lee en 16 min
🖥️ NAS Casera — Guía Completa Paso a Paso
Preparación
Esta guía cubre TODOS los pasos desde cero hasta tener una NAS funcionando con apps, proxy inverso, HTTPS y acceso remoto. Sigue el orden exacto. No te saltes ningún paso.
Requisitos antes de empezar
Hardware:
Portátil viejo + HDD 1TB en caddy + dock con 2 discos
Cable Ethernet conectado del portátil NAS al router
⚠️ Usa Balena Etcher para grabar el USB, NO Rufus. Rufus puede modificar la estructura de la ISO y provocar errores de instalación (debootstrap). Balena Etcher graba la ISO tal cual y es lo que recomienda Debian.
Dónde: En tu PC principal
Herramienta: Balena Etcher
Abrir Balena Etcher
“Flash from file” → seleccionar la ISO de Debian
“Select target” → seleccionar tu USB
“Flash!” → esperar a que termine Y que verifique
Listo, no toques el USB
⚠️ No uses Rufus. Puede causar errores de “debootstrap” al instalar Debian.
Paso 2 — Instalar Debian
⚠️ El portátil debe estar conectado al router por cable Ethernet ANTES de empezar. La instalación necesita internet para descargar paquetes.
Teclas comunes del menú de arranque por marca: HP = F9, Dell = F12, Lenovo = F12, Acer = F2, Asus = F8/ESC
Pinchar el USB en el portátil NAS
Encender → pulsar la tecla del menú de arranque → seleccionar USB
Aparece el instalador de Debian → seleccionar “Install” (no Graphical Install)
Seguir el asistente:
Pantalla
Qué elegir
Idioma
Español
Ubicación
España
Teclado
Español
Hostname
nas (o el nombre que quieras)
Dominio
(dejar vacío, pulsar Enter)
Contraseña root
Poner una segura → APUNTARLA
Nombre completo usuario
Tu nombre
Nombre de usuario
Tu nombre en minúsculas
Contraseña usuario
Poner otra segura → APUNTARLA
Zona horaria
Madrid
Particionado
”Guiado - utilizar todo el disco”
Disco
Seleccionar el SSD (NO el HDD del caddy)
Esquema
”Todos los ficheros en una partición”
Confirmar
”Finalizar el particionado y escribir cambios” → Sí
Mirror de red
España → deb.debian.org
Proxy
(dejar vacío, pulsar Enter)
Participar en encuesta
No
Selección de software
DESMARCAR TODO excepto: ☑ SSH server ☑ Standard system utilities (NO marcar entorno de escritorio, NO marcar GNOME)
GRUB
Sí, instalar en el disco principal → seleccionar el SSD
⚠️ En la selección de software: usa la barra espaciadora para marcar/desmarcar. Enter confirma y continúa, NO desmarca. Si le das a Enter sin querer, se instalará con escritorio GNOME y tendrás que reinstalar.
Esperar a que termine → reiniciar → quitar el USB
Paso 3 — Primer login en Debian
Aparece: nas login:
Escribir tu nombre de usuario → Enter
Escribir tu contraseña → Enter (no se ve lo que escribes, es normal)
Paso 4 — El truco del jefe: su vs su -
Tu usuario normal no tiene permisos de administrador. Necesitas cambiar a root:
su -
Te pide la contraseña de root. La escribes → Enter.
Ahora ves: root@nas:~# (la # en vez de $ significa que eres root)
💡 ¿Por qué su - y no su? El guion carga el entorno completo de root. Sin él, muchos comandos no se encontrarán.
Paso 5 — Preparar los permisos (sudo)
usermod -aG sudo TU_USUARIOreboot
Paso 6 — Instalar OpenMediaVault
su -wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | bash
ssh TU_USUARIO@TU_IP_NASsu -# Crear el RAID 1 (Mirror) - Escribe 'y' cuando preguntemdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd# Obligar a OMV a leer la configuraciónmdadm --detail --scan >> /etc/mdadm/mdadm.confupdate-initramfs -u
REINICIAR la NAS después.
Montar el mirror
Sistema de Archivos → seleccionar md0 → Montar → ext4
Usuarios
Crear nuevos usuarios si necesitamos (recomendado):
Grupos: users
Shell: /usr/bin/bash
Carpetas
Añadir en Almacenamiento → Carpetas compartidas
Estructura
DISCO CADDY (lo descargable/reemplazable):
├── Media ← compartir por SMB
│ ├── Peliculas ← subcarpeta desde Windows
│ ├── Series
│ └── Musica
├── Descargas ← compartir por SMB
├── Software ← compartir por SMB
├── appdata ← NO compartir (config Docker)
├── compose ← NO compartir (archivos compose)
├── data ← NO compartir (datos apps)
└── docker ← NO compartir (instalación Docker)
DISCO MIRROR (lo que NO puedes perder):
├── Personal ← compartir por SMB
│ ├── Fotos_Familia
│ ├── Documentos_Familia
│ └── Videos_Familia
├── Profesional ← compartir por SMB
│ ├── Estudios
│ ├── Certificaciones
│ ├── Scripts
│ └── YouTube
├── Backups ← compartir por SMB
│ ├── Moviles
│ └── PCs
└── backup ← NO compartir (backup configs Docker)
Crear permisos
Usuarios → Seleccionar user → Permisos de carpeta compartida → Dar permiso a los usuarios para cada carpeta que se desee
net use * /delete /y
net stop lanmanworkstation /y
net start lanmanworkstation
Docker y Compose (La Base)
Preparar Docker
Sistema → OMV-Extras → Activar Docker → pulsar Apt Clean
Compose
Sistema → Plugins → buscar compose → Instalar
En Usuarios → Usuarios → Editar → Grupos → En el usuario admin → Primero activar.
Servicios → Compose → Configuración:
Carpeta compartida: compose (Poner de propietario a tu usuario y grupo users)
Datos: appdata
Respaldo: backup
Propietario: tu usuario → Grupo: users / permisos lectura y escritura propietario y grupo
Las carpetas Docker:
Compose: Los planos de nuestras apps
AppData: El corazón y configuración de las apps
Backup: Una copia de seguridad de nuestros planos, alojada en el RAID 1 para máxima seguridad
Docker: Donde va instalado Docker
Instalar apps desde Compose
Servicios → Compose → Archivos → Crear o importar desde ejemplos
Para cada app editar 3 cosas:
Rutas (Volumes): reemplazar /CHANGE/ME por tus rutas absolutas. Las encuentras en Almacenamiento → Carpetas Compartidas → columna “Ruta absoluta”. Cópialas en un bloc de notas.
Permisos (PUID/PGID): verificar en Usuarios → UID y GID (normalmente 1000 y 100).
Puerto: que no esté en uso por otra app.
Herramientas de Gestión (Local)
FileBrowser
YAML
services: filebrowser: image: filebrowser/filebrowser:latest container_name: filebrowser user: 1000:100 environment: - PUID=1000 - PGID=100 - UMASK=000 ports: - "8080:80" volumes: # Carpetas del CADDY (cambia el UUID por el tuyo) - /srv/dev-disk-by-uuid-TU_UUID_CADDY/Media:/srv/Media - /srv/dev-disk-by-uuid-TU_UUID_CADDY/Descargas:/srv/Descargas - /srv/dev-disk-by-uuid-TU_UUID_CADDY/Software:/srv/Software - /srv/dev-disk-by-uuid-TU_UUID_CADDY/appdata:/srv/appdata # Carpetas del MIRROR (cambia el UUID por el tuyo) - /srv/dev-disk-by-uuid-TU_UUID_MIRROR/Personal:/srv/Personal - /srv/dev-disk-by-uuid-TU_UUID_MIRROR/Profesional:/srv/Profesional - /srv/dev-disk-by-uuid-TU_UUID_MIRROR/Backups:/srv/Backups # Config de FileBrowser - /srv/dev-disk-by-uuid-TU_UUID_CADDY/appdata/filebrowser/database:/database - /srv/dev-disk-by-uuid-TU_UUID_CADDY/appdata/filebrowser/config:/config restart: always
Acceder:
Usuarios → permisos → dar permisos a tu usuario.
Abrir: http://TU_IP_NAS:8080
La contraseña la primera vez → seleccionar filebrowser → herramientas → logs → cambiar la pass una vez logueado.
💡 Falta de Permisos:
Si no te entra por falta de permisos, prueba en Carpetas compartidas → seleccionar appdata → poner como propietario al usuario → dar permisos y ACL → y después quitar. A veces el server lo crea como root y hay que forzar. Si no funciona, por SSH:
Pegar esto en el archivo (cambia TU_DOMINIO y TU_TOKEN):
#!/bin/bash# Script para actualizar DuckDNSDOMAIN="TU_DOMINIO.duckdns.org" # Cambia por tu dominioTOKEN="TU_TOKEN_AQUI" # Cambia por tu token realcurl -k -s "https://www.duckdns.org/update?domains=${DOMAIN}&token=${TOKEN}&ip=" > ~/duckdns/duck.logcat ~/duckdns/duck.log
Acceder:
Abrir: http://TU_IP_NAS:8096
Configurar idioma, crear usuario, añadir bibliotecas. Cuando añadas pelis → Panel de control → Bibliotecas → Escanear todo.
💡 Problema de permisos en Jellyfin:
Si no te entra por falta de permisos, prueba en Carpetas compartidas → seleccionar appdata → poner como propietario al usuario → dar permisos y ACL → y después quitar. Si aún así no entra, ir por SSH:
Si el hello-world te ha cargado ya puedes volver a levantar desde OMV nextcloud
Permisos para Nextcloud (MUY IMPORTANTE)
💡 La imagen oficial de Nextcloud usa el usuario interno www-data (UID 33 y GID 33). El servidor a veces crea las carpetas como root, por lo que hay que forzar los permisos si falla el acceso.
Configuración de Nextcloud - Estructura de Carpetas
Objetivo: Hacer que Nextcloud muestre exactamente la misma estructura de carpetas que vemos en FileBrowser y en Windows.
Paso 1: Instalar External Storage Support
En Nextcloud, haz clic en tu avatar (arriba a la derecha).
Selecciona Apps.
Ve a la pestaña Deshabilitadas.
Busca External storage support.
Haz clic en Habilitar.
Paso 2: Configurar External Storages
Haz clic en tu avatar → Configuración.
En el menú izquierdo selecciona External storages.
Haz clic en + Añadir almacenamiento externo, selecciona Local y rellena:
Nombre de carpeta
Tipo
Ruta en el contenedor
Disponible para
Solo lectura
Media
Local
/mnt/Media
Todos los usuarios
✅ Sí
Descargas
Local
/mnt/Descargas
Todos los usuarios
❌ No
Personal
Local
/mnt/Personal
tu usuario + familia
❌ No
Profesional
Local
/mnt/Profesional
tu usuario
❌ No
💡 Notas importantes sobre External Storage:
No se duplica contenido: Nextcloud solo crea un enlace a las carpetas reales del NAS.
Las carpetas marcadas como “Solo lectura” evitan borrados accidentales desde la nube.
Si subes o borras archivos desde Nextcloud en carpetas de lectura/escritura, se reflejarán en FileBrowser y Windows (y viceversa).
Verificación: Ve al inicio de Nextcloud. Deberías ver las carpetas Media, Personal, Profesional, etc. en la raíz y poder navegar en ellas viendo el contenido real.
Comandos para arreglar permisos en Carpetas Externas
Dado que Nextcloud funciona con el usuario 33:33 (www-data), las carpetas externas del NAS necesitan ser accesibles para él.
Arreglar permisos generales (ejemplo con “Media”):
Cambia ‘Media’ por cada uina de las carpetas que quieras sincronizar así no tendrás problemas de permisos y podrás subir desde cualquier dispositivo lo que quieras, si no lo haces tendrás problemas de permisos
Si al entrar por tu dominio web Nextcloud te bloquea con el mensaje “Acceso a través de un dominio no confiable”, aplica estos comandos por SSH:
# Añadir tu dominio a la lista de confianzadocker exec --user www-data nextcloud php occ config:system:set trusted_domains 1 --value="cloud.TU_DOMINIO.duckdns.org"# Añadir la IP localdocker exec --user www-data nextcloud php occ config:system:set trusted_domains 2 --value="TU_IP_NAS"# Forzar HTTPSdocker exec --user www-data nextcloud php occ config:system:set overwriteprotocol --value="https"# Reiniciardocker restart nextcloud
💡 El Bypass del Router (Archivo Hosts en Windows):
A veces el dominio no se ve desde dentro de casa porque el Router intercepta la comunicación (falta de NAT Loopback). Editamos el archivo de Windows:
Ruta:C:\Windows\System32\drivers\etc\hosts
Línea añadida:TU_IP_NAS cloud.TU_DOMINIO.duckdns.org
(Esto permite que tu PC vaya directo al NAS sin pasar por el filtro del router).
Pruebas, Solución de Problemas y Conexión
Test desde fuera
Coge tu móvil → desactiva el WiFi (usa solo datos)
Abre el navegador:
https://jellyfin.TU_DOMINIO.duckdns.org → ¿Carga con candado HTTPS? ✅
https://cloud.TU_DOMINIO.duckdns.org → ¿Carga con candado HTTPS? ✅
Configurar apps del móvil
Jellyfin app:
Play Store → “Jellyfin” → instalar
Servidor: https://jellyfin.TU_DOMINIO.duckdns.org
Login con tu usuario de Jellyfin
Nextcloud app:
Play Store → “Nextcloud” → instalar
Servidor: https://cloud.TU_DOMINIO.duckdns.org
Login con tu usuario de Nextcloud
Ajustes → Subida automática → Activar
Resolución de Errores Comunes
Error
Causa Probable
Solución
403 Forbidden
Error en Nginx Proxy Manager
Cambia el Forward Port a 80 (no el 8082).
Página del Router
Falta de NAT Loopback
Prueba con datos móviles fuera de la red Wi-Fi local. O usa el Bypass del archivo Hosts en Windows.
Certificado no válido
SSL mal configurado en NPM
Edita el Proxy Host y marca Force SSL y HTTP/2 Support.
SSH no conecta
VPN activa o usuario sin grupo _ssh
Cerrar VPN o activar “LAN sharing”. Verificar grupo _ssh en Usuarios.
Contraseña OMV no funciona
Cuenta bloqueada
SSH → su - → omv-firstaid → opción 5 + opción 4
Error cpupower
Falta paquete
sudo apt-get install linux-cpupower && sudo omv-salt deploy run cpupower