Nginx
Vue d'ensemble
Dans ce guide, nous utiliserons Nginx comme proxy inverse pour accéder au panneau Remnawave. Nous pointerons un nom de domaine vers notre serveur, émettrons un certificat SSL et configurerons Nginx.
Vous devez avoir un nom de domaine enregistré pour continuer.
Pointer le domaine vers votre serveur
Vérifiez l'adresse IP de votre serveur. Il est préférable d'utiliser une adresse IPv4 statique.
Maintenant, vous devez pointer votre nom de domaine vers cette adresse IP.
Par exemple, ce sera my-super-panel.com -> 193.122.122.122.
Il y a deux façons de le faire :
- Utiliser un fournisseur DNS (ex. Cloudflare, Google Cloud, etc.)
- Utiliser un registraire (ex. Namecheap, etc.)
Fournisseur DNS
Si vous utilisez Cloudflare, vous devez ajouter un enregistrement A/AAAA (pour IPv4 et IPv6 respectivement) à vos enregistrements DNS.
Connectez-vous à votre compte Cloudflare ici et sélectionnez le domaine souhaité.
Sur le côté gauche de la page, cliquez sur DNS puis sur Records. Cliquez sur Create record.
Définissez le Type sur A et le Name sur @.
Si vous souhaitez utiliser des sous-domaines, vous devez entrer le nom du sous-domaine (ex. panel) dans le champ Name.
Entrez l'adresse IP de votre serveur dans le champ IPv4 address et cliquez sur Save.
Maintenant, vous devez attendre un moment pour que les enregistrements DNS se mettent à jour.
Il y a une grande différence entre le nuage jaune (le domaine est proxifié par Cloudflare) et le nuage gris (le domaine n'est pas proxifié par Cloudflare) dans le panneau de contrôle Cloudflare.
Si Cloudflare fonctionne bien dans votre région, il est préférable de proxifier le domaine via Cloudflare. (Nuage jaune)

Certains fournisseurs DNS ont une interface différente, mais le processus global est le même.
Émettre un certificat SSL
Vous devez maintenant émettre un certificat SSL. La façon la plus simple est d'utiliser acme.sh.
Ce guide couvre uniquement l'émission d'un certificat SSL pour le domaine du panneau.
Installer les dépendances
sudo apt-get install cron socat
Installer acme.sh
Vous pouvez utiliser n'importe quelle adresse e-mail pour émettre le certificat, mais il est recommandé d'en utiliser une valide.
Remplacez EMAIL par votre adresse e-mail.
curl https://get.acme.sh | sh -s email=EMAIL && source ~/.bashrc
Créer un dossier pour les certificats
mkdir -p /opt/remnawave/nginx && cd /opt/remnawave/nginx
Émettre un certificat
Remplacez DOMAIN par le nom de domaine pour lequel vous souhaitez émettre un certificat.
N'utilisez pas les zones de domaine : .ru, .su, .рф. ZeroSSL ne supporte pas ces zones actuellement.
acme.sh --issue --standalone -d 'DOMAIN' --key-file /opt/remnawave/nginx/privkey.key --fullchain-file /opt/remnawave/nginx/fullchain.pem --alpn --tlsport 8443 --reloadcmd "docker exec remnawave-nginx nginx -s reload"
Assurez-vous que le port 8443 est ouvert sur votre serveur. Il est requis pour l'émission du certificat.

acme.sh --install-cert -d 'DOMAIN' --key-file /opt/remnawave/nginx/privkey.key --fullchain-file /opt/remnawave/nginx/fullchain.pem --reloadcmd "docker exec remnawave-nginx nginx -s reload"
Cela indique que le certificat a été émis. Acme.sh s'occupera de renouveler automatiquement le certificat tous les 60 jours — assurez-vous simplement que le port 8443 est ouvert (et non occupé) sur votre serveur.
Configuration de Nginx
Configuration simple
Créez un fichier appelé nginx.conf dans le répertoire /opt/remnawave/nginx.
cd /opt/remnawave/nginx && nano nginx.conf
Collez la configuration suivante.
Veuillez remplacer REPLACE_WITH_YOUR_DOMAIN par votre nom de domaine.
Consultez la configuration ci-dessous, recherchez les lignes surlignées en rouge.
upstream remnawave {
server remnawave:3000;
}
server {
server_name REPLACE_WITH_YOUR_DOMAIN;
listen 443 ssl reuseport;
listen [::]:443 ssl reuseport;
http2 on;
location / {
proxy_http_version 1.1;
proxy_pass http://remnawave;
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;
}
# SSL Configuration (Mozilla Intermediate Guidelines)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_certificate "/etc/nginx/ssl/fullchain.pem";
ssl_certificate_key "/etc/nginx/ssl/privkey.key";
ssl_trusted_certificate "/etc/nginx/ssl/fullchain.pem";
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
resolver_timeout 2s;
# Gzip Compression
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
Créer docker-compose.yml
Créez un fichier docker-compose.yml dans le répertoire /opt/remnawave/nginx.
cd /opt/remnawave/nginx && nano docker-compose.yml
Collez la configuration suivante.
services:
remnawave-nginx:
image: nginx:1.28
container_name: remnawave-nginx
hostname: remnawave-nginx
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./fullchain.pem:/etc/nginx/ssl/fullchain.pem:ro
- ./privkey.key:/etc/nginx/ssl/privkey.key:ro
restart: always
ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true
Démarrer le conteneur
docker compose up -d && docker compose logs -f -t
Ouvrir le panel dans le navigateur
Ouvrez le nom de domaine configuré dans le navigateur et vous verrez la page de connexion.
