このガイドでは、強力でユーザー フレンドリーなウェブサーバーである Caddy を使用して、Outline サーバーのセットアップを強化する方法を示します。Caddy には自動 HTTPS 機能があり、柔軟性の高い構成を備えているため、Outline サーバーの機能を拡張し強化する手段として最適であり、特に WebSocket トランスポートを使用する場合におすすめです。
Caddy とは何ですか?
Caddy は、使いやすさ、自動 HTTPS、さまざまなプロトコルのサポートという特長を持つオープンソース ウェブサーバーです。ウェブサーバーの構成を簡素化し、次のような機能を提供します。
- 自動 HTTPS: Caddy は TLS 証明書を自動的に取得し、更新して、安全な接続を維持します。
- HTTP/3 のサポート: Caddy は最新の HTTP/3 プロトコルをサポートしており、ウェブ トラフィックの処理の高速化と効率化を図ることができます。
- プラグインで拡張可能: Caddy をプラグインで拡張し、リバース プロキシやロード バランシングなどのさまざまな機能をサポートできます。
ステップ 1: 前提条件
xcaddy
をダウンロードして、インストールします。
ステップ 2: ドメインを構成する
Caddy を開始する前に、サーバーの IP アドレスを指すようにドメイン名が正しく構成されていることを確認します。
- A/AAAA レコードの設定: DNS プロバイダにログインし、サーバーの IPv4 アドレスと IPv6 アドレスをそれぞれ指すようにドメインの A レコードと AAAA レコードを設定します。
DNS レコードの確認: 正式な DNS レコードをルックアップし、レコードが正しく設定されていることを確認します。
curl "https://cloudflare-dns.com/dns-query?name=DOMAIN_NAME&type=A" \ -H "accept: application/dns-json"
ステップ 3: Caddy のカスタムビルドを構築して実行する
xcaddy
を使用して、Outline コアサーバー モジュールと必要な他のサーバー拡張機能モジュールを含む caddy
のカスタム バイナリを構築できます。
xcaddy build \
# The example uses a YAML config, so include a YAML config adapter module.
--with github.com/iamd3vil/caddy_yaml_adapter \
# The Outline core server module.
--with github.com/Jigsaw-Code/outline-ss-server/outlinecaddy
ステップ 4: Outline で Caddy サーバーを構成して実行する
新しい config.yaml
ファイルを作成し、次の構成を含めます。
apps:
http:
servers:
server1:
listen:
- ":443"
routes:
- match:
- host:
- 'DOMAIN_NAME'
- path:
- "/TCP_PATH"
handle:
- handler: websocket2layer4
type: stream
connection_handler: ss1
- match:
- host:
- 'DOMAIN_NAME'
- path:
- "/UDP_PATH"
handle:
- handler: websocket2layer4
type: packet
connection_handler: ss1
outline:
shadowsocks:
replay_history: 10000
connection_handlers:
- name: ss1
handle:
handler: shadowsocks
keys:
- id: user-1
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
この構成は Shadowsocks-over-WebSockets 方式で、ウェブサーバーが 443
ポートでリッスンし、Shadowsocks でラップした TCP および UDP トラフィックをそれぞれ TCP_PATH パスと UDP_PATH パスで受け入れることを意味します。
作成した構成を使用して Outline とその拡張を含む Caddy サーバーを実行します。
caddy run --config config.yaml --adapter yaml --watch
他の構成例については、outline-ss-server/outlinecaddy GitHub repo をご覧ください。
ステップ 5: 動的アクセスキーを作成する
高度な構成の形式を使用してユーザーのクライアント アクセスキー ファイル(YAML)を生成し、サーバー側で以前に構成した WebSocket エンドポイントを含めます。
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN_NAME/TCP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN_NAME/UDP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
動的アクセスキー ファイル(YAML)を生成したら、ユーザーに提供する必要があります。このファイルは静的なウェブ ホスティング サービスでホストすることも、動的に生成することもできます。動的アクセスキーの使用方法を確認してください
ステップ 6: Outline クライアントで接続する
公式の Outline クライアント アプリケーション(バージョン 1.15.0 以降)のいずれかを使用し、新しく作成した動的アクセスキーをサーバー エントリとして追加します。[接続] をクリックし、Shadowsocks-over-Websocket 構成を使用してサーバーへのトンネリングを開始します。
IPInfo などのツールを使用して、Outline サーバー経由でインターネットをブラウジングしていることを確認します。