Androidでウェブサーバーをホストする方法
このモジュールでは、Android 上でウェブサーバーをホストし、ngrok を使用してポートフォワーディングを行い、移動中でも柔軟なウェブサーバーを利用する方法を見ていきます。
Androidでウェブサーバーをホストする手順
さあ、Androidデバイス上でウェブサーバーをホストする手順に入りましょう。
Termuxとハッカーのキーボードをインストールしてください。
最初に進む前に、2つのアプリケーションが必要です:Termux(コマンドを発行するのに役立ちます)とHacker’s Keyboard(通常のAndroidキーボードでは利用できないCtrl、Esc、Altなどのキーを使用するのに役立ちます)。
公式ウェブサイトやGoogle Playストアから、Termuxを入手することができます。
Termuxウィンドウ内での操作性を向上させるために、Hacker’s Keyboardもインストールできます。
2. テルムクスにパッケージをインストールする
今、Termuxに必要なパッケージの一部をインストールする必要があります。アプリを開き、以下のコマンドを入力してください。
$ pkg update && pkg upgrade
これによって、現在のシステムがアップグレードされるはずです。次に、必要なパッケージを以下のコマンドでインストールする必要があります。
$ pkg install apache2 git neovim wget curl
3. SSHを使用してAndroidデバイスに接続する
以下は完全に選択制です。ここでは、プロセス全体の間、私たちをサポートするためにいくつかの追加パッケージをインストールします。
$ pkg install openssh neofetch fish nmap
最初に、SSHを有効にして、PCから携帯電話に接続できるようにしましょう。
$ sshd
次に、ifconfigでユーザー名とIPアドレスを確認してください。
$ whoami
u0_a147
$ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.105 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::ce9f:7aff:fe81:3115 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
txqueuelen 3000 (UNSPEC)
RX packets 227165 bytes 311846650 (297.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 82264 bytes 7912862 (7.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
今、SSHサービスが実行されているポートを確認する必要があります。以下の方法で確認できます。
$ nmap -sV 127.0.0.1
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-12 14:44 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0075s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
8022/tcp open ssh OpenSSH 8.4 (protocol 2.0)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.87 seconds
ポート番号を入手したら、PCに切り替えてデバイスに接続してください。
$ ssh -p <PORT> <USER>@<IP>
たとえば、私にとって、完全なコマンドは次の通りです。
$ ssh -p 8022 u0_a147@192.168.0.105
次に、デフォルトのシェルを変更します。
$ chsh /data/data/com.termux/files/usr/bin/fish
その時点で、PCの端末からデバイスに対してコマンドを発行することができます。
4. Android上でウェブサーバーを起動させる。
今、私たちは次のコマンドでサーバーを起動できます。
$ apachectl
デフォルトで、ウェブページはポート8080でホストされています。ブラウザでそのポートにアクセスすると、以下のメッセージが表示されます。
メッセージを編集するために、viエディターでindex.htmlファイルを変更する必要があります。
$ vi $PREFIX/share/apache2/default-site/htdocs/index.html
index.htmlの内容を変更しましょう:
<html><body><h1>Android !</h1></body></html>
ページを更新して、変更が反映されているのがわかります。
この時点では、ページを自分の望むように見たり、できるようにカスタマイズすることができます。しかし、さらに機能を拡張するために、ngrokを使ってポートフォワーディングを有効にすることができます!
5. Ngrokを使ったポートフォワーディング
最初に、公式のウェブサイトから圧縮ファイルを入手する必要があります。
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm64.tgz
以下の方法でファイルを解凍してください:
$ tar -xvzf ngrok-stable-linux-arm64.tgz
次に、認証トークンを取得するために彼らのウェブサイトに登録する必要があります。
今、認証トークンを取得する必要があります。デフォルトの設定ファイルにトークンを追加するには、次のように入力してください。
$ ./ngrok authtoken <token>
今後は、より多くの機能にアクセスでき、より長時間のセッションを持つことができるようになりました。最後に、まだウェブサーバーが稼働している状態で、入力してください。
$ ./ngrok http 8080
私たちはngrokリンクを受け取ります。そこにウェブサーバーのホームページがあるでしょう。
今、ngrokリンクを使用して、ローカルネットワークの外部からサーバーにアクセスできるようになりました!
結論
このようにすることで、Androidのスマートフォンをウェブサーバーとして利用することができます。ルート化されていないスマートフォンでは、高いポートのいずれかでウェブサーバーをホストすることができますが、ルート化されたスマートフォンではデフォルトのポート80を使用することができます。