TermuxとNgrokでAndroidで自宅サーバーを公開する方法
最後までできていません。お許しを
できたらすぐに更新したいと思います。
はじめに
外で、ちょっとしたAPIを作りたいなと思った時に、すぐに作れるよう、
家で余っている古いAndroidタブレットをサーバー化し、ngrokで外部ネットワークに公開した。
ポート解放なし・パソコンをサーバー化するより省電力!
筆者の環境
Androidのシステム:Android 6.0.1
Ngrok:無料版
Termuxのインストール
Termuxアプリのインストール。
通常のアプリと同じようにインストールする。
OSバージョンが古すぎて、Google Storeで、インストールできなかったので、APKファイルをダウンロードして、手動インストールした。
必要なものをインストール
Termuxでは、パッケージのインストールにpkg
を使う。
pkg install openssh
pkg install iproute2
pkg install tree
pkg install git
とりあえず、よく使うものをインストール。
上から、
- SSH
- ネットワークの状態を確認する
- tree コマンド
- git コマンド
最後に、
pkg update
pkg upgrade
SSHから触れるようにする
タッチパネルのキーボードは嫌なので、sshでiPadから触ることにした。
sshのアカウントを設定してから、iproute2
でipアドレスを特定し、
iPadのa-shellから、ssh接続。
この記事を参考にした。↓
a-shellとは、iOSで動くターミナルアプリ。
ローカルについては権限がほとんどなく、何もできないが、
SSHを使えるのが強い
ちなみに、ローカルでPythonを動かせたりする
Node.jsでHello World
iPadから、ssh接続できたら、
とりあえず、Webサーバーを建てたかったので、
僕の一番よく知っているNode.jsをインストール。
pkg install nodejs
パソコンからJavaScript
でHello World
をちょこっと書き、
GitHub経由で、サーバーに移す。
git clone https://github.com/*******/******
最後に、サーバー起動!
node app.js
Hello World
のプログラム参考↓
const http = require("http");
const server = http.createServer();
server.on("request", function (req, res) {
res.writeHead(200, { "Content-Type": "text/plain" });
res.write("Hello World");
console.log("リクエストがきたよ");
res.end();
});
server.listen(8080);
console.log("server listen...");
では、このWebアプリケーションを外部公開していく。
ngrokで公開する
ngrokとは
ポート解放なしで、ローカルなアプリケーションを外部に公開できる。
無料版でも意外と使えるので、マイクラのサーバー立てる時とかにも使えそう。
公式ドキュメントにマイクラみたいなゲームサーバーを公開できるよと書いてたよ
インストール
termuxにインストールをするのは、
いいのを見つけたので、これを使ったらすぐにインストールできた。
Ngrokのアカウントの作成
で、サインアップして、
ダッシュボードのYourAuthToken
から、トークンをコピーしておく。
トンネリング開始
npx ngrok authtoken [コピーしたトークン]
これで、認証情報を保存。
公開したいWebサーバーを起動して、
ngrok http [ポート番号]
これで、外からアクセスできるURLを示してくれるので、それにアクセスして、
Hello Worldと出たら成功なのだが、
出なかった
なにやら、トンネリングは成功しているものの、
Ngrok Clientから自作Webアプリにアクセスできないらしい
http://localhost
で、動いてるかを確認しろとのこと
crul http://localhost
早速、手動でGET requestを送ると、
ちゃんとHello Worldが動いた
Ngrok側の不具合らしい
とりあえず再インストールしたができなかった
今の所、この問題が解決せず詰まっている。
できたら更新する予定。