Variáveis de Ambiente
Para alterar as variáveis de ambiente, você deve recriar os contêineres Remnawave.
Apenas reiniciar os contêineres não substitui o ambiente dentro do contêiner!
Para recriar o contêiner usando docker compose, execute docker compose down && docker compose up -d.
Alterar variáveis de ambiente
Você pode alterar as variáveis de ambiente editando o arquivo .env. Provavelmente está localizado em /opt/remnawave.
cd /opt/remnawave && nano .env
Portas
| Variável | Descrição | Padrão |
|---|---|---|
APP_PORT | A porta onde o Painel Remnawave é executado | 3000 |
METRICS_PORT | A porta para os endpoints de Métricas | 3001 |
Exemplo
APP_PORT=3000
METRICS_PORT=3001
Escalabilidade da API
Número de instâncias de API a serem executadas.
Valores possíveis:
max(iniciar instâncias em todos os núcleos)<number>(iniciar instâncias em um número específico de núcleos)-1(iniciar instâncias em todos os núcleos - 1)
Deixe no valor padrão para iniciar apenas 1 instância.
A maioria dos usuários não precisará alterar esse valor, mas pode ajudar a alcançar melhor desempenho com mais de 40.000 usuários.
Não defina este valor para um número maior que o número de núcleos de CPU da sua máquina.
| Variável | Descrição | Padrão |
|---|---|---|
API_INSTANCES | O número de instâncias de API a serem executadas | 1 |
Exemplo
API_INSTANCES=1
Redis
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
REDIS_HOST | O host do servidor Redis | remnawave-redis | Sim |
REDIS_PORT | A porta do servidor Redis | 6379 | Sim |
REDIS_DB | O banco de dados do servidor Redis | 0 | Não |
REDIS_PASSWORD | A senha do servidor Redis | Não | |
REDIS_SOCKET | O socket do servidor Redis | Não |
Exemplo
REDIS_HOST=remnawave-redis
REDIS_PORT=6379
Banco de dados
As variáveis abaixo não são usadas pelo Remnawave, mas pelo contêiner de banco de dados.
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
POSTGRES_USER | O nome de usuário do servidor Postgres | postgres | Não |
POSTGRES_PASSWORD | A senha do servidor Postgres | postgres | Não |
POSTGRES_DB | O banco de dados do servidor Postgres | postgres | Não |
O Remnawave usa uma URL PostgreSQL para se conectar ao banco de dados.
postgresql://{user}:{password}@{host}:{port}/{database}
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Exemplo
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Chaves secretas
Recomenda-se usar um gerador de strings aleatórias para criar segredos com comprimento mínimo de 64 caracteres.
Não use as credenciais padrão em produção. Certifique-se de gerar segredos fortes!
openssl rand -hex 64
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
JWT_AUTH_SECRET | A chave secreta para o JWT de autenticação | change_me | Sim |
JWT_API_TOKENS_SECRET | A chave secreta para o JWT de tokens de API | change_me | Sim |
Exemplo
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key
Notificações do Telegram
Cada variável de notificação usa o formato unificado: chat_id:thread_id, onde thread_id é opcional.
| Variável | Descrição | Padrão | Valores possíveis |
|---|---|---|---|
IS_TELEGRAM_NOTIFICATIONS_ENABLED | Desabilitar/Habilitar notificações do Telegram | false | true, false |
TELEGRAM_BOT_TOKEN | O token para o bot do Telegram | ||
TELEGRAM_BOT_API_ROOT | URL raiz da API do bot do Telegram personalizado (opcional) | https://api.telegram.org | |
TELEGRAM_BOT_PROXY | Proxy para o bot do Telegram (opcional) | protocol://user:password@host:port | |
TELEGRAM_NOTIFY_USERS | Notificações sobre eventos de usuários | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_NODES | Notificações sobre eventos de nós | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_CRM | Notificações sobre eventos de CRM | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_SERVICE | Notificações sobre eventos de serviço | chat_id ou chat_id:thread_id | |
TELEGRAM_NOTIFY_TBLOCKER | Notificações sobre eventos do Torrent Blocker | chat_id ou chat_id:thread_id |
O ID de chat de grupo do Telegram sempre começa com -100.
Exemplo
# Desabilitar/Habilitar notificações do Telegram
IS_TELEGRAM_NOTIFICATIONS_ENABLED=false
# Token do bot do Telegram
TELEGRAM_BOT_TOKEN=change_me
# Opcional: proxy para o bot do Telegram
# TELEGRAM_BOT_PROXY=socks5://user:password@host:port
# Notificações (formato: chat_id ou 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
Domínios
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
FRONT_END_DOMAIN | O domínio do Painel Remnawave. Usado para definir cabeçalhos CORS. | * | Sim |
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
SUB_PUBLIC_DOMAIN | O domínio e caminho da URL de assinatura pública | example.com/api/sub | Sim |
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
PANEL_DOMAIN | Domínio do painel para gerar links diretos (ex.: em notificações do Telegram com botões inline) | Não |
SUB_PUBLIC_DOMAIN é usado para definir a URL de assinatura pública nas respostas da RestAPI/UI no painel.
Se estiver usando com o painel, defina como yourpanel.com/api/sub
Exemplo
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com
Documentação
| Variável | Descrição | Padrão | Valores possíveis |
|---|---|---|---|
IS_DOCS_ENABLED | Desabilitar/Habilitar documentação | false | true, false |
IS_DOCS_ENABLED é usado para desabilitar/habilitar a documentação.
Você pode usar a página API Keys no painel de administração (quando IS_DOCS_ENABLED estiver definido como true) para um link rápido para a documentação.
| Variável | Descrição | Padrão |
|---|---|---|
SWAGGER_PATH | O caminho para a UI do Swagger | /docs |
SCALAR_PATH | O caminho para a UI do Scalar | /scalar |
Exemplo
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar
Métricas do Prometheus
Você pode gerar uma senha aleatória para as métricas usando o seguinte comando:
openssl rand -hex 64
| Variável | Descrição | Padrão |
|---|---|---|
METRICS_USER | O usuário para as métricas | admin |
METRICS_PASS | A senha para as métricas | change_me |
Exemplo
METRICS_USER=admin
METRICS_PASS=change_me
Configuração de amostra do 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
Você pode usar o painel Grafana pronto para visualizar as métricas coletadas: Remnawave Panel Dashboard
Amostra de métricas do 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
| Variável | Descrição | Padrão | Valores possíveis |
|---|---|---|---|
WEBHOOK_ENABLED | Habilitar/Desabilitar notificações webhook | false | true, false |
WEBHOOK_URL | A URL do webhook, pode ser http:// ou https:// | ||
WEBHOOK_SECRET_HEADER | Chave para assinatura, mínimo 32 caracteres. Apenas a-z, 0-9, A-Z são permitidos. |
Você pode gerar uma senha aleatória para o segredo do webhook usando o seguinte comando:
openssl rand -hex 64
Exemplo
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key
Notificações de uso de largura de banda
| Variável | Descrição | Padrão | Valores possíveis |
|---|---|---|---|
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED | Habilitar/Desabilitar notificações de uso de largura de banda | false | true, false |
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD | O limite para notificações de uso de largura de banda. Apenas em ordem ASC (exemplo: [60, 80]), deve ser um array válido de inteiros (min: 25, max: 95). Não mais de 5 valores. |
Exemplo
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]
Notificações de usuários não conectados
| Variável | Descrição | Padrão | Valores possíveis |
|---|---|---|---|
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED | Habilitar/Desabilitar notificações de usuários não conectados | false | true, false |
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS | As horas após as quais enviar notificações para usuários que não se conectaram. Apenas em ordem ASC (exemplo: [6, 12, 24]), deve ser um array válido de inteiros (min: 1, max: 168). Não mais de 3 valores. |
Exemplo
### Notificação de usuários não conectados (webhook, telegram)
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED=false
# Apenas em ordem ASC (exemplo: [6, 12, 24]), deve ser um array válido de inteiros (min: 1, max: 168). Não mais de 3 valores.
# Cada valor representa HORAS passadas desde a criação do usuário (user.createdAt)
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]
Diversos
| Variável | Descrição | Padrão | Valores possíveis |
|---|---|---|---|
SHORT_UUID_LENGTH | O comprimento do UUID curto gerado (assinatura). Comprimento mín. 16 e máx. 64 | 16 | |
IS_HTTP_LOGGING_ENABLED | Habilitar/Desabilitar registro HTTP | false | true, false |
ENABLE_DEBUG_LOGS | Habilitar/Desabilitar logs de depuração | false | true, false |
JWT_AUTH_LIFETIME | A vida útil do JWT de autenticação em horas. Valores possíveis de 12 a 168. | 12 | |
SERVICE_CLEAN_USAGE_HISTORY | Habilitar/Desabilitar limpeza do histórico de uso | false | true, false |
SERVICE_DISABLE_USER_USAGE_RECORDS | Desabilitar o registro de dados de uso do usuário | false | true, false |
USER_USAGE_IGNORE_BELOW_BYTES | Ignorar uso do usuário abaixo deste limite (em bytes, máx 1048576) | 0 |
Exemplo
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