Reverse proxy
Les navigateurs n’autorisent l’accès au micro que sur des origines sécurisées : Inari doit donc être servi en HTTPS. Un reverse proxy termine le TLS et transmet le trafic à Inari sur le port 3030.
Trois règles s’appliquent à tous les proxys :
- Transmettez le port web (
3030) et activez les upgrades WebSocket : l’application utilise/ws. - Ne faites pas passer le port WebRTC (
44444, UDP et TCP) par le proxy. L’audio va directement des joueurs vers Inari, ce port doit donc être ouvert dans votre pare-feu. SERVER_PUBLIC_IPdoit être l’IP publique de la machine, pas le domaine du proxy.
Dans les exemples, remplacez inari.example.com par votre domaine et 127.0.0.1:3030 par l’adresse de votre conteneur Inari.
map $http_upgrade $connection_upgrade { default upgrade; '' close;}
server { listen 80; server_name inari.example.com; return 301 https://$host$request_uri;}
server { listen 443 ssl; http2 on; server_name inari.example.com;
ssl_certificate /etc/letsencrypt/live/inari.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/inari.example.com/privkey.pem;
location / { proxy_pass http://127.0.0.1:3030; 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;
# WebSocket proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_read_timeout 3600s; proxy_send_timeout 3600s; }}Obtenez un certificat avec certbot --nginx -d inari.example.com si vous n’en avez pas encore.
Caddy obtient et renouvelle les certificats automatiquement et gère les WebSockets nativement.
inari.example.com { reverse_proxy 127.0.0.1:3030}Avec des labels Docker, en supposant qu’un entrypoint websecure et un résolveur de certificats letsencrypt existent déjà :
services: inari: image: thedrewen/inari:stable restart: unless-stopped environment: API_KEY: change-me SERVER_PUBLIC_IP: 203.0.113.10 ports: - "44444:44444/udp" - "44444:44444/tcp" labels: - traefik.enable=true - traefik.http.routers.inari.rule=Host(`inari.example.com`) - traefik.http.routers.inari.entrypoints=websecure - traefik.http.routers.inari.tls.certresolver=letsencrypt - traefik.http.services.inari.loadbalancer.server.port=3030Traefik transmet automatiquement les WebSockets. Seul le port WebRTC est publié sur l’hôte ; le port web est atteint via Traefik.
Activez d’abord les modules nécessaires :
a2enmod proxy proxy_http proxy_wstunnel rewrite ssl headers<VirtualHost *:80> ServerName inari.example.com Redirect permanent / https://inari.example.com/</VirtualHost>
<VirtualHost *:443> ServerName inari.example.com
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/inari.example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/inari.example.com/privkey.pem
ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "https"
RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /(.*) ws://127.0.0.1:3030/$1 [P,L]
ProxyPass / http://127.0.0.1:3030/ ProxyPassReverse / http://127.0.0.1:3030/</VirtualHost>Nginx Proxy Manager
Section intitulée « Nginx Proxy Manager »- Ajoutez un Proxy Host avec votre domaine.
- Schéma
http, hôte/IP d’Inari, port3030. - Activez Websockets Support et Block Common Exploits.
- Dans l’onglet SSL, demandez un certificat Let’s Encrypt et activez Force SSL.
Cloudflare
Section intitulée « Cloudflare »Le proxy de Cloudflare (nuage orange) peut transporter la page web et le WebSocket, mais pas le port WebRTC. Assurez-vous que SERVER_PUBLIC_IP est la vraie IP de votre serveur et que le port 44444 est joignable directement, sans passer par Cloudflare.
Vérifier votre installation
Section intitulée « Vérifier votre installation »https://inari.example.com/affiche la page d’Inari avec un certificat valide.- Les outils de développement du navigateur montrent une connexion
wss://inari.example.com/wsavec le statut101. - L’audio fonctionne depuis un second réseau : cela valide le port WebRTC.