跳到主要内容

最小配置的 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

并将以下内容添加到文件中:

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
- 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

管理员凭据。 确保使用强密码。

AUTHP_ADMIN_USER=admin
AUTHP_ADMIN_EMAIL=[email protected]
AUTHP_ADMIN_SECRET=strong_password

令牌有效期。

AUTH_TOKEN_LIFETIME=3600

Caddyfile

让我们深入了解 Caddyfile

首先,您需要选择我们预定义的设置之一。

带 MFA 的完整安全设置

  • 所有路由都受身份验证保护。(前端、后端)
  • 所有 API 端点均受保护,包括 /api/sub/* 端点。
  • 登录需要使用 OTP 码进行 MFA。
  • 可以为 /api/* 端点颁发特殊 API 密钥。
  • 完整的域保护。

运行以下命令下载 Caddyfile。

curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa/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/minimal-security-setup-with-mfa-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/minimal-security-setup-with-mfa-with-api-without-auth/Caddyfile

运行容器

选择上述设置之一后,您可以使用以下命令启动容器。

docker compose up -d && docker compose logs -f

访问面板

容器运行后,您可以在 https://panel.domain.com 访问面板。

之后,您将被重定向到 Caddy Auth 的登录页面。

第一次启动时,系统会提示您创建 MFA 方法。

我们建议为此使用 Google Authenticator

禁用 MFA

如果您想完全禁用 MFA,可以通过编辑 Caddyfile 来实现。

打开 Caddyfile 并更改以下行:

cd /opt/remnawave/caddy && nano Caddyfile

找到以下行,并删除 require mfa 行。

Caddyfile
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>/r 访问 Auth Portal 页面。

Auth Portal page

在这里您可以快速转到 Remnawave 仪表板或管理一些 Auth Portal 设置。

在 MFA 部分,您可以删除或添加新的 MFA 设备。

颁发 API 密钥

信息

您可以在 https://<your-domain>/r 访问 Auth Portal 页面。

在 Auth Portal 页面,您可以颁发 API 密钥,点击 API-keys 标签。

信息

颁发 API 密钥后,您可以在 API 请求的 X-Api-Key 头中使用它。

示例:X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ

API-keys