본문으로 건너뛰기

환경 변수

경고

환경 변수를 변경하려면 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 서버의 소켓아니요
예시
.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_ENABLEDTelegram 알림 비활성화/활성화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_id 또는 chat_id:thread_id
TELEGRAM_NOTIFY_NODES노드 이벤트 알림chat_id 또는 chat_id:thread_id
TELEGRAM_NOTIFY_CRMCRM 이벤트 알림chat_id 또는 chat_id:thread_id
TELEGRAM_NOTIFY_SERVICE서비스 이벤트 알림chat_id 또는 chat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKERTorrent Blocker 이벤트 알림chat_id 또는 chat_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는 문서를 비활성화/활성화하는 데 사용됩니다.

관리자 대시보드의 API Keys 페이지(IS_DOCS_ENABLEDtrue로 설정된 경우)에서 문서로의 빠른 링크를 사용할 수 있습니다.

변수설명기본값
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_ENABLEDWebhook 알림 활성화/비활성화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) 이후 경과된 시간(HOURS)을 나타냅니다
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]

기타

변수설명기본값가능한 값
SHORT_UUID_LENGTH생성된 짧은 UUID (구독)의 길이. 최소 16, 최대 6416
IS_HTTP_LOGGING_ENABLEDHTTP 로깅 활성화/비활성화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