Pular para o conteúdo principal

Variáveis de Ambiente

aviso

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.

Editar arquivo .env
cd /opt/remnawave && nano .env

Portas

VariávelDescriçãoPadrão
APP_PORTA porta onde o Painel Remnawave é executado3000
METRICS_PORTA porta para os endpoints de Métricas3001
Exemplo
Arquivo .env
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.

aviso

Não defina este valor para um número maior que o número de núcleos de CPU da sua máquina.

VariávelDescriçãoPadrão
API_INSTANCESO número de instâncias de API a serem executadas1
Exemplo
Arquivo .env
API_INSTANCES=1

Redis

VariávelDescriçãoPadrãoObrigatório
REDIS_HOSTO host do servidor Redisremnawave-redisSim
REDIS_PORTA porta do servidor Redis6379Sim
REDIS_DBO banco de dados do servidor Redis0Não
REDIS_PASSWORDA senha do servidor RedisNão
REDIS_SOCKETO socket do servidor RedisNão
Exemplo
Arquivo .env
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ávelDescriçãoPadrãoObrigatório
POSTGRES_USERO nome de usuário do servidor PostgrespostgresNão
POSTGRES_PASSWORDA senha do servidor PostgrespostgresNão
POSTGRES_DBO banco de dados do servidor PostgrespostgresNão

O Remnawave usa uma URL PostgreSQL para se conectar ao banco de dados.

postgresql://{user}:{password}@{host}:{port}/{database}
Exemplo de DATABASE_URL
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Exemplo
Arquivo .env
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.

perigo

Não use as credenciais padrão em produção. Certifique-se de gerar segredos fortes!

Gerar segredos
openssl rand -hex 64
VariávelDescriçãoPadrãoObrigatório
JWT_AUTH_SECRETA chave secreta para o JWT de autenticaçãochange_meSim
JWT_API_TOKENS_SECRETA chave secreta para o JWT de tokens de APIchange_meSim
Exemplo
Arquivo .env
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ávelDescriçãoPadrãoValores possíveis
IS_TELEGRAM_NOTIFICATIONS_ENABLEDDesabilitar/Habilitar notificações do Telegramfalsetrue, false
TELEGRAM_BOT_TOKENO token para o bot do Telegram
TELEGRAM_BOT_API_ROOTURL raiz da API do bot do Telegram personalizado (opcional)https://api.telegram.org
TELEGRAM_BOT_PROXYProxy para o bot do Telegram (opcional)protocol://user:password@host:port
TELEGRAM_NOTIFY_USERSNotificações sobre eventos de usuárioschat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_NODESNotificações sobre eventos de nóschat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_CRMNotificações sobre eventos de CRMchat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_SERVICENotificações sobre eventos de serviçochat_id ou chat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKERNotificações sobre eventos do Torrent Blockerchat_id ou chat_id:thread_id
observação

O ID de chat de grupo do Telegram sempre começa com -100.

Exemplo
Arquivo .env

# 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ávelDescriçãoPadrãoObrigatório
FRONT_END_DOMAINO domínio do Painel Remnawave. Usado para definir cabeçalhos CORS.*Sim
VariávelDescriçãoPadrãoObrigatório
SUB_PUBLIC_DOMAINO domínio e caminho da URL de assinatura públicaexample.com/api/subSim
VariávelDescriçãoPadrãoObrigatório
PANEL_DOMAINDomí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.

dica

Se estiver usando com o painel, defina como yourpanel.com/api/sub

Exemplo
Arquivo .env
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com

Documentação

VariávelDescriçãoPadrãoValores possíveis
IS_DOCS_ENABLEDDesabilitar/Habilitar documentaçãofalsetrue, false

IS_DOCS_ENABLED é usado para desabilitar/habilitar a documentação.

dica

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ávelDescriçãoPadrão
SWAGGER_PATHO caminho para a UI do Swagger/docs
SCALAR_PATHO caminho para a UI do Scalar/scalar
Exemplo
Arquivo .env
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar

Métricas do Prometheus

dica

Você pode gerar uma senha aleatória para as métricas usando o seguinte comando:

openssl rand -hex 64
VariávelDescriçãoPadrão
METRICS_USERO usuário para as métricasadmin
METRICS_PASSA senha para as métricaschange_me
Exemplo
Arquivo .env
METRICS_USER=admin
METRICS_PASS=change_me

Configuração de amostra do 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

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ávelDescriçãoPadrãoValores possíveis
WEBHOOK_ENABLEDHabilitar/Desabilitar notificações webhookfalsetrue, false
WEBHOOK_URLA URL do webhook, pode ser http:// ou https://
WEBHOOK_SECRET_HEADERChave para assinatura, mínimo 32 caracteres. Apenas a-z, 0-9, A-Z são permitidos.
dica

Você pode gerar uma senha aleatória para o segredo do webhook usando o seguinte comando:

openssl rand -hex 64
Exemplo
Arquivo .env
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ávelDescriçãoPadrãoValores possíveis
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLEDHabilitar/Desabilitar notificações de uso de largura de bandafalsetrue, false
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLDO 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
Arquivo .env
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]

Notificações de usuários não conectados

VariávelDescriçãoPadrãoValores possíveis
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLEDHabilitar/Desabilitar notificações de usuários não conectadosfalsetrue, false
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURSAs 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
Arquivo .env
### 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ávelDescriçãoPadrãoValores possíveis
SHORT_UUID_LENGTHO comprimento do UUID curto gerado (assinatura). Comprimento mín. 16 e máx. 6416
IS_HTTP_LOGGING_ENABLEDHabilitar/Desabilitar registro HTTPfalsetrue, false
ENABLE_DEBUG_LOGSHabilitar/Desabilitar logs de depuraçãofalsetrue, false
JWT_AUTH_LIFETIMEA vida útil do JWT de autenticação em horas. Valores possíveis de 12 a 168.12
SERVICE_CLEAN_USAGE_HISTORYHabilitar/Desabilitar limpeza do histórico de usofalsetrue, false
SERVICE_DISABLE_USER_USAGE_RECORDSDesabilitar o registro de dados de uso do usuáriofalsetrue, false
USER_USAGE_IGNORE_BELOW_BYTESIgnorar uso do usuário abaixo deste limite (em bytes, máx 1048576)0
Exemplo
Arquivo .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