Zum Hauptinhalt springen

Caddy mit benutzerdefiniertem Pfad

Caddy ist ein leistungsstarker und flexibler Webserver, der zur Absicherung Ihres Remnawave-Panels verwendet werden kann.

Installation

Erstellen Sie zunächst ein Verzeichnis für Caddy.

mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy

Erstellen Sie dann eine docker-compose.yml-Datei.

touch docker-compose.yml && nano docker-compose.yml

Und fügen Sie folgenden Inhalt zur Datei hinzu:

docker-compose.yml
services:
remnawave-caddy:
image: remnawave/caddy-with-auth:latest
container_name: 'remnawave-caddy'
hostname: remnawave-caddy
restart: always
environment:
- AUTH_TOKEN_LIFETIME=3600
- REMNAWAVE_PANEL_DOMAIN=PANEL_DOMAIN
- REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute
- AUTHP_ADMIN_USER=LOGIN_USERNAME
- AUTHP_ADMIN_EMAIL=LOGIN_EMAIL
- AUTHP_ADMIN_SECRET=LOGIN_PASSWORD

ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- remnawave-caddy-ssl-data:/data

networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true

volumes:
remnawave-caddy-ssl-data:
driver: local
external: false
name: remnawave-caddy-ssl-data

.env-Variablen konfigurieren

Sie müssen einen Domainnamen für Ihr Remnawave-Panel festlegen. Caddy stellt automatisch ein Zertifikat dafür aus.

REMNAWAVE_PANEL_DOMAIN=panel.domain.com

Benutzerdefinierter Login-Pfad. Dieser Pfad wird NUR für die Login-Seite verwendet. Es erfolgt keine Weiterleitung, wenn Sie das Dashboard ohne vorherige Authentifizierung öffnen. Nur Personen, die diesen Pfad kennen, können auf das Panel zugreifen.

REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute

Admin-Anmeldedaten. Stellen Sie sicher, dass Sie ein starkes Passwort verwenden.

AUTHP_ADMIN_USER=admin
AUTHP_ADMIN_EMAIL=[email protected]
AUTHP_ADMIN_SECRET=strong_password

Token-Lebensdauer.

AUTH_TOKEN_LIFETIME=3600

Caddyfile

Tauchen wir tiefer in das Caddyfile ein.

Zunächst müssen Sie eines unserer vordefinierten Setups auswählen.

info

Wir empfehlen, das vollständige Sicherheits-Setup mit MFA für Produktionsumgebungen zu verwenden, in denen Sie API-Schlüssel ausstellen werden.

gefahr

Sie können sich nur über diesen Pfad (REMNAWAVE_CUSTOM_LOGIN_ROUTE) anmelden.

Vollständiges Sicherheits-Setup mit MFA

  • Alle Routen sind durch Authentifizierung geschützt. (Frontend, Backend)
  • Alle API-Endpunkte sind geschützt, einschließlich /api/sub/*-Endpunkte.
  • Login erfordert MFA mit OTP-Codes.
  • Spezielle API-Schlüssel können für /api/*-Endpunkte ausgestellt werden.
  • Vollständiger Domain-Schutz.

Führen Sie den folgenden Befehl aus, um das Caddyfile herunterzuladen.

curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-and-protected-api-route/Caddyfile

API-Routen ohne Authentifizierung (api/*)

  • Routen sind durch Authentifizierung geschützt. (Frontend)
  • Login erfordert MFA mit OTP-Codes. (Frontend)
  • Alle API-Endpunkte sind nicht geschützt! (/api/* ist öffentlich)
gefahr

Dieses Setup legt die /api/*-Endpunkte dem öffentlichen Internet offen.

Alle Endpunkte erfordern keine Authentifizierung, verwenden aber weiterhin die Remnawave-Sicherheitsfunktionen.

Wir empfehlen, das vollständige Sicherheits-Setup mit MFA für Produktionsumgebungen zu verwenden, in denen Sie API-Schlüssel ausstellen werden.

Führen Sie den folgenden Befehl aus, um das Caddyfile herunterzuladen.

curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-with-api-without-auth/Caddyfile

/api/sub/*-Endpunkte ohne Authentifizierung

  • Routen sind durch Authentifizierung geschützt. (Frontend)
  • Login erfordert MFA mit OTP-Codes. (Frontend)
  • Nur /api/sub/*-Endpunkte sind öffentlich, andere Endpunkte sind geschützt.
gefahr

Dieses Setup legt die /api/sub/*-Endpunkte dem öffentlichen Internet offen.

Wir empfehlen, das vollständige Sicherheits-Setup mit MFA für Produktionsumgebungen zu verwenden, in denen Sie API-Schlüssel ausstellen und @remnawave/subscription-page für öffentliche Abonnementseiten verwenden werden.

Führen Sie den folgenden Befehl aus, um das Caddyfile herunterzuladen.

curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-with-opened-api-sub/Caddyfile

Container starten

Nachdem Sie eines der obigen Setups ausgewählt haben, können Sie den Container mit folgendem Befehl starten.

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

Auf das Panel zugreifen

Nachdem der Container läuft, können Sie das Panel unter https://panel.domain.com/REMNAWAVE_CUSTOM_LOGIN_ROUTE aufrufen.

Beim ersten Start werden Sie aufgefordert, eine MFA-Methode hinzuzufügen.

Wir empfehlen die Verwendung von Google Authenticator.

MFA deaktivieren

Wenn Sie MFA vollständig deaktivieren möchten, können Sie dies durch Bearbeiten des Caddyfile tun.

Öffnen Sie das Caddyfile und ändern Sie die folgende Zeile:

cd /opt/remnawave/caddy && nano Caddyfile

Suchen Sie die folgenden Zeilen und entfernen Sie die Zeile require mfa.

Caddyfile
transform user {
match origin local
action add role authp/admin
require mfa
}

Danach können Sie den Container mit folgendem Befehl neu starten.

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

Auf die Auth-Portal-Seite zugreifen

info

Sie können die Auth-Portal-Seite unter https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth aufrufen.

Auth Portal page

Hier können Sie schnell zum Remnawave-Dashboard wechseln oder einige Auth-Portal-Einstellungen verwalten.

Im MFA-Bereich können Sie MFA-Methoden löschen oder neue hinzufügen.

API-Schlüssel ausstellen

info

Sie können die Auth-Portal-Seite unter https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth aufrufen.

Auf der Auth-Portal-Seite können Sie API-Schlüssel ausstellen. Klicken Sie auf den Tab API-keys.

info

Nachdem Sie einen API-Schlüssel ausgestellt haben, können Sie ihn im X-Api-Key-Header Ihrer API-Anfragen verwenden.

Beispiel: X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ

API-keys