Androidでウェブサーバーをホストする方法

このモジュールでは、Android 上でウェブサーバーをホストし、ngrok を使用してポートフォワーディングを行い、移動中でも柔軟なウェブサーバーを利用する方法を見ていきます。

Androidでウェブサーバーをホストする手順

さあ、Androidデバイス上でウェブサーバーをホストする手順に入りましょう。

Termuxとハッカーのキーボードをインストールしてください。

最初に進む前に、2つのアプリケーションが必要です:Termux(コマンドを発行するのに役立ちます)とHacker’s Keyboard(通常のAndroidキーボードでは利用できないCtrl、Esc、Altなどのキーを使用するのに役立ちます)。

公式ウェブサイトやGoogle Playストアから、Termuxを入手することができます。

Termux From Playstore

Termuxウィンドウ内での操作性を向上させるために、Hacker’s Keyboardもインストールできます。

Hacker's Keyboard From Google Playstore

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の端末からデバイスに対してコマンドを発行することができます。

Connecting To Android Over SSH

4. Android上でウェブサーバーを起動させる。

今、私たちは次のコマンドでサーバーを起動できます。

$ apachectl 

デフォルトで、ウェブページはポート8080でホストされています。ブラウザでそのポートにアクセスすると、以下のメッセージが表示されます。

The Page Hosted On Port 8080

メッセージを編集するために、viエディターでindex.htmlファイルを変更する必要があります。

$ vi $PREFIX/share/apache2/default-site/htdocs/index.html

index.htmlの内容を変更しましょう:

<html><body><h1>Android !</h1></body></html>

ページを更新して、変更が反映されているのがわかります。

Our Changed HTML Page

この時点では、ページを自分の望むように見たり、できるようにカスタマイズすることができます。しかし、さらに機能を拡張するために、ngrokを使ってポートフォワーディングを有効にすることができます!

5. Ngrokを使ったポートフォワーディング

最初に、公式のウェブサイトから圧縮ファイルを入手する必要があります。

$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm64.tgz

以下の方法でファイルを解凍してください:

$ tar -xvzf ngrok-stable-linux-arm64.tgz

次に、認証トークンを取得するために彼らのウェブサイトに登録する必要があります。

Ngrok

今、認証トークンを取得する必要があります。デフォルトの設定ファイルにトークンを追加するには、次のように入力してください。

$ ./ngrok authtoken <token>

今後は、より多くの機能にアクセスでき、より長時間のセッションを持つことができるようになりました。最後に、まだウェブサーバーが稼働している状態で、入力してください。

$ ./ngrok http 8080
Port Forwarding With Ngrok

私たちはngrokリンクを受け取ります。そこにウェブサーバーのホームページがあるでしょう。

Our Page Being Served Via Ngrok

今、ngrokリンクを使用して、ローカルネットワークの外部からサーバーにアクセスできるようになりました!

結論

このようにすることで、Androidのスマートフォンをウェブサーバーとして利用することができます。ルート化されていないスマートフォンでは、高いポートのいずれかでウェブサーバーをホストすることができますが、ルート化されたスマートフォンではデフォルトのポート80を使用することができます。

コメントを残す 0

Your email address will not be published. Required fields are marked *