inletsで複数ドメインが使えるようにする

公開日時
更新日時

前回の記事でngrokの代わりにinletsを使うようにしたが、解説記事の方法だと一つのドメインしか設定することができない。

inletsのREADMEにあるようにupstreamを複数指定した際に正しくアクセスできるように追加の設定を行う。

inlets client \
 --remote=$REMOTE \
 --token $TOKEN \
 --upstream="store1.example.com=http://127.0.0.1:8001,store2.example.com=http://127.0.0.1:8002"

ドメイン管理にはCloudflareを利用しているので、Cloudflareでの設定方法をまとめておく。

Cloudflare設定

  • inlets severが動いているサーバのIPをワイルドカード(*)としてAレコードに追加
  • MyProfile => API Tokens => Global API Keyの値をメモしておく

inlets server(GCP)設定

  • caddyの「To build Caddy with plugins」を実施する
  • caddyディレクトリを作成し、以下のgoファイルを設置
// main.go

package main

import (
        "github.com/caddyserver/caddy/caddy/caddymain"
        _ "github.com/caddyserver/dnsproviders/cloudflare"
)

func main() {
        caddymain.Run()
}
  • ビルド
go mod init caddy
go get github.com/caddyserver/caddy
go build
  • Caddyfileにワイルドカード設定を記述
 Caddyfile
*.example.com {
  tls {
    dns cloudflare
  }

  proxy / 127.0.0.1:8080 {
    transparent
  }

  proxy /tunnel 127.0.0.1:8080 {
    transparent
    websocket
  }
}
  • systendファイルにEnvironmentFileを追加
# /etc/systemd/system/caddy.service

[Unit]
Description=Caddy Server Service
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=1
StartLimitInterval=0
WorkingDirectory=/root/caddy
ExecStart=/root/caddy/caddy
LimitNOFILE=65536
EnvironmentFile=/etc/sysconfig/caddy

[Install]
WantedBy=multi-user.target
  • 環境変数を設定
# /etc/sysconfig/caddy

CLOUDFLARE_API_KEY=
CLOUDFLARE_EMAIL=
  • systemd再読み込み
sudo systemctl daemon-reload
sudo systemctl restart caddy
  • エラーになっていないか確認
sudo systemctl status caddy

Serving HTTPS on port 443
https://*.example.com

inlets client設定

  • 複数サーバを別ポートで立ち上げる
  • 下記コマンドのようにupstreamを複数指定する
inlets client \
 --remote=$REMOTE \
 --token $TOKEN \
 --upstream="store1.example.com=http://127.0.0.1:8001,store2.example.com=http://127.0.0.1:8002"

browserにて

  • store1.example.com, store2.example.comにアクセスしてそれぞれ結果が帰ってくることを確認

これでinletsで複数ドメインが使えるようになった。

参考


Related #gcp

Cloud Runのコールドスタートを避けるためにcurlで起こし続ける

定期リクエストを送っている間はコールドスタートは発生していないことが確認できた

GCP VMインスタンスのSSHポートを変更した

Network Internet Egress from Americas to EMEA

[Action Required] Internal error has affected services in Cloud Run that use Cloud Load Balancing

デフォルトURLで利用している場合は対応不要

GCPの無料インスタンスがF1-microからE2-Microに変わった

メールが来ていたのを見落としていた

ローカルディレクトリをCloud Storageに同期する

gsutil rsyncを利用した