Saltar al contenido principal

Variables de Entorno

aviso

Para cambiar las variables de entorno, debe recrear los contenedores de Remnawave.
¡Simplemente reiniciar los contenedores no reemplaza el entorno dentro del contenedor!

Para recrear el contenedor usando docker compose, ejecute docker compose down && docker compose up -d.

Cambiar variables de entorno

Puede cambiar las variables de entorno editando el archivo .env. Probablemente se encuentra en /opt/remnawave.

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

Puertos

VariableDescripciónPredeterminado
APP_PORTEl puerto donde se ejecuta Remnawave Panel3000
METRICS_PORTEl puerto para los endpoints de Métricas3001
Ejemplo
Archivo .env
APP_PORT=3000
METRICS_PORT=3001

Escalado de API

Número de instancias de API a ejecutar.

Valores posibles:

  • max (iniciar instancias en todos los núcleos)
  • <number> (iniciar instancias en un número específico de núcleos)
  • -1 (iniciar instancias en todos los núcleos - 1)

Déjelo en el valor predeterminado para iniciar solo 1 instancia.

La mayoría de los usuarios no necesitarán cambiar este valor, pero puede ayudar a lograr mejor rendimiento con más de 40,000 usuarios.

aviso

No configure este valor en un número mayor que la cantidad de núcleos de CPU en su máquina.

VariableDescripciónPredeterminado
API_INSTANCESEl número de instancias de API a ejecutar1
Ejemplo
Archivo .env
API_INSTANCES=1

Redis

VariableDescripciónPredeterminadoRequerido
REDIS_HOSTEl host del servidor Redisremnawave-redis
REDIS_PORTEl puerto del servidor Redis6379
REDIS_DBLa base de datos del servidor Redis0No
REDIS_PASSWORDLa contraseña del servidor RedisNo
REDIS_SOCKETEl socket del servidor RedisNo
Ejemplo
Archivo .env
REDIS_HOST=remnawave-redis
REDIS_PORT=6379

Base de datos

Las variables a continuación no son utilizadas por Remnawave, sino por el contenedor de base de datos.

VariableDescripciónPredeterminadoRequerido
POSTGRES_USEREl nombre de usuario del servidor PostgrespostgresNo
POSTGRES_PASSWORDLa contraseña del servidor PostgrespostgresNo
POSTGRES_DBLa base de datos del servidor PostgrespostgresNo

Remnawave usa una URL de PostgreSQL para conectarse a la base de datos.

postgresql://{user}:{password}@{host}:{port}/{database}
Ejemplo de DATABASE_URL
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Ejemplo
Archivo .env
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres

DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"

Claves secretas

Se recomienda usar un generador de cadenas aleatorias para crear secretos con una longitud mínima de 64 caracteres.

peligro

No use las credenciales predeterminadas en producción. ¡Asegúrese de generar secretos fuertes!

Generar secretos
openssl rand -hex 64
VariableDescripciónPredeterminadoRequerido
JWT_AUTH_SECRETLa clave secreta para el JWT de autenticaciónchange_me
JWT_API_TOKENS_SECRETLa clave secreta para el JWT de tokens de APIchange_me
Ejemplo
Archivo .env
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key

Notificaciones de Telegram

Cada variable de notificación usa el formato unificado: chat_id:thread_id, donde thread_id es opcional.

VariableDescripciónPredeterminadoValores posibles
IS_TELEGRAM_NOTIFICATIONS_ENABLEDDeshabilitar/Habilitar notificaciones de Telegramfalsetrue, false
TELEGRAM_BOT_TOKENEl token para el bot de Telegram
TELEGRAM_BOT_API_ROOTURL raíz personalizada de la API del bot de Telegram (opcional)https://api.telegram.org
TELEGRAM_BOT_PROXYProxy para el bot de Telegram (opcional)protocol://user:password@host:port
TELEGRAM_NOTIFY_USERSNotificaciones sobre eventos de usuarioschat_id o chat_id:thread_id
TELEGRAM_NOTIFY_NODESNotificaciones sobre eventos de nodoschat_id o chat_id:thread_id
TELEGRAM_NOTIFY_CRMNotificaciones sobre eventos de CRMchat_id o chat_id:thread_id
TELEGRAM_NOTIFY_SERVICENotificaciones sobre eventos de serviciochat_id o chat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKERNotificaciones sobre eventos de Torrent Blockerchat_id o chat_id:thread_id
nota

El ID de chat de grupo de Telegram siempre comienza con -100.

Ejemplo
Archivo .env

# Deshabilitar/Habilitar notificaciones de Telegram
IS_TELEGRAM_NOTIFICATIONS_ENABLED=false

# Token del bot de Telegram
TELEGRAM_BOT_TOKEN=change_me

# Opcional: proxy para el bot de Telegram
# TELEGRAM_BOT_PROXY=socks5://user:password@host:port

