Traefik
Vue d'ensemble
Dans ce guide, nous utiliserons Traefik comme proxy inverse pour accéder au panneau Remnawave. Nous pointerons un nom de domaine vers notre serveur et configurerons Traefik. Traefik s'occupera lui-même de l'émission des certificats SSL.
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.
Configuration de Traefik
Créer docker-compose.yml
Créez un fichier docker-compose.yml dans le répertoire /opt/remnawave/traefik.
mkdir -p /opt/remnawave/traefik && cd /opt/remnawave/traefik && nano docker-compose.yml
Collez la configuration suivante.
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- remnawave-network
ports:
- '0.0.0.0:80:80'
- '0.0.0.0:443:443'
environment:
- TZ=UTC
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/traefik.yml:ro
- ./letsencrypt:/letsencrypt
- ./config:/config:ro
- ./logs:/var/log/traefik
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true
Créer le fichier de configuration statique
Créez un fichier de configuration statique appelé traefik.yml dans le répertoire /opt/remnawave/traefik.
cd /opt/remnawave/traefik && nano traefik.yml
Collez la configuration suivante.
Veuillez remplacer REPLACE_WITH_YOUR_EMAIL par votre adresse e-mail.
Consultez la configuration ci-dessous, recherchez les lignes surlignées en jaune.
api:
dashboard: true
debug: true
entryPoints:
http:
address: ":80"
http:
redirections:
entryPoint:
to: https
scheme: https
https:
address: ":443"
serversTransport:
insecureSkipVerify: true
providers:
file:
directory: /config
watch: true
certificatesResolvers:
letsencrypt:
acme:
email: REPLACE_WITH_YOUR_EMAIL
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: http
log:
level: "INFO"
filePath: "/var/log/traefik/traefik.log"
accessLog:
filePath: "/var/log/traefik/access.log"
Créer le fichier de configuration dynamique
Créez un fichier appelé remnawave.yml dans le répertoire /opt/remnawave/traefik/config.
mkdir -p /opt/remnawave/traefik/config && cd /opt/remnawave/traefik/config && nano remnawave.yml
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 jaune.
http:
routers:
remnawave:
rule: "Host(`REPLACE_WITH_YOUR_DOMAIN`)"
entrypoints:
- https
middlewares:
- remnawave-https-redirect
tls:
certResolver: letsencrypt
service: remnawave
middlewares:
remnawave-https-redirect:
redirectScheme:
scheme: https
services:
remnawave:
loadBalancer:
servers:
- url: "http://remnawave:3000"
Démarrer le conteneur
docker compose up -d && docker compose logs -f -t
Restreindre l'accès au panneau par IP
Si vous souhaitez restreindre l'accès au panneau par IP, vous pouvez créer un fichier middleware nommé ip_allow_list.yml.
cd /opt/remnawave/traefik/config && nano ip_allow_list.yml
Collez la configuration suivante.
Veuillez remplacer REPLACE_WITH_YOUR_IP par votre adresse IP autorisée (ou plages d'IP en notation CIDR).
Consultez la configuration ci-dessous, recherchez les lignes surlignées en jaune.
Si votre nom de domaine est proxié par Cloudflare, vous devez spécifier les plages IP de Cloudflare dans la liste excludedIPs.
Cloudflare met régulièrement à jour ses plages IP, il est donc recommandé d'utiliser la page officielle Cloudflare pour obtenir une liste à jour.
http:
middlewares:
ip-allow-list:
ipAllowList:
sourceRange:
- "REPLACE_WITH_YOUR_IP"
ipStrategy:
excludedIPs:
- 73.245.48.0/20
- 103.21.244.0/22
- 103.22.200.0/22
- 103.31.4.0/22
- 141.101.64.0/18
- 108.162.192.0/18
- 190.93.240.0/20
- 188.114.96.0/20
- 197.234.240.0/22
- 198.41.128.0/17
- 162.158.0.0/15
- 104.16.0.0/13
- 104.24.0.0/14
- 172.64.0.0/13
- 131.0.72.0/22
Vous devez ensuite ajouter le middleware ip-allow-list au fichier de configuration remnawave.yml.
nano remnawave.yml
Faites attention à la ligne verte qui est celle à ajouter.
http:
routers:
remnawave:
rule: 'Host(`REPLACE_WITH_YOUR_DOMAIN`)'
entrypoints:
- https
middlewares:
- remnawave-https-redirect
- ip-allow-list
tls:
certResolver: letsencrypt
service: remnawave
middlewares:
remnawave-https-redirect:
redirectScheme:
scheme: https
services:
remnawave:
loadBalancer:
servers:
- url: 'http://remnawave:3000'
Permettre l'accès public au chemin d'abonnement
Pour que le système d'abonnement fonctionne correctement, le chemin /api/sub/ doit être publiquement accessible.
En même temps, le reste du panneau doit rester protégé par des restrictions basées sur l'IP.
Pour ce faire, vous devez définir deux routeurs séparés pour le même domaine — un pour /api/sub/ (accès ouvert) et un pour tout le reste (restreint).
Ouvrez à nouveau le fichier remnawave.yml :
nano /opt/remnawave/traefik/config/remnawave.yml
Et mettez à jour la configuration du routeur comme suit :
http:
routers:
remnawave-sub:
rule: "Host(`REPLACE_WITH_YOUR_DOMAIN`) && PathPrefix(`/api/sub/`)"
middlewares:
- remnawave-https-redirect
entrypoints:
- https
service: remnawave
tls:
certResolver: letsencrypt
remnawave-secure:
rule: "Host(`REPLACE_WITH_YOUR_DOMAIN`)"
entrypoints:
- https
middlewares:
- remnawave-https-redirect
- ip-allow-list
service: remnawave
tls:
certResolver: letsencrypt
middlewares:
remnawave-https-redirect:
redirectScheme:
scheme: https
services:
remnawave:
loadBalancer:
servers:
- url: "http://remnawave:3000"
Cette configuration rend le chemin /api/sub/ publiquement accessible, tandis que le reste du panneau reste restreint par IP.
Ouvrir le panel dans le navigateur
Ouvrez le nom de domaine configuré dans le navigateur et vous verrez la page de connexion.
