#はじめに
ngrokとはlocalhostで建てたサーバをポート開放などを行わずに外部公開できるサービスです。
ngrokには有料版と無料版があり、有料版ではカスタムサブドメインを設定できるのでそのままバックグラウンドで実行させればできるみたいです。今回は無料版ngrokでのバックグラウンド実行方法を紹介します。
##導入方法
長くなるので割愛します。こちらを参考にしてください。
###アカウント登録
まず最初に公式サイトからアカウント登録(無料)を行います。
###アカウント接続
アカウント登録が終わったら認証トークンをコピーします。認証トークンはこちらにあります。
開発環境にてターミナルを開き、下記のようにコマンドを記述します。
ngrok authtoken {先ほどコピーした認証トークン}
##ローカルサーバを外部公開!
以下のように記述します。
ngrok http {ローカルサーバのポート番号}
すると以下のような結果が返ってきます。
Session Status online
Account hogehoge (Plan: Free)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://r4df3sfk91.ngrok.io -> http://localhost:3000
Forwarding https://r4df3sfk91.ngrok.io -> http://localhost:3000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
###アクセス
httpならhttp://r4df3sfk91.ngrok.io
httpsならhttps://r4df3sfk91.ngrok.io
にアクセス出来れば成功です。
#バックグラウンドで実行
さて、ここからが本題です。
フォアグランドで実行している状態だとSSHの接続が切れたり、他のプログラムを実行したりするとngrokが落ちてしまいます。それを防ぐため、今回はnohup
コマンドを使ってバックグラウンド実行を実現してみようと思います。
###nohupとは
簡単に説明すると、バックグラウンドでコマンドを実行するためのコマンドです。
詳しくはこちらを参考にしてください。
以下のように記述します。
nohup ngrok 3000 &
これでバックグラウンド実行できました。
###リンクの確認
ngrokのリンクを確認するにはcurl
で[localhost:4040/api/tunnels]を叩き、返ってきた結果から[ngrok.io]と書かれた部分を探します。
かなり長い結果が返ってくるので、grep
も併用してあげるとよいでしょう。
curl http://localhost:4040/api/tunnels | grep ngrok.io
すると結果にリンクが返ってきます。
#参考リンク
https://stackoverflow.com/questions/27162552/ngrok-running-in-background