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