Zum Hauptinhalt springen

Traefik

Übersicht

In dieser Anleitung verwenden wir Traefik als Reverse Proxy für den Zugriff auf das Remnawave Panel. Wir richten den Domainnamen auf unseren Server aus und konfigurieren Traefik. Traefik übernimmt selbst die Ausstellung der SSL-Zertifikate.

warnung

Sie benötigen einen registrierten Domainnamen, um fortzufahren.

Domain auf Ihren Server zeigen

Überprüfen Sie die IP-Adresse Ihres Servers. Es ist besser, eine statische IPv4-Adresse zu verwenden.

Jetzt müssen Sie Ihren Domainnamen auf diese IP-Adresse zeigen.

Zum Beispiel wird es my-super-panel.com -> 193.122.122.122 sein.

Es gibt zwei Möglichkeiten, dies zu tun:

  1. Einen DNS-Anbieter verwenden (z.B. Cloudflare, Google Cloud, etc.)
  2. Einen Registrar verwenden (z.B. Namecheap, etc.)

DNS-Anbieter

Wenn Sie Cloudflare verwenden, müssen Sie einen A/AAAA-Eintrag (für IPv4 bzw. IPv6) zu Ihren DNS-Einträgen hinzufügen.

Melden Sie sich hier bei Ihrem Cloudflare-Konto an und wählen Sie die gewünschte Domain.

Klicken Sie auf der linken Seite der Seite auf DNS und dann auf Records. Klicken Sie auf Create record.
Setzen Sie den Type auf A und den Name auf @.

info

Wenn Sie Subdomains verwenden möchten, sollten Sie den Subdomain-Namen (z.B. panel) im Feld Name eingeben.

Geben Sie die IP-Adresse Ihres Servers in das Feld IPv4 address ein und klicken Sie auf Save.

Jetzt müssen Sie eine Weile warten, bis die DNS-Einträge aktualisiert werden.

info

Es gibt einen großen Unterschied zwischen der gelben Wolke (Domain wird durch Cloudflare geleitet) und der grauen Wolke (Domain wird nicht durch Cloudflare geleitet) im Cloudflare-Kontrollpanel.

Wenn Cloudflare in Ihrer Region gut funktioniert, ist es besser, die Domain durch Cloudflare zu leiten. (Gelbe Wolke)

static

Einige DNS-Anbieter haben eine andere Oberfläche, aber der Gesamtprozess ist derselbe.

Traefik-Konfiguration

docker-compose.yml erstellen

Erstellen Sie eine docker-compose.yml-Datei im Verzeichnis /opt/remnawave/traefik.

mkdir -p /opt/remnawave/traefik && cd /opt/remnawave/traefik && nano docker-compose.yml

Fügen Sie die folgende Konfiguration ein.

docker-compose.yml
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

Statische Konfigurationsdatei erstellen

Erstellen Sie eine statische Konfigurationsdatei namens traefik.yml im Verzeichnis /opt/remnawave/traefik.

cd /opt/remnawave/traefik && nano traefik.yml

Fügen Sie die folgende Konfiguration ein.

warnung

Bitte ersetzen Sie REPLACE_WITH_YOUR_EMAIL durch Ihre E-Mail-Adresse.

Überprüfen Sie die folgende Konfiguration, achten Sie auf gelb markierte Zeilen.

traefik.yml
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"

Dynamische Konfigurationsdatei erstellen

Erstellen Sie eine Datei namens remnawave.yml im Verzeichnis /opt/remnawave/traefik/config.

mkdir -p /opt/remnawave/traefik/config && cd /opt/remnawave/traefik/config && nano remnawave.yml

Fügen Sie die folgende Konfiguration ein.

warnung

Bitte ersetzen Sie REPLACE_WITH_YOUR_DOMAIN durch Ihren Domainnamen.

Überprüfen Sie die folgende Konfiguration, achten Sie auf gelb markierte Zeilen.

remnawave.yml
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"

Container starten

docker compose up -d && docker compose logs -f -t

Zugriff auf das Panel per IP einschränken

Wenn Sie den Zugriff auf das Panel per IP einschränken möchten, können Sie eine Middleware-Datei namens ip_allow_list.yml erstellen.

cd /opt/remnawave/traefik/config && nano ip_allow_list.yml

Fügen Sie die folgende Konfiguration ein.

warnung

Bitte ersetzen Sie REPLACE_WITH_YOUR_IP durch Ihre erlaubte IP-Adresse (oder IP-Bereiche in CIDR-Notation).

Überprüfen Sie die folgende Konfiguration, achten Sie auf gelb markierte Zeilen.

info

Wenn Ihr Domainname über Cloudflare proxied wird, müssen Sie die IP-Bereiche von Cloudflare in der excludedIPs-Liste angeben.

Cloudflare aktualisiert seine IP-Bereiche regelmäßig, daher empfiehlt es sich, die offizielle Cloudflare-Seite für eine aktuelle Liste zu verwenden.

ip_allow_list.yml
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

Dann müssen Sie die Middleware ip-allow-list zur Konfigurationsdatei remnawave.yml hinzufügen.

nano remnawave.yml

Achten Sie auf die grüne Zeile — diese müssen Sie hinzufügen.

remnawave.yml
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'

Öffentlichen Zugriff auf den Abonnementpfad erlauben

Damit das Abonnentsystem korrekt funktioniert, muss der Pfad /api/sub/ öffentlich zugänglich sein. Gleichzeitig soll der Rest des Panels durch IP-basierte Einschränkungen geschützt bleiben.

Dazu müssen Sie zwei separate Router für dieselbe Domain definieren — einen für /api/sub/ (offener Zugang) und einen für alles andere (eingeschränkt).

Öffnen Sie die Datei remnawave.yml erneut:

nano /opt/remnawave/traefik/config/remnawave.yml

Und aktualisieren Sie die Router-Konfiguration wie folgt:

remnawave.yml
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"

Diese Konfiguration macht den Pfad /api/sub/ öffentlich zugänglich, während der Rest des Panels IP-eingeschränkt bleibt.

Panel im Browser öffnen

Öffnen Sie den konfigurierten Domainnamen im Browser und Sie sehen die Anmeldeseite.

login-page

Fehlerbehebung