跳到主要内容

环境变量

注意

要更改环境变量,必须重新创建 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