Variables d'environnement
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.
cd /opt/remnawave && nano .env
Ports
| Variable | Description | Défaut |
|---|---|---|
APP_PORT | Le port sur lequel Remnawave Panel s'exécute | 3000 |
METRICS_PORT | Le port pour les endpoints de métriques | 3001 |
Exemple
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.
Ne définissez pas cette valeur sur un nombre supérieur au nombre de cœurs CPU de votre machine.
| Variable | Description | Défaut |
|---|---|---|
API_INSTANCES | Le nombre d'instances d'API à démarrer | 1 |
Exemple
API_INSTANCES=1
Redis
| Variable | Description | Défaut | Requis |
|---|---|---|---|
REDIS_HOST | L'hôte du serveur Redis | remnawave-redis | Oui |
REDIS_PORT | Le port du serveur Redis | 6379 | Oui |
REDIS_DB | La base de données du serveur Redis | 0 | Non |
REDIS_PASSWORD | Le mot de passe du serveur Redis | Non | |
REDIS_SOCKET | Le socket du serveur Redis | Non |
Exemple
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.
| Variable | Description | Défaut | Requis |
|---|---|---|---|
POSTGRES_USER | Le nom d'utilisateur du serveur Postgres | postgres | Non |
POSTGRES_PASSWORD | Le mot de passe du serveur Postgres | postgres | Non |
POSTGRES_DB | La base de données du serveur Postgres | postgres | Non |
Remnawave utilise une URL PostgreSQL pour se connecter à la base de données.
postgresql://{user}:{password}@{host}:{port}/{database}
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Exemple
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.
N'utilisez pas les identifiants par défaut en production. Assurez-vous de générer des secrets forts !
openssl rand -hex 64
| Variable | Description | Défaut | Requis |
|---|---|---|---|
JWT_AUTH_SECRET | La clé secrète pour le JWT d'authentification | change_me | Oui |
JWT_API_TOKENS_SECRET | La clé secrète pour le JWT des tokens API | change_me | Oui |
Exemple
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.
| Variable | Description | Défaut | Valeurs possibles |
|---|---|---|---|
IS_TELEGRAM_NOTIFICATIONS_ENABLED | Désactiver/Activer les notifications Telegram | false | true, false |
TELEGRAM_BOT_TOKEN | Le token du bot Telegram | ||
TELEGRAM_BOT_API_ROOT | URL racine personnalisée de l'API du bot Telegram (optionnel) | https://api.telegram.org | |
TELEGRAM_BOT_PROXY | Proxy pour le bot Telegram (optionnel) | protocol://user:password@host:port | |
TELEGRAM_NOTIFY_USERS | Notifications sur les événements utilisateurs | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_NODES | Notifications sur les événements des nœuds | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_CRM | Notifications sur les événements CRM | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_SERVICE | Notifications sur les événements de service | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_TBLOCKER | Notifications sur les événements Torrent Blocker | chat_id ou chat_id:thread_id |
L'identifiant de chat de groupe Telegram commence toujours par -100.
Exemple
# 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
| Variable | Description | Défaut | Requis |
|---|---|---|---|
FRONT_END_DOMAIN | Le domaine du Panneau Remnawave. Utilisé pour définir les en-têtes CORS. | * | Oui |
| Variable | Description | Défaut | Requis |
|---|---|---|---|
SUB_PUBLIC_DOMAIN | Le domaine et le chemin de l'URL d'abonnement public | example.com/api/sub | Oui |
| Variable | Description | Défaut | Requis |
|---|---|---|---|
PANEL_DOMAIN | Domaine 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.
Si vous l'utilisez avec le panneau, définissez-le simplement sur yourpanel.com/api/sub
Exemple
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com
Documentation
| Variable | Description | Défaut | Valeurs possibles |
|---|---|---|---|
IS_DOCS_ENABLED | Désactiver/Activer la documentation | false | true, false |
IS_DOCS_ENABLED est utilisé pour désactiver/activer la documentation.
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.
| Variable | Description | Défaut |
|---|---|---|
SWAGGER_PATH | Le chemin vers l'interface Swagger | /docs |
SCALAR_PATH | Le chemin vers l'interface Scalar | /scalar |
Exemple
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar
Métriques Prometheus
Vous pouvez générer un mot de passe aléatoire pour les métriques avec la commande suivante :
openssl rand -hex 64
| Variable | Description | Défaut |
|---|---|---|
METRICS_USER | L'utilisateur pour les métriques | admin |
METRICS_PASS | Le mot de passe pour les métriques | change_me |
Exemple
METRICS_USER=admin
METRICS_PASS=change_me
Exemple de configuration Prometheus :
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
| Variable | Description | Défaut | Valeurs possibles |
|---|---|---|---|
WEBHOOK_ENABLED | Activer/Désactiver les notifications webhook | false | true, false |
WEBHOOK_URL | L'URL du webhook, peut être http:// ou https:// | ||
WEBHOOK_SECRET_HEADER | Clé pour la signature, au moins 32 caractères. Seuls a-z, 0-9, A-Z sont autorisés. |
Vous pouvez générer un mot de passe aléatoire pour le secret webhook avec la commande suivante :
openssl rand -hex 64
Exemple
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key
Notifications d'utilisation de la bande passante
| Variable | Description | Défaut | Valeurs possibles |
|---|---|---|---|
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED | Activer/Désactiver les notifications d'utilisation de la bande passante | false | true, false |
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD | Le 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
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]
Notifications d'utilisateurs non connectés
| Variable | Description | Défaut | Valeurs possibles |
|---|---|---|---|
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED | Activer/Désactiver les notifications d'utilisateurs non connectés | false | true, false |
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS | Les 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
### 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
| Variable | Description | Défaut | Valeurs possibles |
|---|---|---|---|
SHORT_UUID_LENGTH | La longueur de l'UUID court généré (abonnement). Longueur min. 16 et max. 64 | 16 | |
IS_HTTP_LOGGING_ENABLED | Activer/Désactiver la journalisation HTTP | false | true, false |
ENABLE_DEBUG_LOGS | Activer/Désactiver les journaux de débogage | false | true, false |
JWT_AUTH_LIFETIME | La durée de vie du JWT d'authentification en heures. Valeurs possibles de 12 à 168. | 12 | |
SERVICE_CLEAN_USAGE_HISTORY | Activer/Désactiver le nettoyage de l'historique d'utilisation | false | true, false |
SERVICE_DISABLE_USER_USAGE_RECORDS | Désactiver l'enregistrement des données d'utilisation des utilisateurs | false | true, false |
USER_USAGE_IGNORE_BELOW_BYTES | Ignorer l'utilisation de l'utilisateur en dessous de ce seuil (en octets, max 1048576) | 0 |
Exemple
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