Aller au contenu principal

Variables d'environnement

attention

Pour modifier les variables d'environnement, vous devez recréer les conteneurs Remnawave.
Un simple redémarrage des conteneurs ne remplace pas l'environnement à l'intérieur du conteneur !

Pour recréer le conteneur avec docker compose, exécutez docker compose down && docker compose up -d.

Modifier les variables d'environnement

Vous pouvez modifier les variables d'environnement en éditant le fichier .env. Il se trouve probablement dans /opt/remnawave.

Modifier le fichier .env
cd /opt/remnawave && nano .env

Ports

VariableDescriptionDéfaut
APP_PORTLe port sur lequel Remnawave Panel s'exécute3000
METRICS_PORTLe port pour les endpoints de métriques3001
Exemple
Fichier .env
APP_PORT=3000
METRICS_PORT=3001

Mise à l'échelle de l'API

Nombre d'instances d'API à démarrer.

Valeurs possibles :

  • max (démarrer des instances sur tous les cœurs)
  • <number> (démarrer des instances sur un nombre spécifique de cœurs)
  • -1 (démarrer des instances sur tous les cœurs - 1)

Laissez la valeur par défaut pour démarrer une seule instance.

La plupart des utilisateurs n'auront pas besoin de changer cette valeur, mais elle peut aider à obtenir de meilleures performances avec plus de 40 000 utilisateurs.

attention

Ne définissez pas cette valeur sur un nombre supérieur au nombre de cœurs CPU de votre machine.

VariableDescriptionDéfaut
API_INSTANCESLe nombre d'instances d'API à démarrer1
Exemple
Fichier .env
API_INSTANCES=1

Redis

VariableDescriptionDéfautRequis
REDIS_HOSTL'hôte du serveur Redisremnawave-redisOui
REDIS_PORTLe port du serveur Redis6379Oui
REDIS_DBLa base de données du serveur Redis0Non
REDIS_PASSWORDLe mot de passe du serveur RedisNon
REDIS_SOCKETLe socket du serveur RedisNon
Exemple
Fichier .env
REDIS_HOST=remnawave-redis
REDIS_PORT=6379

Base de données

Les variables ci-dessous ne sont pas utilisées par Remnawave, mais par le conteneur de base de données.

VariableDescriptionDéfautRequis
POSTGRES_USERLe nom d'utilisateur du serveur PostgrespostgresNon
POSTGRES_PASSWORDLe mot de passe du serveur PostgrespostgresNon
POSTGRES_DBLa base de données du serveur PostgrespostgresNon

Remnawave utilise une URL PostgreSQL pour se connecter à la base de données.

postgresql://{user}:{password}@{host}:{port}/{database}
Exemple DATABASE_URL
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Exemple
Fichier .env
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres

DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"

Clés secrètes

Il est recommandé d'utiliser un générateur de chaînes aléatoires pour créer des secrets d'une longueur minimale de 64 caractères.

danger

N'utilisez pas les identifiants par défaut en production. Assurez-vous de générer des secrets forts !

Générer des secrets
openssl rand -hex 64
VariableDescriptionDéfautRequis
JWT_AUTH_SECRETLa clé secrète pour le JWT d'authentificationchange_meOui
JWT_API_TOKENS_SECRETLa clé secrète pour le JWT des tokens APIchange_meOui
Exemple
Fichier .env
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key

Notifications Telegram

Chaque variable de notification utilise le format unifié : chat_id:thread_id, où thread_id est optionnel.

VariableDescriptionDéfautValeurs possibles
IS_TELEGRAM_NOTIFICATIONS_ENABLEDDésactiver/Activer les notifications Telegramfalsetrue, false
TELEGRAM_BOT_TOKENLe token du bot Telegram
TELEGRAM_BOT_API_ROOTURL racine personnalisée de l'API du bot Telegram (optionnel)https://api.telegram.org
TELEGRAM_BOT_PROXYProxy pour le bot Telegram (optionnel)protocol://user:password@host:port
TELEGRAM_NOTIFY_USERSNotifications sur les événements utilisateurschat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_NODESNotifications sur les événements des nœudschat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_CRMNotifications sur les événements CRMchat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_SERVICENotifications sur les événements de servicechat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKERNotifications sur les événements Torrent Blockerchat_id ou chat_id:thread_id
remarque

L'identifiant de chat de groupe Telegram commence toujours par -100.

Exemple
Fichier .env

# Désactiver/Activer les notifications Telegram
IS_TELEGRAM_NOTIFICATIONS_ENABLED=false

# Token du bot Telegram
TELEGRAM_BOT_TOKEN=change_me

# Optionnel : proxy pour le bot Telegram
# TELEGRAM_BOT_PROXY=socks5://user:password@host:port

# Notifications (format : chat_id ou chat_id:thread_id)
TELEGRAM_NOTIFY_USERS=change_me
TELEGRAM_NOTIFY_NODES=change_me
TELEGRAM_NOTIFY_CRM=change_me
TELEGRAM_NOTIFY_SERVICE=change_me
TELEGRAM_NOTIFY_TBLOCKER=change_me

Domaines

VariableDescriptionDéfautRequis
FRONT_END_DOMAINLe domaine du Panneau Remnawave. Utilisé pour définir les en-têtes CORS.*Oui
VariableDescriptionDéfautRequis
SUB_PUBLIC_DOMAINLe domaine et le chemin de l'URL d'abonnement publicexample.com/api/subOui
VariableDescriptionDéfautRequis
PANEL_DOMAINDomaine du panneau pour générer des liens directs (p. ex. dans les notifications Telegram avec des boutons inline)Non

