Guía

Proxy inverso y HTTPS para tu servidor doméstico

Publica aplicaciones con Caddy o Nginx Proxy Manager. Comprueba DNS, ACME, redirecciones y renovación automática de certificados.

Fuente revisada:

Un proxy inverso recibe HTTPS en el puerto 443 y dirige las solicitudes a aplicaciones internas. Caddy o Nginx Proxy Manager pueden realizar esta función. Sus paneles administrativos deben permanecer privados.

Configuración

  1. Reserva la dirección LAN del proxy.
  2. Configura DNS hacia tu IP pública y DDNS si hace falta.
  3. Redirige TCP 443 al proxy.
  4. Asocia cada nombre con la aplicación interna correcta.

Certificados

HTTP-01 normalmente necesita el puerto 80 accesible. DNS-01 valida un registro DNS y sirve para hosts privados. Usa un token API con permisos adecuados: un token DDNS no equivale automáticamente a uno de la API DNS. Un certificado wildcard cubre un nivel adicional, no la raíz de la zona.

Pruebas

Configura proxies de confianza, WebSockets y límites de carga. Comprueba la renovación y la recarga efectiva del certificado.

Ejemplos de configuración

Adapta valores, interfaces y puertos. Los ejemplos pueden corresponder a versiones diferentes: no ejecutes juntas alternativas incompatibles. Nunca publiques tokens reales ni claves privadas.

ha.yourname.uk.app {
	reverse_proxy 192.168.1.20:8123
}

films.yourname.uk.app {
	reverse_proxy 192.168.1.30:8096
}

cloud.yourname.uk.app {
	reverse_proxy 192.168.1.40:11000
}
sudo systemctl reload caddy
journalctl -u caddy -f      # watch the certificates being issued
# as root on the proxy machine (sudo -i)
apt install unzip python3 curl
curl https://get.acme.sh | sh -s email=you@example.com
curl -fsSLO https://uk.app/downloads/ukapp-tools.zip && unzip ukapp-tools.zip
install -m 755 ukapp.py /usr/local/bin/ukapp
cp dns_ukapp.sh ~/.acme.sh/dnsapi/

install -m 600 /dev/null /root/.ukapp-api-token
nano /root/.ukapp-api-token          # paste the API token, save
export UKAPP_TOKEN="$(cat /root/.ukapp-api-token)"
~/.acme.sh/acme.sh --issue --server letsencrypt --dns dns_ukapp --dnssleep 300 \
  -d yourname.uk.app -d '*.yourname.uk.app'
mkdir -p /etc/caddy/certs
~/.acme.sh/acme.sh --install-cert -d yourname.uk.app --ecc \
  --fullchain-file /etc/caddy/certs/fullchain.pem \
  --key-file /etc/caddy/certs/key.pem \
  --reloadcmd "chown -R caddy:caddy /etc/caddy/certs && systemctl reload caddy"
(wildcard) {
	tls /etc/caddy/certs/fullchain.pem /etc/caddy/certs/key.pem
}

ha.yourname.uk.app {
	import wildcard
	reverse_proxy 192.168.1.20:8123
}
cat > /usr/local/sbin/acme-renew <<'EOF'
#!/bin/sh
UKAPP_TOKEN="$(cat /root/.ukapp-api-token)"
export UKAPP_TOKEN
exec /root/.acme.sh/acme.sh --cron --home /root/.acme.sh
EOF
chmod 700 /usr/local/sbin/acme-renew
~/.acme.sh/acme.sh --uninstall-cronjob
echo '17 3 * * * root /usr/local/sbin/acme-renew >/var/log/acme-renew.log 2>&1' > /etc/cron.d/acme-renew

Comprobaciones finales

Prueba con datos móviles fuera de tu Wi-Fi. Verifica por separado DNS, puerto previsto, certificado HTTPS válido e inicio de sesión. Mantén privados los paneles administrativos, instala actualizaciones y prueba restaurar una copia. Revisa los cortafuegos IPv6 e IPv4. Un test de puerto correcto no es una auditoría de seguridad.

Esta edición localizada resume la guía original. Los comandos mantienen su sintaxis original. Consulta la documentación enlazada del fabricante para tu versión exacta.

Fuentes y documentación

Colaboradores