跳到主要内容

Traefik

概述

本指南将使用 Traefik 作为反向代理来访问 Remnawave 面板。我们将把域名指向服务器并配置 Traefik。Traefik 将自动处理 SSL 证书的颁发。

注意

您需要拥有注册的域名才能继续。

将域名指向您的服务器

检查您的服务器 IP 地址。最好使用静态 IPv4 地址。

现在,您需要将域名指向此 IP 地址。

例如:my-super-panel.com -> 193.122.122.122

有两种方法可以做到这一点:

  1. 使用 DNS 提供商(例如 Cloudflare、Google Cloud 等)
  2. 使用注册商(例如 Namecheap 等)

DNS 提供商

如果您使用 Cloudflare,需要将 A/AAAA 记录(分别用于 IPv4 和 IPv6)添加到您的 DNS 记录。

此处登录您的 Cloudflare 账户并选择所需的域名。

在页面左侧,点击 DNS,然后点击 Records。点击 Create record
Type 设置为 A,将 Name 设置为 @

信息

如果要使用子域名,应在 Name 字段中输入子域名(例如 panel)。

IPv4 address 字段中输入您的服务器 IP 地址,然后点击 Save

现在需要等待一段时间让 DNS 记录更新。

信息

Cloudflare 控制面板中的黄色云(域名通过 Cloudflare 代理)和灰色云(域名未通过 Cloudflare 代理)之间有很大区别。

如果 Cloudflare 在您的地区运行良好,最好通过 Cloudflare 代理域名。(黄色云)

static

一些 DNS 提供商有不同的界面,但整体过程是相同的。

Traefik 配置

创建 docker-compose.yml

/opt/remnawave/traefik 目录中创建 docker-compose.yml 文件。

mkdir -p /opt/remnawave/traefik && cd /opt/remnawave/traefik && nano docker-compose.yml

粘贴以下配置。

docker-compose.yml
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- remnawave-network
ports:
- '0.0.0.0:80:80'
- '0.0.0.0:443:443'
environment:
- TZ=UTC
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/traefik.yml:ro
- ./letsencrypt:/letsencrypt
- ./config:/config:ro
- ./logs:/var/log/traefik
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true

创建静态配置文件

/opt/remnawave/traefik 目录中创建名为 traefik.yml 的静态配置文件。

cd /opt/remnawave/traefik && nano traefik.yml

粘贴以下配置。

注意

请将 REPLACE_WITH_YOUR_EMAIL 替换为您的电子邮件。

查看下面的配置,注意黄色高亮行。

traefik.yml
api:
dashboard: true
debug: true
entryPoints:
http:
address: ":80"
http:
redirections:
entryPoint:
to: https
scheme: https
https:
address: ":443"
serversTransport:
insecureSkipVerify: true
providers:
file:
directory: /config
watch: true
certificatesResolvers:
letsencrypt:
acme:
email: REPLACE_WITH_YOUR_EMAIL
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: http

log:
level: "INFO"
filePath: "/var/log/traefik/traefik.log"
accessLog:
filePath: "/var/log/traefik/access.log"

创建动态配置文件

/opt/remnawave/traefik/config 目录中创建名为 remnawave.yml 的文件。

mkdir -p /opt/remnawave/traefik/config && cd /opt/remnawave/traefik/config && nano remnawave.yml

粘贴以下配置。

注意

请将 REPLACE_WITH_YOUR_DOMAIN 替换为您的域名。

查看下面的配置,注意黄色高亮行。

remnawave.yml
http:
routers:
remnawave:
rule: "Host(`REPLACE_WITH_YOUR_DOMAIN`)"
entrypoints:
- https
middlewares:
- remnawave-https-redirect
tls:
certResolver: letsencrypt
service: remnawave

middlewares:
remnawave-https-redirect:
redirectScheme:
scheme: https

services:
remnawave:
loadBalancer:
servers:
- url: "http://remnawave:3000"

启动容器

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

通过 IP 限制面板访问

如果要通过 IP 限制面板访问,可以创建名为 ip_allow_list.yml 的 middleware 文件。

cd /opt/remnawave/traefik/config && nano ip_allow_list.yml

粘贴以下配置。

注意

请将 REPLACE_WITH_YOUR_IP 替换为允许的 IP 地址(或使用 CIDR 表示法的 IP 范围)。

查看下面的配置,注意黄色高亮行。

信息

如果您的域名通过 Cloudflare 代理,则需要在 excludedIPs 列表中指定 Cloudflare 的 IP 范围。

Cloudflare 定期更新其 IP 范围,建议查阅 Cloudflare 官方页面 获取最新列表。

ip_allow_list.yml
http:
middlewares:
ip-allow-list:
ipAllowList:
sourceRange:
- "REPLACE_WITH_YOUR_IP"
ipStrategy:
excludedIPs:
- 73.245.48.0/20
- 103.21.244.0/22
- 103.22.200.0/22
- 103.31.4.0/22
- 141.101.64.0/18
- 108.162.192.0/18
- 190.93.240.0/20
- 188.114.96.0/20
- 197.234.240.0/22
- 198.41.128.0/17
- 162.158.0.0/15
- 104.16.0.0/13
- 104.24.0.0/14
- 172.64.0.0/13
- 131.0.72.0/22

然后需要将 middleware ip-allow-list 添加到 remnawave.yml 配置文件中。

nano remnawave.yml

注意绿色行,这是需要添加的内容。

remnawave.yml
http:
routers:
remnawave:
rule: 'Host(`REPLACE_WITH_YOUR_DOMAIN`)'
entrypoints:
- https
middlewares:
- remnawave-https-redirect
- ip-allow-list
tls:
certResolver: letsencrypt
service: remnawave

middlewares:
remnawave-https-redirect:
redirectScheme:
scheme: https

services:
remnawave:
loadBalancer:
servers:
- url: 'http://remnawave:3000'

允许公开访问订阅路径

为使订阅系统正常工作,/api/sub/ 路径必须公开访问。 同时,面板其余部分应保持 IP 访问限制的保护。

为此,您需要为同一域名定义两个独立的路由器——一个用于 /api/sub/(开放访问),另一个用于其他所有内容(受限访问)。

再次打开 remnawave.yml 文件:

nano /opt/remnawave/traefik/config/remnawave.yml

并按如下方式更新路由器配置:

remnawave.yml
http:
routers:
remnawave-sub:
rule: "Host(`REPLACE_WITH_YOUR_DOMAIN`) && PathPrefix(`/api/sub/`)"
middlewares:
- remnawave-https-redirect
entrypoints:
- https
service: remnawave
tls:
certResolver: letsencrypt

remnawave-secure:
rule: "Host(`REPLACE_WITH_YOUR_DOMAIN`)"
entrypoints:
- https
middlewares:
- remnawave-https-redirect
- ip-allow-list
service: remnawave
tls:
certResolver: letsencrypt

middlewares:
remnawave-https-redirect:
redirectScheme:
scheme: https

services:
remnawave:
loadBalancer:
servers:
- url: "http://remnawave:3000"

此配置使 /api/sub/ 路径公开可访问,而面板其余部分仍受 IP 限制。

在浏览器中打开面板

在浏览器中打开配置的域名,您将看到登录页面。

login-page

故障排除