사용자 지정 경로를 사용하는 Caddy
Caddy는 Remnawave 패널을 보호하는 데 사용할 수 있는 강력하고 유연한 웹 서버입니다.
설치
먼저 Caddy용 디렉토리를 만듭니다.
mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy
그런 다음 docker-compose.yml 파일을 만듭니다.
touch docker-compose.yml && nano docker-compose.yml
그리고 파일에 다음 내용을 추가합니다:
services:
remnawave-caddy:
image: remnawave/caddy-with-auth:latest
container_name: 'remnawave-caddy'
hostname: remnawave-caddy
restart: always
environment:
- AUTH_TOKEN_LIFETIME=3600
- REMNAWAVE_PANEL_DOMAIN=PANEL_DOMAIN
- REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute
- AUTHP_ADMIN_USER=LOGIN_USERNAME
- AUTHP_ADMIN_EMAIL=LOGIN_EMAIL
- AUTHP_ADMIN_SECRET=LOGIN_PASSWORD
ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- remnawave-caddy-ssl-data:/data
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true
volumes:
remnawave-caddy-ssl-data:
driver: local
external: false
name: remnawave-caddy-ssl-data
.env 변수 구성
Remnawave 패널의 도메인 이름을 설정해야 합니다. Caddy가 자동으로 인증서를 발급합니다.
REMNAWAVE_PANEL_DOMAIN=panel.domain.com
사용자 지정 로그인 경로. 이 경로는 로그인 페이지에만 사용됩니다. 이전에 인증하지 않고 대시보드를 열어도 리디렉션이 없습니다. 이 경로를 아는 사람만 패널에 접근할 수 있습니다.
REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute
관리자 자격 증명. 강력한 비밀번호를 사용하세요.
AUTHP_ADMIN_USER=admin
AUTHP_ADMIN_EMAIL=[email protected]
AUTHP_ADMIN_SECRET=strong_password
토큰 유효 기간.
AUTH_TOKEN_LIFETIME=3600
Caddyfile
Caddyfile에 대해 자세히 알아보겠습니다.
먼저 미리 정의된 설정 중 하나를 선택해야 합니다.
API 키를 발급할 프로덕션 환경에는 MFA를 사용한 전체 보안 설정을 사용하는 것을 권장합니다.
이 경로(REMNAWAVE_CUSTOM_LOGIN_ROUTE)를 통해서만 로그인할 수 있습니다.
MFA를 사용한 전체 보안 설정
- 모든 경로가 인증으로 보호됩니다. (프론트엔드, 백엔드)
- /api/sub/* 엔드포인트를 포함한 모든 API 엔드포인트가 보호됩니다.
- 로그인에는 OTP 코드를 사용한 MFA가 필요합니다.
- /api/* 엔드포인트에 대한 특수 API 키를 발급할 수 있습니다.
- 전체 도메인 보호.
Caddyfile을 다운로드하려면 아래 명령을 실행하세요.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-and-protected-api-route/Caddyfile
인증 없는 API 경로 (api/*)
- 경로가 인증으로 보호됩니다. (프론트엔드)
- 로그인에는 OTP 코드를 사용한 MFA가 필요합니다. (프론트엔드)
- 모든 API 엔드포인트가 보호되지 않습니다! (/api/*는 공개)
이 설정은 /api/* 엔드포인트를 공개 인터넷에 노출합니다.
모든 엔드포인트는 인증이 필요하지 않지만 여전히 Remnawave 보안 기능을 사용합니다.
API 키를 발급할 프로덕션 환경에는 MFA를 사용한 전체 보안 설정을 사용하는 것을 권장합니다.
Caddyfile을 다운로드하려면 아래 명령을 실행하세요.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-with-api-without-auth/Caddyfile
인증 없는 /api/sub/* 엔드포인트
- 경로가 인증으로 보호됩니다. (프론트엔드)
- 로그인에는 OTP 코드를 사용한 MFA가 필요합니다. (프론트엔드)
-
/api/sub/*엔드포인트만 공개되며, 다른 엔드포인트는 보호됩니다.
이 설정은 /api/sub/* 엔드포인트를 공개 인터넷에 노출합니다.
API 키를 발급하고 공개 구독 페이지에 @remnawave/subscription-page를 사용할 프로덕션 환경에는 MFA를 사용한 전체 보안 설정을 사용하는 것을 권장합니다.
Caddyfile을 다운로드하려면 아래 명령을 실행하세요.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-with-opened-api-sub/Caddyfile
컨테이너 실행
위의 설정 중 하나를 선택한 후 다음 명령으로 컨테이너를 시작할 수 있습니다.
docker compose up -d && docker compose logs -f
패널 접근
컨테이너가 실행되면 https://panel.domain.com/REMNAWAVE_CUSTOM_LOGIN_ROUTE에서 패널에 접근할 수 있습니다.
첫 번째 시작 시 MFA 방법을 추가하라는 메시지가 표시됩니다.
Google Authenticator 사용을 권장합니다.
MFA 비활성화
MFA를 완전히 비활성화하려면 Caddyfile을 편집하면 됩니다.
Caddyfile을 열고 다음 줄을 변경합니다:
cd /opt/remnawave/caddy && nano Caddyfile
다음 줄을 찾아 require mfa 줄을 제거합니다.
transform user {
match origin local
action add role authp/admin
require mfa
}
그 후 다음 명령으로 컨테이너를 재시작할 수 있습니다.
docker compose down && docker compose up -d && docker compose logs -f
인증 포털 페이지 접근
인증 포털 페이지는 https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth에서 접근할 수 있습니다.

여기서 Remnawave 대시보드로 빠르게 이동하거나 인증 포털 설정 일부를 관리할 수 있습니다.
MFA 섹션에서 MFA 방법을 삭제하거나 새로 추가할 수 있습니다.
API 키 발급
인증 포털 페이지는 https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth에서 접근할 수 있습니다.
인증 포털 페이지에서 API 키를 발급할 수 있습니다. API-keys 탭을 클릭하세요.
API 키를 발급한 후 API에 대한 요청의 X-Api-Key 헤더에서 사용할 수 있습니다.
예시: X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ
