環境變數
要更改環境變數,必須重新建立 Remnawave 容器。
僅重新啟動容器不會替換容器內的環境!
要使用 docker compose 重新建立容器,請執行 docker compose down && docker compose up -d。
更改環境變數
您可以透過編輯 .env 檔案來更改環境變數。它通常位於 /opt/remnawave。
cd /opt/remnawave && nano .env
連接埠
| 變數 | 說明 | 預設值 |
|---|---|---|
APP_PORT | Remnawave 面板執行的連接埠 | 3000 |
METRICS_PORT | Metrics 端點執行的連接埠 | 3001 |
範例
APP_PORT=3000
METRICS_PORT=3001
API 擴展
要執行的 API 實例數量。
可能的值:
max(在所有核心上啟動實例)<number>(在特定數量的核心上啟動實例)-1(在所有核心 - 1 上啟動實例)
保持預設值以僅啟動 1 個實例。
大多數使用者不需要更改此值,但它可以幫助在 40,000+ 使用者時實現更好的效能。
不要將此值設定為大於機器 CPU 核心數的數字。
| 變數 | 說明 | 預設值 |
|---|---|---|
API_INSTANCES | 要執行的 API 實例數量 | 1 |
範例
API_INSTANCES=1
Redis
| 變數 | 說明 | 預設值 | 必須 |
|---|---|---|---|
REDIS_HOST | Redis 伺服器的主機 | remnawave-redis | 是 |
REDIS_PORT | Redis 伺服器的連接埠 | 6379 | 是 |
REDIS_DB | Redis 伺服器的資料庫 | 0 | 否 |
REDIS_PASSWORD | Redis 伺服器的密碼 | 否 | |
REDIS_SOCKET | Redis 伺服器的 socket | 否 |
範例
REDIS_HOST=remnawave-redis
REDIS_PORT=6379
資料庫
以下變數不是由 Remnawave 使用,而是由資料庫容器使用。
| 變數 | 說明 | 預設值 | 必須 |
|---|---|---|---|
POSTGRES_USER | Postgres 伺服器的使用者名稱 | postgres | 否 |
POSTGRES_PASSWORD | Postgres 伺服器的密碼 | postgres | 否 |
POSTGRES_DB | Postgres 伺服器的資料庫 | postgres | 否 |
Remnawave 使用 PostgreSQL URL 連接到資料庫。
postgresql://{user}:{password}@{host}:{port}/{database}
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
範例
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_SECRET | API 令牌 JWT 的密鑰 | change_me | 是 |
範例
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 通知 | false | true, false |
TELEGRAM_BOT_TOKEN | Telegram 機器人的令牌 | ||
TELEGRAM_BOT_API_ROOT | 自訂 Telegram Bot API 根 URL(可選) | https://api.telegram.org | |
TELEGRAM_BOT_PROXY | Telegram 機器人的代理(可選) | protocol://user:password@host:port | |
TELEGRAM_NOTIFY_USERS | 關於使用者事件的通知 | chat_id 或 chat_id:thread_id | |
TELEGRAM_NOTIFY_NODES | 關於節點事件的通知 | chat_id 或 chat_id:thread_id | |
TELEGRAM_NOTIFY_CRM | 關於 CRM 事件的通知 | chat_id 或 chat_id:thread_id | |
TELEGRAM_NOTIFY_SERVICE | 關於服務事件的通知 | chat_id 或 chat_id:thread_id | |
TELEGRAM_NOTIFY_TBLOCKER | 關於 Torrent Blocker 事件的通知 | chat_id 或 chat_id:thread_id |
Telegram 群組聊天 ID 始終以 -100 開頭。
範例
# 停用/啟用 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_DOMAIN | Remnawave 面板的網域。用於設定 CORS 標頭。 | * | 是 |
| 變數 | 說明 | 預設值 | 必須 |
|---|---|---|---|
SUB_PUBLIC_DOMAIN | 公開訂閱 URL 的網域和路徑 | example.com/api/sub | 是 |
| 變數 | 說明 | 預設值 | 必須 |
|---|---|---|---|
PANEL_DOMAIN | 用於生成直接連結的面板網域(例如:帶內嵌按鈕的 Telegram 通知) | 否 |
SUB_PUBLIC_DOMAIN 用於在 RestAPI 回應/儀表板 UI 中設定公開訂閱 URL。
如果與面板一起使用,只需設定為 yourpanel.com/api/sub
範例
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com
文件
| 變數 | 說明 | 預設值 | 可能的值 |
|---|---|---|---|
IS_DOCS_ENABLED | 停用/啟用文件 | false | true, false |
IS_DOCS_ENABLED 用於停用/啟用文件。
當 IS_DOCS_ENABLED 設定為 true 時,您可以使用管理儀表板中的 API Keys 頁面快速連結到文件。
| 變數 | 說明 | 預設值 |
|---|---|---|
SWAGGER_PATH | Swagger UI 的路徑 | /docs |
SCALAR_PATH | Scalar UI 的路徑 | /scalar |
範例
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar
Prometheus 指標
您可以使用以下命令生成指標的隨機密碼:
openssl rand -hex 64
| 變數 | 說明 | 預設值 |
|---|---|---|
METRICS_USER | 指標的使用者名稱 | admin |
METRICS_PASS | 指標的密碼 | change_me |
範例
METRICS_USER=admin
METRICS_PASS=change_me
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
您可以使用現成的 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 通知 | false | true, false |
WEBHOOK_URL | Webhook 的 URL,可以是 http:// 或 https:// | ||
WEBHOOK_SECRET_HEADER | 簽名密鑰,至少 32 個字元。僅允許 a-z、0-9、A-Z。 |
您可以使用以下命令生成 webhook 密鑰的隨機密碼:
openssl rand -hex 64
範例
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key
頻寬使用通知
| 變數 | 說明 | 預設值 | 可能的值 |
|---|---|---|---|
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED | 啟用/停用頻寬使用通知 | false | true, false |
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD | 頻寬使用通知的閾值。僅按升序(示例:[60, 80]),必須是有效的整數陣列(min: 25, max: 95)。不超過 5 個值。 |
範例
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]
未連線使用者通知
| 變數 | 說明 | 預設值 | 可能的值 |
|---|---|---|---|
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED | 啟用/停用未連線使用者通知 | false | true, false |
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS | 向未連線的使用者發送通知的小時數。僅按升序(示例:[6, 12, 24]),必須是有效的整數陣列(min: 1, max: 168)。不超過 3 個值。 |
範例
### 未連線使用者通知(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,最大長度 64 | 16 | |
IS_HTTP_LOGGING_ENABLED | 啟用/停用 HTTP 記錄 | false | true, false |
ENABLE_DEBUG_LOGS | 啟用/停用除錯記錄 | false | true, false |
JWT_AUTH_LIFETIME | 認證 JWT 的生命週期(小時)。可能的值從 12 到 168。 | 12 | |
SERVICE_CLEAN_USAGE_HISTORY | 啟用/停用清理使用歷史記錄 | false | true, false |
SERVICE_DISABLE_USER_USAGE_RECORDS | 停用使用者使用資料的記錄 | false | true, false |
USER_USAGE_IGNORE_BELOW_BYTES | 忽略低於此閾值的使用者使用量(以位元組為單位,最大 1048576) | 0 |
範例
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