ngrokをバックグランドで動かす

スポンサーリンク

ngrokの問題点

うちの環境だとPCからラズパイにteratermを使ってSSHで接続し、ngrokを実行しています。
昨日気づいたのですが、ngrokを実行しているteraterm画面を閉じるとngrokが終了します。。
ならngrokをバックグラウンドで実行すればいいと思い試してみると、
こちら画面のようなアクセス先を表すURLがログに吐かれない。。

※regionはアジアにしてます。

$ ngrok http 8000 -region=ap

フォアグラウンドで実行しないとダメなのか?

やりたいこと

以前の投稿でngrokを使って外から自宅にあるラズパイに接続しました。

このやり方だとSSHを切断したら使えなくなってしまいますが、
SSHを切断しても使えるようにしたいと思います。

有料版なら

有料版ならカスタムサブドメインを設定できるので
バックグラウンドで実行させるだけで大丈夫そうです。
こちらのサイト様がとても参考になります。

無料版でどうにかする方法

残念ながらカスタムサブドメインは無料版では使えません。
何とか無料版で解決できないかと調べてみると
stackoverflowに既に解決策がありました。世界は広い・・・。

自分の環境にあわせるとコマンドは以下のようになります。太字がコマンドです。

この方法だとSSHを切断してもプロセスは落ちませんでした。

$ nohup ngrok http 8000 -region=ap &
[1] 839
$ nohup: 入力を無視し、出力を 'nohup.out' に追記します
$ curl localhost:4040/status | grep ngrok.io

$ curl localhost:4040/status | grep ngrok.ioの結果は大変長いのでここには張りません。ですが以下のようなngrok.ioを含んだURLが表示されます。

http://81f6XXXXX.ap.ngrok.io

nohupでngrokをバックグラウンドで実行させて、ステータスをcurlで確認しています。
curlだけだと該当箇所を探すのが面倒なのでgrepしています。grepあっても出力は長いです。。

ちなみにnohup.outには何も書かれませんでした。

pythonについても同じようにバックグラウンドで動かします。

$ nohup python app.py &

プロセスが動いているかはps -efやjobsなどで確認できます。

最後に

当初はngrok実行時の画面を残しておけば良いので、
VNCかHDMIで繋げてbyobuでも使ったら出来るかなと模索してました。
が、これらを試す前にcurlで何とかなってしまった。。curlはホント便利ですね。
VNCはまたの機会に試してみようと思います。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする