SwissKnife Docs
Démarrer

Reverse proxy

Publier SwissKnife en HTTPS sans retirer les en-têtes nécessaires à FFmpeg WASM.

SwissKnife n'a pas d'authentification. Un reverse proxy sert surtout à terminer TLS. Le point critique n'est pas un cookie : c'est SharedArrayBuffer, requis par FFmpeg WASM.

nginx.conf du produit envoie notamment :

  • Cross-Origin-Opener-Policy: same-origin
  • Cross-Origin-Embedder-Policy: require-corp
  • Cross-Origin-Resource-Policy: same-origin

Si le proxy les retire ou les remplace, le moteur audio/vidéo ne charge plus. Les conversions d'images Canvas peuvent encore fonctionner.

Les exemples ci-dessous utilisent swissknife.example.com et 127.0.0.1:2501. Adaptez le nom d'hôte ; ne changez le port que si votre mapping hôte n'est plus 2501.

Restreindre l'écoute Docker

Pour n'accepter le trafic que depuis le proxy local :

services:
  swissknife:
    ports:
      - "127.0.0.1:2501:8080"

Caddy installé sur l'hôte

Caddyfile
swissknife.example.com {
  encode zstd gzip
  reverse_proxy 127.0.0.1:2501
}

Caddy transmet en général les en-têtes de la réponse amont. Vérifiez dans les outils développeur du navigateur que COOP et COEP sont toujours présents sur / et sur /ffmpeg/ffmpeg-core.wasm.

Nginx installé sur l'hôte

server {
    listen 443 ssl http2;
    server_name swissknife.example.com;

    ssl_certificate     /etc/letsencrypt/live/swissknife.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/swissknife.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:2501;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_hide_header Cross-Origin-Opener-Policy;
        proxy_hide_header Cross-Origin-Embedder-Policy;
        proxy_hide_header Cross-Origin-Resource-Policy;
        add_header Cross-Origin-Opener-Policy "same-origin" always;
        add_header Cross-Origin-Embedder-Policy "require-corp" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;
    }
}

Nginx n'ajoute pas toujours les add_header du backend si vous en redéfinissez d'autres. Le bloc ci-dessus les pose explicitement. Testez la configuration avant rechargement.

Ne pas activer COEP sur la documentation

Cette documentation et le site de présentation n'ont pas besoin de require-corp. Ne copiez pas ces en-têtes hors de l'application de conversion.

On this page