Traefik
概述
本指南将使用 Traefik 作为反向代理来访问 Remnawave 面板。我们将把域名指向服务器并配置 Traefik。Traefik 将自动处理 SSL 证书的颁发。
您需要拥有注册的域名才能继续。
将域名指向您的服务器
检查您的服务器 IP 地址。最好使用静态 IPv4 地址。
现在,您需要将域名指向此 IP 地址。
例如:my-super-panel.com -> 193.122.122.122
有两种方法可以做到这一点:
- 使用 DNS 提供商(例如 Cloudflare、Google Cloud 等)
- 使用注册商(例如 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 代理域名。(黄色云)

一些 DNS 提供商有不同的界面,但整体过程是相同的。
Traefik 配置
创建 docker-compose.yml
在 /opt/remnawave/traefik 目录中创建 docker-compose.yml 文件。
mkdir -p /opt/remnawave/traefik && cd /opt/remnawave/traefik && nano 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 替换为您的电子邮件。
查看下面的配置,注意黄色高亮行。
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 替换为您的域名。
查看下面的配置,注意黄色高亮行。
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 官方页面 获取最新列表。
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
注意绿色行,这是需要添加的内容。
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
并按如下方式更新路由器配置:
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 限制。
在浏览器中打开面板
在浏览器中打开配置的域名,您将看到登录页面。
