Aller au contenu principal

Caddy avec chemin personnalisé

Caddy est un serveur web puissant et flexible qui peut être utilisé pour sécuriser votre panel Remnawave.

Installation

Tout d'abord, créez un répertoire pour Caddy.

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

Créez ensuite un fichier docker-compose.yml.

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

Et ajoutez le contenu suivant au fichier :

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

Configuration des variables .env

Vous devez définir un nom de domaine pour votre panel Remnawave. Caddy émettra automatiquement un certificat pour celui-ci.

REMNAWAVE_PANEL_DOMAIN=panel.domain.com

Chemin de connexion personnalisé. Ce chemin sera utilisé UNIQUEMENT pour la page de connexion. Il n'y aura pas de redirection si vous ouvrez le tableau de bord sans vous être préalablement authentifié. Seules les personnes connaissant ce chemin pourront accéder au panel.

REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute

Identifiants administrateur. Assurez-vous d'utiliser un mot de passe fort.

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

Durée de vie du token.

AUTH_TOKEN_LIFETIME=3600

Caddyfile

Plongeons dans le Caddyfile.

Tout d'abord, vous devez sélectionner l'une de nos configurations prédéfinies.

info

Nous recommandons d'utiliser la configuration de sécurité complète avec MFA pour les environnements de production où vous émettrez des clés API.

danger

Vous ne pourrez vous connecter que via ce chemin (REMNAWAVE_CUSTOM_LOGIN_ROUTE).

Configuration de sécurité complète avec MFA

  • Toutes les routes sont protégées par authentification. (Frontend, Backend)
  • Tous les endpoints API sont protégés, y compris les endpoints /api/sub/*.
  • La connexion nécessite MFA avec des codes OTP.
  • Des clés API spéciales peuvent être émises pour les endpoints /api/*.
  • Protection complète du domaine.

Exécutez la commande ci-dessous pour télécharger le Caddyfile.

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

Routes API sans authentification (api/*)

  • Les routes sont protégées par authentification. (Frontend)
  • La connexion nécessite MFA avec des codes OTP. (Frontend)
  • Tous les endpoints API ne sont pas protégés ! (/api/* est public)
danger

Cette configuration expose les endpoints /api/* à Internet public.

Tous les endpoints ne nécessiteront pas d'authentification, mais utiliseront toujours les fonctionnalités de sécurité de Remnawave.

Nous recommandons d'utiliser la configuration de sécurité complète avec MFA pour les environnements de production où vous émettrez des clés API.

Exécutez la commande ci-dessous pour télécharger le Caddyfile.

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

Endpoints /api/sub/* sans authentification

  • Les routes sont protégées par authentification. (Frontend)
  • La connexion nécessite MFA avec des codes OTP. (Frontend)
  • Seuls les endpoints /api/sub/* sont publics, les autres sont protégés.
danger

Cette configuration expose les endpoints /api/sub/* à Internet public.

Nous recommandons d'utiliser la configuration de sécurité complète avec MFA pour les environnements de production où vous émettrez des clés API et utiliserez @remnawave/subscription-page pour la page d'abonnement publique.

Exécutez la commande ci-dessous pour télécharger le Caddyfile.

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

Démarrage du conteneur

Après avoir sélectionné l'une des configurations ci-dessus, vous pouvez démarrer le conteneur avec la commande suivante.

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

Accès au panel

Une fois le conteneur en cours d'exécution, vous pouvez accéder au panel à l'adresse https://panel.domain.com/REMNAWAVE_CUSTOM_LOGIN_ROUTE.

Au premier démarrage, il vous sera demandé d'ajouter une méthode MFA.

Nous recommandons d'utiliser Google Authenticator.

Désactiver MFA

Si vous souhaitez désactiver complètement MFA, vous pouvez le faire en modifiant le Caddyfile.

Ouvrez le Caddyfile et modifiez la ligne suivante :

cd /opt/remnawave/caddy && nano Caddyfile

Trouvez les lignes suivantes et supprimez la ligne require mfa.

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

Après cela, vous pouvez redémarrer le conteneur avec la commande suivante.

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

Accès à la page du Portail d'Authentification

info

Vous pouvez accéder à la page du Portail d'Authentification à l'adresse https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth.

Auth Portal page

Ici, vous pouvez accéder rapidement au tableau de bord Remnawave ou gérer certains paramètres du Portail d'Authentification.

Dans la section MFA, vous pouvez supprimer ou ajouter de nouvelles méthodes MFA.

Émission de clés API

info

Vous pouvez accéder à la page du Portail d'Authentification à l'adresse https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth.

Sur la page du Portail d'Authentification, vous pouvez émettre des clés API. Cliquez sur l'onglet API-keys.

info

Après avoir émis une clé API, vous pouvez l'utiliser dans l'en-tête X-Api-Key de vos requêtes vers l'API.

Exemple : X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ

API-keys