Traefik
概要
このガイドでは、RemnawaveパネルにアクセスするためのリバースプロキシとしてTraefikを使用します。ドメイン名をサーバーに向け、Traefikを設定します。TraefikはSSL証明書の発行を自動的に処理します。
続行するには登録済みのドメイン名が必要です。
ドメインをサーバーに向ける
サーバーのIPアドレスを確認してください。静的IPv4アドレスを使用することをお勧めします。
次に、ドメイン名をこのIPアドレスに向ける必要があります。
例:my-super-panel.com -> 193.122.122.122
これを行う方法は2つあります:
- DNSプロバイダーを使用する(例:Cloudflare、Google Cloud等)
- レジストラを使用する(例:Namecheap等)
DNSプロバイダー
Cloudflareを使用している場合は、DNSレコードにA/AAAAレコード(それぞれIPv4とIPv6用)を追加する必要があります。
こちらから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
次に、remnawave.yml設定ファイルにmiddleware ip-allow-listを追加する必要があります。
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ベースの制限で保護されている必要があります。
これを実現するには、同じドメインに対して2つの別々のルーターを定義する必要があります — /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制限されたままです。
ブラウザでパネルを開く
設定したドメイン名をブラウザで開くと、ログインページが表示されます。
