跳至主要内容

使用自訂路徑的 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
- 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/* 為公開)
危險

此設定將 /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 行。

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>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth 存取 Auth Portal 頁面。

Auth Portal page

在這裡您可以快速前往 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

API-keys