Proxy inverso HTTPS
Ejemplos listos para adaptar para Caddy, Nginx y Traefik, tanto dentro como fuera de Docker.
Elija el ejemplo que corresponda a la ubicación del proxy. El nombre nasdash solo funciona si ambos contenedores comparten la misma red de Docker. Un proxy instalado en el host suele utilizar 127.0.0.1:2504.
Caddy instalado en el host
Publique NasDash únicamente en la interfaz de bucle (loopback):
services:
nasdash:
ports:
- "127.0.0.1:2504:2504"Luego, en Caddyfile:
nasdash.example.com {
encode zstd gzip
reverse_proxy 127.0.0.1:2504
}Caddy obtiene el certificado si el DNS público apunta al servidor y los puertos necesarios para el desafío son accesibles.
Nginx instalado en el host
server {
listen 443 ssl http2;
server_name nasdash.example.com;
ssl_certificate /etc/letsencrypt/live/nasdash.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nasdash.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:2504;
proxy_http_version 1.1;
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 $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}La gestión de certificados no la gestiona NasDash. Pruebe la configuración de Nginx antes de recargarla.
Caddy en el mismo Compose
services:
nasdash:
image: ghcr.io/lucas-lepajollec/nasdash:latest
expose:
- "2504"
networks: [web]
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
networks: [web]
networks:
web:
volumes:
caddy-data:
caddy-config:nasdash.example.com {
reverse_proxy nasdash:2504
}Traefik en el mismo Compose
El ejemplo asume una red externa proxy ya utilizada por Traefik y un resolutor denominado letsencrypt:
services:
nasdash:
image: ghcr.io/lucas-lepajollec/nasdash:latest
networks: [proxy]
labels:
- "traefik.enable=true"
- "traefik.http.routers.nasdash.rule=Host(`nasdash.example.com`)"
- "traefik.http.routers.nasdash.entrypoints=websecure"
- "traefik.http.routers.nasdash.tls=true"
- "traefik.http.routers.nasdash.tls.certresolver=letsencrypt"
- "traefik.http.services.nasdash.loadbalancer.server.port=2504"
networks:
proxy:
external: trueVerificaciones tras la publicación
curl -I https://nasdash.example.com/api/healthVerifique también el inicio de sesión, el cierre de sesión, los enlaces de servicio, la carga de widgets y la ausencia de contenido mixto. Nunca agregue secretos de NasDash a las etiquetas del proxy si su inspección es accesible para otros usuarios.