LAN 内のサーバにインターネットからアクセスする
ツイキャス API をいじっていて、外部からの WebHook を受け取りたいみたいなことを思ったが、さすがに自宅の HTTP サーバを全世界に公開したくはないのでなんとかしましょう
おおまかな流れは以下のとおり
VPS を借りる
TCP トンネリングを使って VPS 上のポートと LAN 内のマシンポートをつなぐ
ngrok 的な
できました、よかったですね
VPS
WEBARENA の Indigo というのを借りてみた
借りたマシン(最安、270円 / month)のスペック:
768MB メモリ、1コア vCPU、20GB SSD
100Mbpsまで && IPv6 のみ
IPv6 のみというのが若干クセがあるような気がするが、まあワンコイン未満でこのスペックのマシンが使えるのは破格でしょう。OS は Arch Linux …を入れたかったが、Ubuntu とかあとよくわからんやつしか選べなかったので無難に Ubuntu 22.04 にした。
追記:
IPv6 だとツイキャスからの WebHook が到達しなかったので、1グレードだけ上のマシンを借りた。
さらに追記:
Tailscale を使うようにしたので以下のやつは使わなくなりました
TCP トンネリング
要するに ngrok を自分でホストする
すばらしい比較がある https://github.com/anderspitman/awesome-tunneling
最近 Rust を触っていたのもあり https://github.com/ekzhang/bore を使ってみようとしたが、IPv6 アドレスがうまく指定できず、断念……
全体的に筋のよさそうな https://github.com/fatedier/frp を使ってみることにする
Ngrok や bore と異なり、トンネル開通時に使うポートを指定することができる
(常時稼働に向いている?)