跳至主要内容

環境變數

注意

要更改環境變數,必須重新建立 Remnawave 容器。
僅重新啟動容器不會替換容器內的環境!

要使用 docker compose 重新建立容器,請執行 docker compose down && docker compose up -d

更改環境變數

您可以透過編輯 .env 檔案來更改環境變數。它通常位於 /opt/remnawave

編輯 .env 檔案
cd /opt/remnawave && nano .env

連接埠

變數說明預設值
APP_PORTRemnawave 面板執行的連接埠3000
METRICS_PORTMetrics 端點執行的連接埠3001
範例
.env 檔案
APP_PORT=3000
METRICS_PORT=3001

API 擴展

要執行的 API 實例數量。

可能的值:

  • max(在所有核心上啟動實例)
  • <number>(在特定數量的核心上啟動實例)
  • -1(在所有核心 - 1 上啟動實例)

保持預設值以僅啟動 1 個實例。

大多數使用者不需要更改此值,但它可以幫助在 40,000+ 使用者時實現更好的效能。

注意

不要將此值設定為大於機器 CPU 核心數的數字。

變數說明預設值
API_INSTANCES要執行的 API 實例數量1
範例
.env 檔案
API_INSTANCES=1

Redis

變數說明預設值必須
REDIS_HOSTRedis 伺服器的主機remnawave-redis
REDIS_PORTRedis 伺服器的連接埠6379
REDIS_DBRedis 伺服器的資料庫0
REDIS_PASSWORDRedis 伺服器的密碼
REDIS_SOCKETRedis 伺服器的 socket
範例
.env 檔案
REDIS_HOST=remnawave-redis
REDIS_PORT=6379

資料庫

以下變數不是由 Remnawave 使用,而是由資料庫容器使用。

變數說明預設值必須
POSTGRES_USERPostgres 伺服器的使用者名稱postgres
POSTGRES_PASSWORDPostgres 伺服器的密碼postgres
POSTGRES_DBPostgres 伺服器的資料庫postgres

Remnawave 使用 PostgreSQL URL 連接到資料庫。

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

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

密鑰

建議使用隨機字串生成器建立長度至少為 64 個字元的密鑰。

危險

不要在生產環境中使用預設憑據。 請確保生成強密鑰!

生成密鑰
openssl rand -hex 64
變數說明預設值必須
JWT_AUTH_SECRET認證 JWT 的密鑰change_me
JWT_API_TOKENS_SECRETAPI 令牌 JWT 的密鑰change_me
範例
.env 檔案
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key

Telegram 通知

每個通知變數使用統一格式:chat_id:thread_id,其中 thread_id 是可選的。

變數說明預設值可能的值
IS_TELEGRAM_NOTIFICATIONS_ENABLED停用/啟用 Telegram 通知falsetrue, false
TELEGRAM_BOT_TOKENTelegram 機器人的令牌
TELEGRAM_BOT_API_ROOT自訂 Telegram Bot API 根 URL(可選)https://api.telegram.org
TELEGRAM_BOT_PROXYTelegram 機器人的代理(可選)protocol://user:password@host:port
TELEGRAM_NOTIFY_USERS關於使用者事件的通知chat_idchat_id:thread_id
TELEGRAM_NOTIFY_NODES關於節點事件的通知chat_idchat_id:thread_id
TELEGRAM_NOTIFY_CRM關於 CRM 事件的通知chat_idchat_id:thread_id
TELEGRAM_NOTIFY_SERVICE關於服務事件的通知chat_idchat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKER關於 Torrent Blocker 事件的通知chat_idchat_id:thread_id
備註

Telegram 群組聊天 ID 始終以 -100 開頭。

範例
.env 檔案

# 停用/啟用 Telegram 通知
IS_TELEGRAM_NOTIFICATIONS_ENABLED=false

# Telegram 機器人令牌
TELEGRAM_BOT_TOKEN=change_me

