Nextcloud: cómo montar tu propio “Google Fotos” privado (TrueNAS + Tailscale + Nginx + Pi‑hole)
¿Qué es Nextcloud?
Arquitectura (en 60 segundos)
Requisitos
Pasos de despliegue
App móvil: subida automática de fotos
Una sola URL dentro y fuera de casa
FAQ
Resumen
Nextcloud es una plataforma open‑source que te permite tener tu propio “Drive/Photos” en casa o en tu servidor. Puedes crear cuentas para cada persona, subir fotos automáticamente, compartir álbumes y visualizar desde web o app móvil, con el control total de tus datos.
📱 Móvil / PC
├─ LAN (Wi‑Fi, sin VPN) → proxy Nginx (VM)
└─ VPN Tailscale (remoto seguro) → proxy Nginx (VM)
└──► Nextcloud (TrueNAS, HTTP backend)
DNS local (Pi‑hole): <FQDN_PROXY> → <PROXY_LAN_IP> en LAN
Cert TLS (Tailscale): HTTPS válido para <FQDN_PROXY>/Datos/FOTOS/<usuario>.# IP fija con NetworkManager
nmcli con mod "Wired connection 1" ipv4.addresses <PROXY_LAN_IP>/24
nmcli con mod "Wired connection 1" ipv4.gateway <LAN_GATEWAY_IP>
nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8"
nmcli con mod "Wired connection 1" ipv4.method manual
nmcli con up "Wired connection 1"
# Instalar Nginx
apt update && apt -y install nginx-fullcurl -fsSL https://tailscale.com/install.sh | sh
tailscale up # autoriza la máquina en el panel
# Emitir el certificado para tu FQDN de Tailscale (de la VM)
mkdir -p /etc/nginx/tailscale
tailscale cert <FQDN_PROXY> # genera .crt y .key en /etc/nginx/tailscaleCrea /etc/nginx/sites-available/nextcloud.conf y enlázalo a sites-enabled:
ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/nextcloud.conf
nginx -t && systemctl reload nginxContenido recomendado (ajusta FQDN/IPs):
# HTTP SOLO LAN (fallback opcional)
server {
listen 80;
listen [::]:80;
server_name <FQDN_PROXY>;
allow <PROXY_LAN_SUBNET>; # p. ej. 192.168.1.0/24
deny all;
client_max_body_size 4G;
proxy_read_timeout 300;
location / {
proxy_pass http://<TRUENAS_LAN_IP>:<NEXTCLOUD_PORT>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}
# HTTPS (cert de Tailscale)
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <FQDN_PROXY>;
ssl_certificate /etc/nginx/tailscale/<FQDN_PROXY>.crt;
ssl_certificate_key /etc/nginx/tailscale/<FQDN_PROXY>.key;
client_max_body_size 4G;
proxy_read_timeout 300;
location / {
proxy_pass http://<TRUENAS_LAN_IP>:<NEXTCLOUD_PORT>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}'trusted_domains' => array(
'<TRUENAS_LAN_IP>',
'<FQDN_PROXY>',
),
'trusted_proxies' => array(
'<PROXY_LAN_IP>',
'127.0.0.1',
),
'overwritehost' => '<FQDN_PROXY>',
'overwriteprotocol' => 'https',
'overwrite.cli.url' => 'https://<FQDN_PROXY>',
Añade un registro local: <FQDN_PROXY> → <PROXY_LAN_IP>. Así, la misma URL funciona en LAN (sin VPN) y fuera (con Tailscale).
https://<FQDN_PROXY>/ (si da error tras cambios, borra caché/datos y reconfigura)./FOTOS/<usuario>).¿Puedo usarlo sin VPN fuera de casa?
Sí, si expones el proxy públicamente (no recomendado) o activas Tailscale Funnel. En esta guía, el acceso externo es solo por VPN.
¿Puedo tener HTTPS en LAN también?
Sí: usa el mismo cert de Tailscale (suele valer) o genera un cert local alternativo y haz SNI por el mismo FQDN.
Con Nextcloud sobre TrueNAS, un proxy Nginx, Tailscale y DNS local consigues tu propio “Google Fotos” privado: subida automática desde el móvil, multiusuario, cifrado y control total de tus datos. Una inversión perfecta para homelab y para aprender infraestructura moderna.