使用自定义路径的 Caddy
Caddy 是一个功能强大且灵活的 Web 服务器,可用于保护您的 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 端点均受保护,包括 /api/sub/* 端点。
- 登录需要使用 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/* 为公开)
运行以下命令下载 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
访问 Auth Portal 页面
您可以在 https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth 访问 Auth Portal 页面。

在这里您可以快速转到 Remnawave 仪表板或管理一些 Auth Portal 设置。
在 MFA 部分,您可以删除或添加新的 MFA 方法。
颁发 API 密钥
您可以在 https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth 访问 Auth Portal 页面。
在 Auth Portal 页面,您可以颁发 API 密钥,点击 API-keys 标签。
颁发 API 密钥后,您可以在 API 请求的 X-Api-Key 头中使用它。
示例:X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ
