Gestione

Reverse proxy HTTPS

Esempi pronti da adattare per Caddy, Nginx e Traefik, sia all'interno che all'esterno di Docker.

Scegli l'esempio che corrisponde alla posizione del proxy. Il nome nasdash funziona solo se entrambi i container condividono la stessa rete Docker. Un proxy installato sull'host utilizza in genere 127.0.0.1:2504.

Caddy installato sull'host

Pubblica NasDash solo sull'interfaccia di loopback:

services:
  nasdash:
    ports:
      - "127.0.0.1:2504:2504"

Quindi in Caddyfile:

Caddyfile
nasdash.example.com {
  encode zstd gzip
  reverse_proxy 127.0.0.1:2504
}

Caddy ottiene il certificato se il DNS pubblico punta al server e le porte richieste per la challenge sono accessibili.

Nginx installato sull'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 gestione dei certificati non è gestita da NasDash. Testa la configurazione di Nginx prima di ricaricare.

Caddy nello stesso 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:
Caddyfile
nasdash.example.com {
  reverse_proxy nasdash:2504
}

Traefik nello stesso Compose

L'esempio presuppone una rete esterna proxy già utilizzata da Traefik e un resolver denominato 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: true

Controlli dopo la pubblicazione

curl -I https://nasdash.example.com/api/health

Verifica inoltre l'accesso, la disconnessione, i link ai servizi, il caricamento dei widget e l'assenza di contenuti misti. Non aggiungere mai i segreti di NasDash alle label del proxy se la sua ispezione è accessibile ad altri utenti.