# 可選:Telegram 機器人代理
# TELEGRAM_BOT_PROXY=socks5://user:password@host:port

# 通知(格式:chat_id 或 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

網域

變數說明預設值必須
FRONT_END_DOMAINRemnawave 面板的網域。用於設定 CORS 標頭。*
變數說明預設值必須
SUB_PUBLIC_DOMAIN公開訂閱 URL 的網域和路徑example.com/api/sub
變數說明預設值必須
PANEL_DOMAIN用於生成直接連結的面板網域(例如:帶內嵌按鈕的 Telegram 通知)

SUB_PUBLIC_DOMAIN 用於在 RestAPI 回應/儀表板 UI 中設定公開訂閱 URL。

提示

如果與面板一起使用,只需設定為 yourpanel.com/api/sub

範例
.env 檔案
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com

文件

變數說明預設值可能的值
IS_DOCS_ENABLED停用/啟用文件falsetrue, false

IS_DOCS_ENABLED 用於停用/啟用文件。

提示

IS_DOCS_ENABLED 設定為 true 時,您可以使用管理儀表板中的 API Keys 頁面快速連結到文件。

變數說明預設值
SWAGGER_PATHSwagger UI 的路徑/docs
SCALAR_PATHScalar UI 的路徑/scalar
範例
.env 檔案
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar

Prometheus 指標

提示

您可以使用以下命令生成指標的隨機密碼:

openssl rand -hex 64
變數說明預設值
METRICS_USER指標的使用者名稱admin
METRICS_PASS指標的密碼change_me
範例
.env 檔案
METRICS_USER=admin
METRICS_PASS=change_me

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

您可以使用現成的 Grafana 儀表板來視覺化收集的指標:Remnawave Panel Dashboard

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

變數說明預設值可能的值
WEBHOOK_ENABLED啟用/停用 webhook 通知falsetrue, false
WEBHOOK_URLWebhook 的 URL,可以是 http:// 或 https://
WEBHOOK_SECRET_HEADER簽名密鑰,至少 32 個字元。僅允許 a-z、0-9、A-Z。
提示

您可以使用以下命令生成 webhook 密鑰的隨機密碼:

openssl rand -hex 64
範例
.env 檔案
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key

頻寬使用通知

變數說明預設值可能的值
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED啟用/停用頻寬使用通知falsetrue, false
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD頻寬使用通知的閾值。僅按升序(示例:[60, 80]),必須是有效的整數陣列(min: 25, max: 95)。不超過 5 個值。
範例
.env 檔案
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]

未連線使用者通知

變數說明預設值可能的值
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED啟用/停用未連線使用者通知falsetrue, false
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS向未連線的使用者發送通知的小時數。僅按升序(示例:[6, 12, 24]),必須是有效的整數陣列(min: 1, max: 168)。不超過 3 個值。
範例
.env 檔案
### 未連線使用者通知(webhook, telegram)
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED=false
# 僅按升序(示例:[6, 12, 24]),必須是有效的整數陣列(min: 1, max: 168)。不超過 3 個值。
# 每個值表示使用者建立後(user.createdAt)經過的小時數
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]

其他

變數說明預設值可能的值
SHORT_UUID_LENGTH生成的短 UUID(訂閱)的長度。最小長度 16,最大長度 6416
IS_HTTP_LOGGING_ENABLED啟用/停用 HTTP 記錄falsetrue, false
ENABLE_DEBUG_LOGS啟用/停用除錯記錄falsetrue, false
JWT_AUTH_LIFETIME認證 JWT 的生命週期(小時)。可能的值從 12 到 168。12
SERVICE_CLEAN_USAGE_HISTORY啟用/停用清理使用歷史記錄falsetrue, false
SERVICE_DISABLE_USER_USAGE_RECORDS停用使用者使用資料的記錄falsetrue, false
USER_USAGE_IGNORE_BELOW_BYTES忽略低於此閾值的使用者使用量(以位元組為單位,最大 1048576)0
範例
.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