メインコンテンツまでスキップ

Traefik

概要

このガイドでは、RemnawaveパネルにアクセスするためのリバースプロキシとしてTraefikを使用します。ドメイン名をサーバーに向け、Traefikを設定します。TraefikはSSL証明書の発行を自動的に処理します。

警告

続行するには登録済みのドメイン名が必要です。

ドメインをサーバーに向ける

サーバーのIPアドレスを確認してください。静的IPv4アドレスを使用することをお勧めします。

次に、ドメイン名をこのIPアドレスに向ける必要があります。

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

これを行う方法は2つあります:

  1. DNSプロバイダーを使用する(例:Cloudflare、Google Cloud等)
  2. レジストラを使用する(例:Namecheap等)

DNSプロバイダー

Cloudflareを使用している場合は、DNSレコードにA/AAAAレコード(それぞれIPv4とIPv6用)を追加する必要があります。

こちらからCloudflareアカウントにログインし、目的のドメインを選択します。

ページの左側でDNSをクリックし、Recordsをクリックします。Create recordをクリックします。
TypeAに、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

次に、remnawave.yml設定ファイルにmiddleware ip-allow-listを追加する必要があります。

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ベースの制限で保護されている必要があります。

これを実現するには、同じドメインに対して2つの別々のルーターを定義する必要があります — /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

トラブルシューティング