使わなくなったAndroidスマホをBTC(LN)ノードに変えてみる

使わなくなったAndroidスマホをBTC(LN)ノードに変えてみる

ラズパイの値段は下がらないし、使わなくなったスマホが増えてきたので、試しにやってみました。

実験機として使うのはアリかもしれません。

今回使ったスマホはHUAWEI P20です。スペックはこちら

1. Termux のインストール

今回はroot化なしでLinuxエミュレータを動かすことができるTermuxというアプリを使用します。

Google Play版は2年前から更新が止まっており、最新版はF-Droidからしかインストールできません。

まずは、こちらから最新のAPKをダウンロードして、Termuxをスマホにインストールします。

インストールが終わると自動的にターミナル画面へと遷移します。

そのままスマホで作業することもできますが、やりずらい方はこちらを参考に、パソコンからSSHで接続してください。

2. Bitcoin Core のインストール

Termux公式レポジトリからBitcoin Coreをダウンロードします。

$ pkg update
$ pkg upgrade
$ pkg install bitcoin
$ bitcoind --version
Bitcoin Core version v22.0.0

全ブロックを保存するほどストレージに余裕はないので、フルノードではなく、Prunedモードで起動します。

$ bitcoind -daemon -server=1 -prune=30000
Bitcoin Core starting

無事同期が始まりました。

$ bitcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 28822,
  "headers": 749010,
  "bestblockhash": "00000000063ebd9d8461591fbd8ceafbeb29cdc53234145b7280f19494af732d",
  "difficulty": 1,
  "mediantime": 1260079317,
  "verificationprogress": 3.931727426841449e-05,
  "initialblockdownload": true,
  "chainwork": "0000000000000000000000000000000000000000000000000000709770977097",
  "size_on_disk": 8094215,
  "pruned": true,
  "pruneheight": 0,
  "automatic_pruning": true,
  "prune_target_size": 31457280000,
...
}

自動起動を有効化する場合は、termux-servicesというサービス管理パッケージがあるので、そちらを使用します。

$ pkg install termux-services

サービスの有効化

$ sv-enable bitcoind

サービスのログは$PREFIX/var/log/sv/<PKG>currentファイルで確認できます。

3. LND のインストール

Bitcoin Coreをインストールできたので、今度はLNDを動かしたいと思います。

LNDはPrunedモードでも動かすことができるようなのですが、同期済みのフルノードが既にあるので、そちらと接続するように設定を行います。

スマホにインストールしたBitcoin Coreは使用しないので停止します。

$ bitcoin-cli stop
Bitcoin Core stopping

スマホのLNDと接続するために、Bitcoin CoreのRPCの設定を以下のようにします。RPCはLAN内からのみアクセスできるようにしたいので、rpcbindはBitcoinノードのIPアドレス、rpcallowipはIPアドレスの範囲をご自身の環境に合わせてbitcoin.confに追加してください。

rpcbind=192.168.1.10
rpcallowip=192.168.1.0/24

UmbrelのBitcoin Coreに接続する場合は、スクリプトを編集します。

$ nano ~/umbrel/app-data/bitcoin/exports.sh

環境に合わせて、以下を追記してください。

...
BIN_ARGS+=( "-rpcallowip=${NETWORK_IP}/16" )
BIN_ARGS+=( "-rpcallowip=192.168.11.0/24" ) #追記
BIN_ARGS+=( "-rpcallowip=127.0.0.1" )
...

コンテナを再起動します。

$ sudo ~/umbrel/scripts/stop
$ sudo ~/umbrel/scripts/start

TermuxレポジトリのLNDはバージョンが古かったので、GitHubからダウンロードします(署名検証は飛ばします)。

$ pkg install wget
$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.15.0-beta/lnd-linux-arm64-v0.15.0-beta.tar.gz
$ tar -xvf lnd-linux-arm64-v0.15.0-beta.tar.gz
$ cp lnd-linux-arm64-v0.15.0-beta/* $PREFIX/bin
$ lnd --version
lnd version 0.15.0-beta commit=v0.15.0-beta

LNDの設定ファイルを作成します。

$ mkdir ~/.lnd
$ nano ~/.lnd/lnd.conf

lnd.confは以下のようにします。bitcoind.rpchostはBitcoinノードのIPアドレスを設定します。
Umbrelの場合、bitcoind.rpcuserにはumbrelbitcoind.rpcpassには~/umbrel/app-data/bitcoin/.envAPP_BITCOIN_RPC_PASSを設定してください。

[Application Options]
debuglevel=info
listen=localhost
[Bitcoin]
bitcoin.active=true
bitcoin.mainnet=true
bitcoin.node=bitcoind
[Bitcoind]
bitcoind.rpchost=192.168.1.10
bitcoind.rpcuser=username
bitcoind.rpcpass=password
bitcoind.rpcpolling=true

lndを起動します。

$ lnd

別のセッションからログインし、ウォレットを作成します。

$ lncli create
Input wallet password: #パスワードを入力
Confirm password: #パスワードを入力

Do you have an existing cipher seed mnemonic or extended master root key you want to use?
Enter 'y' to use an existing cipher seed mnemonic, 'x' to use an extended master root key
or 'n' to create a new seed (Enter y/x/n): #nを入力

Your cipher seed can optionally be encrypted.
Input your passphrase if you wish to encrypt it (or press enter to proceed without a cipher seed passphrase): #シードをパスフレーズで暗号化する場合は入力

Generating fresh cipher seed...

!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!

---------------BEGIN LND CIPHER SEED---------------
     
                   シードをメモします

---------------END LND CIPHER SEED-----------------

!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!

lnd successfully initialized!

あとはchaingraphの同期が終われば完了です。

$ lncli getinfo
{
...
    "synced_to_chain": true,
    "synced_to_graph": true,
...
}

LNDのサービスを作成する場合は、以下を実行してください。

$ mkdir $PREFIX/var/service/lnd
$ mkdir -p $PREFIX/var/service/lnd/log
$ ln -sf $PREFIX/share/termux-services/svlogger $PREFIX/var/service/lnd/log/run
$ nano $PREFIX/var/service/lnd/run

以下を貼り付けます。

#!/data/data/com.termux/files/usr/bin/sh
exec lnd 2>&1

下記コマンドを実行します。

$ chmod +x $PREFIX/var/service/lnd/run

サービス有効化

$ sv-enable lnd

有料部分では

  • Tor
  • Ride The Lightning
  • ThunderHub
  • NGINX

の導入方法を紹介しています。

Remaining : 5364 characters / 2 images
100

Sign up / Continue after login

Related stories

Writer

Share

Popular stories

自前ノードを使って簡単なライトニングアプリを作ってみる

300

チャネルバックアップファイルを自動でクラウドに保存してみる

139

チャネルバックアップファイルを自動でコピーしてみる

114