らぼるてっく。

てっくてっく歩いてっく。

トンネリングツールのExposeを使ってみた

こんにちは、ラボル@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年目のエンジニアから経験豊富なテックリードやエンジニリングマネージャーまで、興味がある方はぜひご応募ください!!

labol.co.jp