AndroidスマホでNostrP2Pのサーバが動いた

先日以下のような記事をQiitaに書いたのですが、サーバをずっと動かすとなるとそれが可能なマシンを用意できるか、持っているかが問題だよなー、とか考えてました。

qiita.com


で、そういえば、AndroidスマホならTermuxというAndroid端末内に独自Linux環境を構築するアプリがあるので、使わなくなったAndroidスマホなんかを有効活用して、サーバ動かしておくというのは悪くないのでは、と思い試してみたところ、見事動きました!

(そもそもAndroidLinuxの一種なので、アプリがユーザに見せるシェルにおいてだけ、chrootファイルシステムのルートの位置を変更して、あれこれ必要なファイルを配置してあげれば、独自のLinuxユーザランドが作れるよね、というのがTermux、という認識)


まずは、下のサイトなどを参考にしつつ、Fdroidアプリを経由してTermuxをインストール。

www.miraclejob.com

wiki.termux.com

 

Termuxがインストールできたら以下のようにコマンドを実行すればサーバ起動までたどり着けます。

$ apt update
$ apt upgrade
$ apt install -y golang git
$ git clone https://github.com/ryogrid/nostrp2p
$ cd nostrp2p
$ go build -o nostrp2p main.go
$ ./nostrp2p server -l 0.0.0.0:20000 -p <npub形式の公開鍵> -b ryogrid.net:8888

あとは、スマホIPアドレスを調べて、クライアントに指定すればOK。*1

ちゃんと、ブートストラップサーバにも接続できていました。

なお、サーバを止めるときは Ctrl + c でサーバプロセスを終了させて、exitコマンドでシェルを終了、からのTemuxを普通のアプリと同じように終了させるだけ。
Termuxで構築した環境が不要になった場合は、Termuxをアンインストールすれば、環境とその中で作ったファイル含めて削除してくれるはず。

以下、スクショ。

 


クライアントのサーバアドレス設定

(今回はWindows用のネイティブクライアントを使いました)



投稿してみたところ

 

ブートストラップサーバ(兼Trial用サーバ)への投稿データの転送(自分用サーバがブロードキャスト)も正常に行われ、Trial用サーバに接続したWebクライアントでもちゃんと表示されています。

 

いやー。Termuxすごいなー。

 

*1:WiFiで接続していたら、設定画面のネットワークのところから辿っていけば割り当てられているIPアドレスを確認できます。IPアドレスがちょこちょこ変わって困るという場合はtailscaleなどのVPNアプリを導入してVPN上の固定アドレスを使えばOK