(一部で?)話題の serveo サービスを使ってみました。

serveo は http://localhost:XXXX で稼働するウェブサービスを https の固定URLで公開するサービスです。加えて無料で、しかも(ssh が導入済みであれば)ツール類のインストールは不要です。なお以下の作業は Windows 10 の WSL(Ubuntu 18.04) 環境を使って行いました。macOS や Linux, Raspberry Pi などを使う場合でも同様のはずです。

どのように使うかを以下で紹介しますが、今回は例としてこのウェブアプリケーションをネット公開してみることにします:
https://github.com/dotnsf/keytouch_sample

2019080702



「キーボードから入力されたキーをそのまま画面に表示する」という Node.js のウェブアプリケーションです。Node.js が導入されていればローカル環境で稼働させることができます。

実際に動かすには上記リポジトリからコード一式を git clone またはダウンロード&展開して、npm install して app.js を実行します(緑字は出力されるメッセージです):
$ git clone https://github.com/dotnsf/keytouch_sample

$ cd keytouch_sample

$ npm install

$ node app
server starting on 6022 ..

実行すると空きポートを見つけてリクエストを待受ける状態になります。上記例では 6022 番ポートで稼働しています。

このアプリケーションを使うには、ウェブブラウザで http://localhost:6022/ へアクセスします(6022 の部分は実際に稼働しているポート番号を指定してください):
2019080701


↑キーボードを適当に叩いて入力すると、叩いたキー文字が画面に表示される、というだけのアプリケーションです(英文字や数字は正しく表示されると思いますが、一部の記号には対応していません)。

では、この localhost で稼働中のアプリケーションを serveo を使って公開してみます。別のターミナルを開いて、以下のコマンドを入力します(6022 の部分は実際に稼働しているポート番号を指定します):
$ ssh -R 80:localhost:6022 serveo.net
Forwarding HTTP traffic from https://ledo.serveo.net
Press g to start a GUI session and ctrl-c to quit.

実はたったこれだけです。上記例では https://ledo.serveo.net にフォワードされる、というメッセージが出力されています。実際にウェブブラウザで(可能であれば別のマシンのウェブブラウザで)指定された URL にアクセスしてみると、実際に稼働していることが確認できます:
2019080703


こんな簡単に、しかも https の固定 URL でウェブサービス公開ができてしまいました。驚き!

ちなみに、このサービス自体は SSH のフォワーディング機能だけで実現しているようで、上記コマンドの "localhost" はローカルホストでなくても構いません。なので(ホスト名が変わることが問題にならなければ)http で動いているサービスを簡単に https 対応させることもできそうです。

その他、コマンドのオプション等は公式ページに詳しく紹介されているので参照ください。いやそれにしても便利なサービスだ。自分で作ったアプリがここまで簡単にウェブ公開できるとは・・