こんにちは、ラボルの@naoki_m05です。
@lbl_teraokaがローカルで起動しているWebサーバーをインターネットに公開するツールであるngrokの紹介をしていますが、ngrokの代替ツールでありOSSでもあるExposeを使ってみたので、それの紹介をしたいと思います。
Exposeとは
先に簡単に触れてますが、トンネリングすることでローカルで起動しているアプリケーションをインターネットからアクセス可能にするものです。ngrokの代替です。
なぜExposeなのか
Exposeを使うと、トンネリングするためのサーバを自前で用意することができます。 このサーバから、ローカルで起動しているWebサーバーにForwardすることができるようになるのです。
これについて自前のサーバ経由で公開する方法
にて説明します。
Exposeのサーバ経由でインターネットに公開する方法
インストール方法
Installationにインストール方法が記載されています。
ファイルをダウンロードして、実行のパーミッションをつけてパスを通せば終わりです。
他にもdockerを使う方法などもあります。
アカウント作成とトークン取得
sign upして、ダッシュボードからトークンを取得します。 https://expose.dev/dashboard
トークンの設定
$ ./expose token (your token)
ローカルにWebサーバー立てる
$ cat index.php <?php echo "hello world"; $ php -S localhost:8888 index.php [Sun Jun 4 02:13:04 2023] PHP 8.2.6 Development Server (http://localhost:8888) started
これで、準備完了です。
公開
$ ./expose share http://localhost:8888 --subdomain=site Status Expose Pro 💎 Shared URL: localhost:8888 Dashboard: http://127.0.0.1:4040 Public HTTP: http://site.sharedwithexpose.com Public HTTPS: https://site.sharedwithexpose.com
subdomainは他の誰かが使っているとコンフリクトを起こします。ここではsiteを指定していますが、他のものでも構いません。
インターネットに公開できました。
自前のサーバ経由で公開する方法
ここからがExposeのメリットです。
トンネリングするためのサーバを自前で立てる
トンネリングするためのサーバを立てます。
$ ./expose serve Expose server running on port 8080.
設定の追加
~/.expose/config.phpを下記の通り修正します。
return [ (省略) 'servers' => [ 'main' => [ 'host' => 'sharedwithexpose.com', 'port' => 443, ], 'sub' => [ // 追加 'host' => 'localhost', // 追加 'port' => 8080, // 追加 ] ], (省略)
subというキー名に意味はありません。mainの対となる単語を選んだだけです。
自前で立てたサーバでトンネリングして公開
--server=subを追加で指定します。
./expose share http://localhost:8888 --subdomain=site --server=sub Thank you for using expose. Shared URL: localhost:8888 Dashboard: http://127.0.0.1:4040 Public HTTP: http://site.localhost:8080 Public HTTPS: https://site.localhost
まとめ
ローカルホストのサーバをインターネットに公開するだけであれば、ngrokで十分ですが、レイテンシやセキュリティの観点では、OSSのExposeの方が良いかもしれません。
今後、別記事でExposeのユースケースを紹介できたらと思います。
公式URL
最後に
ラボルでは、エンジニアを積極採用中です。1、2年目のエンジニアから経験豊富なテックリードやエンジニリングマネージャーまで、興味がある方はぜひご応募ください!!