Betrieb

Reverse-Proxy-HTTPS

Anpassbare Beispiele für Caddy, Nginx und Traefik, sowohl innerhalb als auch außerhalb von Docker.

Wählen Sie das Beispiel, das zur Position des Proxys passt. Der Name nasdash funktioniert nur, wenn beide Container dasselbe Docker-Netzwerk teilen. Ein auf dem Host installierter Proxy verwendet in der Regel 127.0.0.1:2504.

Caddy auf dem Host installiert

Veröffentlichen Sie NasDash nur auf der Loopback-Schnittstelle:

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

Dann in Caddyfile:

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

Caddy erhält das Zertifikat, wenn der öffentliche DNS auf den Server zeigt und die für die Herausforderung erforderlichen Ports zugänglich sind.

Nginx auf dem Host installiert

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";
    }
}

Die Zertifikatsverwaltung wird nicht von NasDash übernommen. Testen Sie die Nginx-Konfiguration, bevor Sie sie neu laden.

Caddy im selben 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 im selben Compose

Das Beispiel geht davon aus, dass ein externes Netzwerk proxy, das bereits von Traefik verwendet wird, sowie ein Resolver mit dem Namen letsencrypt vorhanden sind:

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

Prüfungen nach der Veröffentlichung

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

Prüfen Sie außerdem Anmeldung, Abmeldung, Service-Links, das Laden von Widgets und das Fehlen von gemischtem Inhalt. Fügen Sie NasDash-Geheimnisse niemals zu den Proxy-Labels hinzu, wenn deren Inspektion für andere Benutzer zugänglich ist.