# Notificaciones (formato: chat_id o 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

Dominios

VariableDescripciónPredeterminadoRequerido
FRONT_END_DOMAINEl dominio del Panel Remnawave. Usado para configurar cabeceras CORS.*
VariableDescripciónPredeterminadoRequerido
SUB_PUBLIC_DOMAINEl dominio y ruta de la URL de suscripción públicaexample.com/api/sub
VariableDescripciónPredeterminadoRequerido
PANEL_DOMAINDominio del panel para generar enlaces directos (p. ej. en notificaciones de Telegram con botones inline)No

SUB_PUBLIC_DOMAIN se usa para establecer la URL de suscripción pública en las respuestas RestAPI/UI en el panel de control.

tip

Si lo usa con el panel, simplemente configúrelo como yourpanel.com/api/sub

Ejemplo
Archivo .env
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com

Documentación

VariableDescripciónPredeterminadoValores posibles
IS_DOCS_ENABLEDDeshabilitar/Habilitar documentaciónfalsetrue, false

IS_DOCS_ENABLED se usa para deshabilitar/habilitar la documentación.

tip

Puede usar la página API Keys en el panel de administración (cuando IS_DOCS_ENABLED está configurado en true) para un enlace rápido a la documentación.

VariableDescripciónPredeterminado
SWAGGER_PATHLa ruta a la interfaz de Swagger/docs
SCALAR_PATHLa ruta a la interfaz de Scalar/scalar
Ejemplo
Archivo .env
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar

Métricas de Prometheus

tip

Puede generar una contraseña aleatoria para las métricas usando el siguiente comando:

openssl rand -hex 64
VariableDescripciónPredeterminado
METRICS_USEREl usuario para las métricasadmin
METRICS_PASSLa contraseña para las métricaschange_me
Ejemplo
Archivo .env
METRICS_USER=admin
METRICS_PASS=change_me

Configuración de Prometheus de muestra:

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

Puede usar el panel de Grafana prediseñado para visualizar las métricas recopiladas: Remnawave Panel Dashboard

Muestra de métricas de 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

VariableDescripciónPredeterminadoValores posibles
WEBHOOK_ENABLEDHabilitar/Deshabilitar notificaciones webhookfalsetrue, false
WEBHOOK_URLLa URL del webhook, puede ser http:// o https://
WEBHOOK_SECRET_HEADERClave para la firma, al menos 32 caracteres. Solo se permiten a-z, 0-9, A-Z.
tip

Puede generar una contraseña aleatoria para el secreto del webhook usando el siguiente comando:

openssl rand -hex 64
Ejemplo
Archivo .env
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key

Notificaciones de uso de ancho de banda

VariableDescripciónPredeterminadoValores posibles
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLEDHabilitar/Deshabilitar notificaciones de uso de ancho de bandafalsetrue, false
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLDEl umbral para notificaciones de uso de ancho de banda. Solo en orden ASC (ejemplo: [60, 80]), debe ser un array válido de enteros (min: 25, max: 95). No más de 5 valores.
Ejemplo
Archivo .env
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]

Notificaciones de usuarios no conectados

VariableDescripciónPredeterminadoValores posibles
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLEDHabilitar/Deshabilitar notificaciones de usuarios no conectadosfalsetrue, false
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURSLas horas después de las cuales se envían notificaciones para usuarios que no se han conectado. Solo en orden ASC (ejemplo: [6, 12, 24]), debe ser un array válido de enteros (min: 1, max: 168). No más de 3 valores.
Ejemplo
Archivo .env
### Notificación de usuarios no conectados (webhook, telegram)
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED=false
# Solo en orden ASC (ejemplo: [6, 12, 24]), debe ser un array válido de enteros (min: 1, max: 168). No más de 3 valores.
# Cada valor representa HORAS transcurridas desde la creación del usuario (user.createdAt)
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]

Miscelánea

VariableDescripciónPredeterminadoValores posibles
SHORT_UUID_LENGTHLa longitud del UUID corto generado (suscripción). Longitud mín. 16 y máx. 6416
IS_HTTP_LOGGING_ENABLEDHabilitar/Deshabilitar registro HTTPfalsetrue, false
ENABLE_DEBUG_LOGSHabilitar/Deshabilitar registros de depuraciónfalsetrue, false
JWT_AUTH_LIFETIMELa duración del JWT de autenticación en horas. Valores posibles de 12 a 168.12
SERVICE_CLEAN_USAGE_HISTORYHabilitar/Deshabilitar limpieza del historial de usofalsetrue, false
SERVICE_DISABLE_USER_USAGE_RECORDSDeshabilitar el registro de datos de uso del usuariofalsetrue, false
USER_USAGE_IGNORE_BELOW_BYTESIgnorar el uso del usuario por debajo de este umbral (en bytes, máx 1048576)0
Ejemplo
Archivo .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