Umgebungsvariablen
Um Umgebungsvariablen zu ändern, müssen Sie die Remnawave-Container neu erstellen.
Ein einfacher Neustart der Container ersetzt die Umgebung im Container nicht!
Um den Container mit docker compose neu zu erstellen, führen Sie docker compose down && docker compose up -d aus.
Umgebungsvariablen ändern
Sie können Umgebungsvariablen ändern, indem Sie die .env-Datei bearbeiten. Sie befindet sich wahrscheinlich in /opt/remnawave.
cd /opt/remnawave && nano .env
Ports
| Variable | Beschreibung | Standard |
|---|---|---|
APP_PORT | Der Port, auf dem Remnawave Panel läuft | 3000 |
METRICS_PORT | Der Port für Metrics-Endpunkte | 3001 |
Beispiel
APP_PORT=3000
METRICS_PORT=3001
API-Skalierung
Anzahl der zu startenden API-Instanzen.
Mögliche Werte:
max(Instanzen auf allen Kernen starten)<number>(Instanzen auf einer bestimmten Anzahl von Kernen starten)-1(Instanzen auf allen Kernen - 1 starten)
Belassen Sie den Standardwert, um nur 1 Instanz zu starten.
Die meisten Benutzer müssen diesen Wert nicht ändern, aber er kann helfen, bessere Leistung mit 40.000+ Benutzern zu erzielen.
Setzen Sie diesen Wert nicht auf eine Zahl größer als die Anzahl der CPU-Kerne Ihres Rechners.
| Variable | Beschreibung | Standard |
|---|---|---|
API_INSTANCES | Die Anzahl der zu startenden API-Instanzen | 1 |
Beispiel
API_INSTANCES=1
Redis
| Variable | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
REDIS_HOST | Der Host des Redis-Servers | remnawave-redis | Ja |
REDIS_PORT | Der Port des Redis-Servers | 6379 | Ja |
REDIS_DB | Die Datenbank des Redis-Servers | 0 | Nein |
REDIS_PASSWORD | Das Passwort des Redis-Servers | Nein | |
REDIS_SOCKET | Der Socket des Redis-Servers | Nein |
Beispiel
REDIS_HOST=remnawave-redis
REDIS_PORT=6379
Datenbank
Die folgenden Variablen werden nicht von Remnawave, sondern vom Datenbankcontainer verwendet.
| Variable | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
POSTGRES_USER | Der Benutzername des Postgres-Servers | postgres | Nein |
POSTGRES_PASSWORD | Das Passwort des Postgres-Servers | postgres | Nein |
POSTGRES_DB | Die Datenbank des Postgres-Servers | postgres | Nein |
Remnawave verwendet eine PostgreSQL-URL, um sich mit der Datenbank zu verbinden.
postgresql://{user}:{password}@{host}:{port}/{database}
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Beispiel
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Geheime Schlüssel
Es wird empfohlen, einen Zufallsstring-Generator zu verwenden, um Secrets mit einer Mindestlänge von 64 Zeichen zu erstellen.
Verwenden Sie die Standardanmeldedaten nicht in der Produktion. Stellen Sie sicher, dass Sie starke Secrets generieren!
openssl rand -hex 64
| Variable | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
JWT_AUTH_SECRET | Der geheime Schlüssel für das Auth-JWT | change_me | Ja |
JWT_API_TOKENS_SECRET | Der geheime Schlüssel für das API-Tokens-JWT | change_me | Ja |
Beispiel
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key
Telegram-Benachrichtigungen
Jede Benachrichtigungsvariable verwendet das einheitliche Format: chat_id:thread_id, wobei thread_id optional ist.
| Variable | Beschreibung | Standard | Mögliche Werte |
|---|---|---|---|
IS_TELEGRAM_NOTIFICATIONS_ENABLED | Telegram-Benachrichtigungen deaktivieren/aktivieren | false | true, false |
TELEGRAM_BOT_TOKEN | Das Token für den Telegram-Bot | ||
TELEGRAM_BOT_API_ROOT | Benutzerdefinierte Telegram Bot API Root-URL (optional) | https://api.telegram.org | |
TELEGRAM_BOT_PROXY | Proxy für Telegram Bot (optional) | protocol://user:password@host:port | |
TELEGRAM_NOTIFY_USERS | Benachrichtigungen über Benutzerereignisse | chat_id oder chat_id:thread_id | |
TELEGRAM_NOTIFY_NODES | Benachrichtigungen über Node-Ereignisse | chat_id oder chat_id:thread_id | |
TELEGRAM_NOTIFY_CRM | Benachrichtigungen über CRM-Ereignisse | chat_id oder chat_id:thread_id | |
TELEGRAM_NOTIFY_SERVICE | Benachrichtigungen über Service-Ereignisse | chat_id oder chat_id:thread_id | |
TELEGRAM_NOTIFY_TBLOCKER | Benachrichtigungen über Torrent Blocker-Ereignisse | chat_id oder chat_id:thread_id |
Telegram-Gruppen-Chat-ID beginnt immer mit -100.
Beispiel
# Telegram-Benachrichtigungen deaktivieren/aktivieren
IS_TELEGRAM_NOTIFICATIONS_ENABLED=false
# Telegram-Bot-Token
TELEGRAM_BOT_TOKEN=change_me
# Optional: Proxy für Telegram Bot
# TELEGRAM_BOT_PROXY=socks5://user:password@host:port
# Benachrichtigungen (Format: chat_id oder 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
Domains
| Variable | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
FRONT_END_DOMAIN | Die Domain des Remnawave Panels. Wird zum Setzen von CORS-Headern verwendet. | * | Ja |
| Variable | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
SUB_PUBLIC_DOMAIN | Die Domain und der Pfad der öffentlichen Abonnement-URL | example.com/api/sub | Ja |
| Variable | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
PANEL_DOMAIN | Panel-Domain zur Generierung direkter Links (z.B. in Telegram-Benachrichtigungen mit Inline-Buttons) | Nein |
SUB_PUBLIC_DOMAIN wird verwendet, um die öffentliche Abonnement-URL in RestAPI-Antworten/UI im Dashboard festzulegen.
Wenn Sie es mit dem Panel verwenden, setzen Sie es einfach auf yourpanel.com/api/sub
Beispiel
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com
Dokumentation
| Variable | Beschreibung | Standard | Mögliche Werte |
|---|---|---|---|
IS_DOCS_ENABLED | Dokumentation deaktivieren/aktivieren | false | true, false |
IS_DOCS_ENABLED wird verwendet, um die Dokumentation zu deaktivieren/aktivieren.
Sie können die Seite API Keys im Admin-Dashboard (wenn IS_DOCS_ENABLED auf true gesetzt ist) für einen schnellen Link zur Dokumentation verwenden.
| Variable | Beschreibung | Standard |
|---|---|---|
SWAGGER_PATH | Der Pfad zur Swagger-Benutzeroberfläche | /docs |
SCALAR_PATH | Der Pfad zur Scalar-Benutzeroberfläche | /scalar |
Beispiel
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar
Prometheus-Metriken
Sie können ein zufälliges Passwort für die Metriken mit dem folgenden Befehl generieren:
openssl rand -hex 64
| Variable | Beschreibung | Standard |
|---|---|---|
METRICS_USER | Der Benutzer für die Metriken | admin |
METRICS_PASS | Das Passwort für die Metriken | change_me |
Beispiel
METRICS_USER=admin
METRICS_PASS=change_me
Prometheus-Beispielkonfiguration:
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
Sie können das vorgefertigte Grafana-Dashboard verwenden, um gesammelte Metriken zu visualisieren: Remnawave Panel Dashboard
Prometheus-Metriken Beispiel
# 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 | Beschreibung | Standard | Mögliche Werte |
|---|---|---|---|
WEBHOOK_ENABLED | Webhook-Benachrichtigungen aktivieren/deaktivieren | false | true, false |
WEBHOOK_URL | Die URL des Webhooks, kann http:// oder https:// sein | ||
WEBHOOK_SECRET_HEADER | Schlüssel für die Signatur, mindestens 32 Zeichen lang. Nur a-z, 0-9, A-Z erlaubt. |
Sie können ein zufälliges Passwort für das Webhook-Secret mit dem folgenden Befehl generieren:
openssl rand -hex 64
Beispiel
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key
Bandbreitennutzungs-Benachrichtigungen
| Variable | Beschreibung | Standard | Mögliche Werte |
|---|---|---|---|
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED | Bandbreitennutzungs-Benachrichtigungen aktivieren/deaktivieren | false | true, false |
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD | Der Schwellenwert für Bandbreitennutzungs-Benachrichtigungen. Nur in aufsteigender Reihenfolge (Beispiel: [60, 80]), muss ein gültiges Array von ganzen Zahlen (min: 25, max: 95) sein. Maximal 5 Werte. |
Beispiel
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]
Benachrichtigungen für nicht verbundene Benutzer
| Variable | Beschreibung | Standard | Mögliche Werte |
|---|---|---|---|
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED | Benachrichtigungen für nicht verbundene Benutzer aktivieren/deaktivieren | false | true, false |
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS | Die Stunden, nach denen Benachrichtigungen für Benutzer gesendet werden, die sich nicht verbunden haben. Nur in aufsteigender Reihenfolge (Beispiel: [6, 12, 24]), muss ein gültiges Array von ganzen Zahlen (min: 1, max: 168) sein. Maximal 3 Werte. |
Beispiel
### Benachrichtigungen für nicht verbundene Benutzer (webhook, telegram)
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED=false
# Nur in aufsteigender Reihenfolge (Beispiel: [6, 12, 24]), muss ein gültiges Array von ganzen Zahlen (min: 1, max: 168) sein. Maximal 3 Werte.
# Jeder Wert repräsentiert STUNDEN, die nach der Benutzererstellung (user.createdAt) vergangen sind
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]
Verschiedenes
| Variable | Beschreibung | Standard | Mögliche Werte |
|---|---|---|---|
SHORT_UUID_LENGTH | Die Länge der generierten kurzen UUID (Abonnement). Min. Länge 16 und max. Länge 64 | 16 | |
IS_HTTP_LOGGING_ENABLED | HTTP-Protokollierung aktivieren/deaktivieren | false | true, false |
ENABLE_DEBUG_LOGS | Debug-Protokolle aktivieren/deaktivieren | false | true, false |
JWT_AUTH_LIFETIME | Die Lebensdauer des Auth-JWT in Stunden. Mögliche Werte von 12 bis 168. | 12 | |
SERVICE_CLEAN_USAGE_HISTORY | Bereinigung des Nutzungsverlaufs aktivieren/deaktivieren | false | true, false |
SERVICE_DISABLE_USER_USAGE_RECORDS | Aufzeichnung von Benutzernutzungsdaten deaktivieren | false | true, false |
USER_USAGE_IGNORE_BELOW_BYTES | Benutzernutzung unterhalb dieses Schwellenwerts ignorieren (in Bytes, max 1048576) | 0 |
Beispiel
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