SUB_PUBLIC_DOMAIN est utilisé pour définir l'URL d'abonnement public dans les réponses RestAPI/UI dans le tableau de bord.

astuce

Si vous l'utilisez avec le panneau, définissez-le simplement sur yourpanel.com/api/sub

Exemple
Fichier .env
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com

Documentation

VariableDescriptionDéfautValeurs possibles
IS_DOCS_ENABLEDDésactiver/Activer la documentationfalsetrue, false

IS_DOCS_ENABLED est utilisé pour désactiver/activer la documentation.

astuce

Vous pouvez utiliser la page API Keys dans le tableau de bord administrateur (quand IS_DOCS_ENABLED est défini sur true) pour un lien rapide vers la documentation.

VariableDescriptionDéfaut
SWAGGER_PATHLe chemin vers l'interface Swagger/docs
SCALAR_PATHLe chemin vers l'interface Scalar/scalar
Exemple
Fichier .env
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar

Métriques Prometheus

astuce

Vous pouvez générer un mot de passe aléatoire pour les métriques avec la commande suivante :

openssl rand -hex 64
VariableDescriptionDéfaut
METRICS_USERL'utilisateur pour les métriquesadmin
METRICS_PASSLe mot de passe pour les métriqueschange_me
Exemple
Fichier .env
METRICS_USER=admin
METRICS_PASS=change_me

Exemple de configuration Prometheus :

prometheus.yml
global:
# scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
scrape_configs:
- job_name: 'remnawave'
scheme: http
metrics_path: /metrics
static_configs:
- targets: ['remnawave:3001']
scrape_interval: 30s
basic_auth:
username: admin
password: change_me

Vous pouvez utiliser le tableau de bord Grafana prêt à l'emploi pour visualiser les métriques collectées : Remnawave Panel Dashboard

Exemple de métriques Prometheus
# HELP remnawave_node_online_users Number of online users on a node
# TYPE remnawave_node_online_users gauge
remnawave_node_online_users{node_uuid="d86d8c63-944c-4398-9cf4-c3882a54a5d5",app="remnawave"} 0

Webhook

VariableDescriptionDéfautValeurs possibles
WEBHOOK_ENABLEDActiver/Désactiver les notifications webhookfalsetrue, false
WEBHOOK_URLL'URL du webhook, peut être http:// ou https://
WEBHOOK_SECRET_HEADERClé pour la signature, au moins 32 caractères. Seuls a-z, 0-9, A-Z sont autorisés.
astuce

Vous pouvez générer un mot de passe aléatoire pour le secret webhook avec la commande suivante :

openssl rand -hex 64
Exemple
Fichier .env
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key

Notifications d'utilisation de la bande passante

VariableDescriptionDéfautValeurs possibles
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLEDActiver/Désactiver les notifications d'utilisation de la bande passantefalsetrue, false
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLDLe seuil pour les notifications d'utilisation de la bande passante. Uniquement en ordre croissant (exemple : [60, 80]), doit être un tableau valide d'entiers (min : 25, max : 95). Pas plus de 5 valeurs.
Exemple
Fichier .env
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]

Notifications d'utilisateurs non connectés

VariableDescriptionDéfautValeurs possibles
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLEDActiver/Désactiver les notifications d'utilisateurs non connectésfalsetrue, false
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURSLes heures après lesquelles envoyer des notifications pour les utilisateurs qui ne se sont pas connectés. Uniquement en ordre croissant (exemple : [6, 12, 24]), doit être un tableau valide d'entiers (min : 1, max : 168). Pas plus de 3 valeurs.
Exemple
Fichier .env
### Notification des utilisateurs non connectés (webhook, telegram)
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED=false
# Uniquement en ordre croissant (exemple : [6, 12, 24]), doit être un tableau valide d'entiers (min : 1, max : 168). Pas plus de 3 valeurs.
# Chaque valeur représente les HEURES écoulées depuis la création de l'utilisateur (user.createdAt)
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]

Divers

VariableDescriptionDéfautValeurs possibles
SHORT_UUID_LENGTHLa longueur de l'UUID court généré (abonnement). Longueur min. 16 et max. 6416
IS_HTTP_LOGGING_ENABLEDActiver/Désactiver la journalisation HTTPfalsetrue, false
ENABLE_DEBUG_LOGSActiver/Désactiver les journaux de débogagefalsetrue, false
JWT_AUTH_LIFETIMELa durée de vie du JWT d'authentification en heures. Valeurs possibles de 12 à 168.12
SERVICE_CLEAN_USAGE_HISTORYActiver/Désactiver le nettoyage de l'historique d'utilisationfalsetrue, false
SERVICE_DISABLE_USER_USAGE_RECORDSDésactiver l'enregistrement des données d'utilisation des utilisateursfalsetrue, false
USER_USAGE_IGNORE_BELOW_BYTESIgnorer l'utilisation de l'utilisateur en dessous de ce seuil (en octets, max 1048576)0
Exemple
Fichier .env
SHORT_UUID_LENGTH=16
IS_HTTP_LOGGING_ENABLED=true
ENABLE_DEBUG_LOGS=false
JWT_AUTH_LIFETIME=12
SERVICE_CLEAN_USAGE_HISTORY=false
SERVICE_DISABLE_USER_USAGE_RECORDS=false
USER_USAGE_IGNORE_BELOW_BYTES=0