この記事は、IoTLTアドベントカレンダー2019(neo) 23日目の記事です。1
はじめに
ローカルサーバーを「ssh」コマンドで公開できるサービス「Serveo」の紹介です。例えばポート「80」のWebサーバーで次のコマンドを実行します。
— 日経Linux | ラズパイマガジン (@nikkei_Linux) October 28, 2019
$ ssh -R 80:localhost:80 https://t.co/wHKbxjd4YT
表示されるURLでアクセスできます。詳細は最新号の特集1(p.56)に掲載!https://t.co/5eQn6q21QN pic.twitter.com/0PBHpHb7J9
ラズパイマガジンの姉妹紙、日経Linux(リナックス) 2019年11月号でも特集されていたらしく、IoT業界でもSSHコマンドで手軽に外部へサービスを公開できる serveo についてご存じの方は少なくないのではと思います。
ngrok 同様、センサーのっけたシングルボードコンピューターやプロトタイプを開発用途でサクッと公開できる手段としてとても魅力的なサービスに思えます 2。
しかしながら悲しいことに、心ないユーザーのフィッシングサイトへの悪用への影響でサービスが復旧されない日々が続いています 3。
そんな serveo のメーリングリストでは「いつ復活するんだ」「来年か、二度と無いんじゃないの」「はやくして。無料でして。やくめでしょ」「俺はマイクラサーバーを公開したいのにどうすればいいんだ」といった悲しみ(?)の声 4 が渦巻いているんですが、その中で
servero を何に使いたいの?
WebベースのアプリやWebサイトなら http://localhost.run/ でいけるよ
といった投稿がありまして。知らないサービスなのでちょっと調べたり比較してみました。
localhost.run の使い方としくみ
localhost.run は serveo と同様に、SSHポートフォワーディングでHTTPポートをトンネリングできる無料のWebサービスです。
sshポートフォワーディングによるトンネリング
serveo 同様に、手元の端末から
ssh -R 80:localhost:8080 ssh.localhost.run
と、指定のSSHサーバ( ssh.localhost.run
)へポートフォワーディング設定をして接続すると、
Connect to http://xxxx-yyyy.localhost.run or https://xxxx-yyyy.localhost.run
と、ドメイン(URL)を発行してくれます。
この例であれば、https://xxxx-yyyy.localhost.run
に外部からアクセスすれば、手元の端末の8080番ポートにHTTPアクセスが転送されてきます。
ちなみに、 xxxx が手元の端末のユーザー名、 yyyy がランダムな文字列になるようです。ドメイン(URL)は、接続を行うたびに変わります。
他のサービスとの違い
ngrok, serveo, localhost.run はそれぞれ(原則)無料で使用できるトンネリングツールですが、ちょっと違いがあるので並べてみます。
ngrok | serveo | localhost.run | |
---|---|---|---|
仕組み | Long-Lived TCP Connection | SSH Port-Forwarding | SSH Port-Forwarding |
転送可能 | HTTP(S), TCP | HTTP(S), TCP | HTTP(S)のみ |
複数ポートの 転送指定 |
可能 | 可能 | 不可能 |
トンネリング用 サーバのありか |
AWS(リージョン指定可) | ? 5 | GCP |
ドメイン(URL) | 接続のたびに変化 | ユーザー名・IPごとに固定 | 接続のたびに変化 |
価格 | 一部無料 | 無料 | 無料 |
無料での 主な制限 |
トンネリング継続時間6、 1分間あたりのコネクション数、 ドメインの固定 など |
原則なし | 原則なし |
安定性(主観) | 良い | 💀 | ?7 |
こうして比べてみると、 serveo の復活を待ち望むユーザーが多いのも頷けますね。
でも安定的に使いたいなら、ngrok(課金)な気がします...
おわりに
serveo のメーリングリストを除いていたら、代替になりそうなサービスがあったので解説してみました。
ぜひお手元でプロトタイピングする際の参考になればと思います。
-
HSTハワイ標準時(GMT-10:00, JST-19:00) ↩
-
ngrok とそのしくみは、ゆるWeb勉強会@札幌の 開発環境用のトンネリングツールとそのしくみ(ngrok編) で発表しました ↩
-
serveo のしくみと現状は、 開発環境用のトンネリングツールとそのしくみ(serveo編) で述べました ↩
-
意訳ですがそんなノリで、メーリングリストに流れてくるタイトルがだいたい「し、死んでる...」「いつ復活するの」なのがちょっと面白い(恐ろしい)、Serveo Help and Discussion にジョインナウ! ↩
-
AWSだったような気がするんですが(いつか復活することがあれば)調べておきます。 ↩
-
ユーザー登録すれば、継続時間の制限は無くなる。 ↩
-
localhost.run のtwitterアカウントによれば、やっぱりフィッシングサイトへの悪用が原因で停止していた期間があるようです。こういうサービスの宿命ですね... ↩