Zum Hauptinhalt springen

Umgebungsvariablen

warnung

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.

.env-Datei bearbeiten
cd /opt/remnawave && nano .env

Ports

VariableBeschreibungStandard
APP_PORTDer Port, auf dem Remnawave Panel läuft3000
METRICS_PORTDer Port für Metrics-Endpunkte3001
Beispiel
.env-Datei
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.

warnung

Setzen Sie diesen Wert nicht auf eine Zahl größer als die Anzahl der CPU-Kerne Ihres Rechners.

VariableBeschreibungStandard
API_INSTANCESDie Anzahl der zu startenden API-Instanzen1
Beispiel
.env-Datei
API_INSTANCES=1

Redis

VariableBeschreibungStandardErforderlich
REDIS_HOSTDer Host des Redis-Serversremnawave-redisJa
REDIS_PORTDer Port des Redis-Servers6379Ja
REDIS_DBDie Datenbank des Redis-Servers0Nein
REDIS_PASSWORDDas Passwort des Redis-ServersNein
REDIS_SOCKETDer Socket des Redis-ServersNein
Beispiel
.env-Datei
REDIS_HOST=remnawave-redis
REDIS_PORT=6379

Datenbank

Die folgenden Variablen werden nicht von Remnawave, sondern vom Datenbankcontainer verwendet.

VariableBeschreibungStandardErforderlich
POSTGRES_USERDer Benutzername des Postgres-ServerspostgresNein
POSTGRES_PASSWORDDas Passwort des Postgres-ServerspostgresNein
POSTGRES_DBDie Datenbank des Postgres-ServerspostgresNein

Remnawave verwendet eine PostgreSQL-URL, um sich mit der Datenbank zu verbinden.

postgresql://{user}:{password}@{host}:{port}/{database}
DATABASE_URL Beispiel
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Beispiel
.env-Datei
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.

gefahr

Verwenden Sie die Standardanmeldedaten nicht in der Produktion. Stellen Sie sicher, dass Sie starke Secrets generieren!

Secrets generieren
openssl rand -hex 64
VariableBeschreibungStandardErforderlich
JWT_AUTH_SECRETDer geheime Schlüssel für das Auth-JWTchange_meJa
JWT_API_TOKENS_SECRETDer geheime Schlüssel für das API-Tokens-JWTchange_meJa
Beispiel
.env-Datei
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.

VariableBeschreibungStandardMögliche Werte
IS_TELEGRAM_NOTIFICATIONS_ENABLEDTelegram-Benachrichtigungen deaktivieren/aktivierenfalsetrue, false
TELEGRAM_BOT_TOKENDas Token für den Telegram-Bot
TELEGRAM_BOT_API_ROOTBenutzerdefinierte Telegram Bot API Root-URL (optional)https://api.telegram.org
TELEGRAM_BOT_PROXYProxy für Telegram Bot (optional)protocol://user:password@host:port
TELEGRAM_NOTIFY_USERSBenachrichtigungen über Benutzerereignissechat_id oder chat_id:thread_id
TELEGRAM_NOTIFY_NODESBenachrichtigungen über Node-Ereignissechat_id oder chat_id:thread_id
TELEGRAM_NOTIFY_CRMBenachrichtigungen über CRM-Ereignissechat_id oder chat_id:thread_id
TELEGRAM_NOTIFY_SERVICEBenachrichtigungen über Service-Ereignissechat_id oder chat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKERBenachrichtigungen über Torrent Blocker-Ereignissechat_id oder chat_id:thread_id
hinweis

Telegram-Gruppen-Chat-ID beginnt immer mit -100.

Beispiel
.env-Datei

# 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

VariableBeschreibungStandardErforderlich
FRONT_END_DOMAINDie Domain des Remnawave Panels. Wird zum Setzen von CORS-Headern verwendet.*Ja
VariableBeschreibungStandardErforderlich
SUB_PUBLIC_DOMAINDie Domain und der Pfad der öffentlichen Abonnement-URLexample.com/api/subJa
VariableBeschreibungStandardErforderlich
PANEL_DOMAINPanel-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.

tipp

Wenn Sie es mit dem Panel verwenden, setzen Sie es einfach auf yourpanel.com/api/sub

Beispiel
.env-Datei
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com

Dokumentation

VariableBeschreibungStandardMögliche Werte
IS_DOCS_ENABLEDDokumentation deaktivieren/aktivierenfalsetrue, false

IS_DOCS_ENABLED wird verwendet, um die Dokumentation zu deaktivieren/aktivieren.

tipp

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.

VariableBeschreibungStandard
SWAGGER_PATHDer Pfad zur Swagger-Benutzeroberfläche/docs
SCALAR_PATHDer Pfad zur Scalar-Benutzeroberfläche/scalar
Beispiel
.env-Datei
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar

Prometheus-Metriken

tipp

Sie können ein zufälliges Passwort für die Metriken mit dem folgenden Befehl generieren:

openssl rand -hex 64
VariableBeschreibungStandard
METRICS_USERDer Benutzer für die Metrikenadmin
METRICS_PASSDas Passwort für die Metrikenchange_me
Beispiel
.env-Datei
METRICS_USER=admin
METRICS_PASS=change_me

Prometheus-Beispielkonfiguration:

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

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

VariableBeschreibungStandardMögliche Werte
WEBHOOK_ENABLEDWebhook-Benachrichtigungen aktivieren/deaktivierenfalsetrue, false
WEBHOOK_URLDie URL des Webhooks, kann http:// oder https:// sein
WEBHOOK_SECRET_HEADERSchlüssel für die Signatur, mindestens 32 Zeichen lang. Nur a-z, 0-9, A-Z erlaubt.
tipp

Sie können ein zufälliges Passwort für das Webhook-Secret mit dem folgenden Befehl generieren:

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

Bandbreitennutzungs-Benachrichtigungen

VariableBeschreibungStandardMögliche Werte
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLEDBandbreitennutzungs-Benachrichtigungen aktivieren/deaktivierenfalsetrue, false
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLDDer 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
.env-Datei
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]

Benachrichtigungen für nicht verbundene Benutzer

VariableBeschreibungStandardMögliche Werte
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLEDBenachrichtigungen für nicht verbundene Benutzer aktivieren/deaktivierenfalsetrue, false
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURSDie 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
.env-Datei
### 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

VariableBeschreibungStandardMögliche Werte
SHORT_UUID_LENGTHDie Länge der generierten kurzen UUID (Abonnement). Min. Länge 16 und max. Länge 6416
IS_HTTP_LOGGING_ENABLEDHTTP-Protokollierung aktivieren/deaktivierenfalsetrue, false
ENABLE_DEBUG_LOGSDebug-Protokolle aktivieren/deaktivierenfalsetrue, false
JWT_AUTH_LIFETIMEDie Lebensdauer des Auth-JWT in Stunden. Mögliche Werte von 12 bis 168.12
SERVICE_CLEAN_USAGE_HISTORYBereinigung des Nutzungsverlaufs aktivieren/deaktivierenfalsetrue, false
SERVICE_DISABLE_USER_USAGE_RECORDSAufzeichnung von Benutzernutzungsdaten deaktivierenfalsetrue, false
USER_USAGE_IGNORE_BELOW_BYTESBenutzernutzung unterhalb dieses Schwellenwerts ignorieren (in Bytes, max 1048576)0
Beispiel
.env-Datei
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