Cryptocurrency Research Lab.

Cryptocurrency関連技術についての調査・研究

Umbrel on Ubuntu

まえがき

約1年前にReef Chainのバリデータを目指そうと用意したUbuntu環境、なかなかバリデータの一般開放が進んでいないまま、いつのまにか息子のMinecraftサーバと化してしまっていました。

結構前にUnbrelというRaspberry Pi 4上で動作するLightning Networkのノードがあるという話は耳にしていたのですが、Raspberry Pi専用なのだろうと思い込んでいたため、Raspberry Piは1~3までしか持っていないため関係ないと見送ったままでした。

以下の炎鎮先生のツイートを見かけ、思わず歓喜しました。やっと新しいおもちゃで遊べそうです!

インストール

以下の手順を参考にインストールします。

https://github.com/getumbrel/umbrel

$ curl -L https://umbrel.sh | bash

どのように動作しているのか不明なので、とりあえずpsコマンドやsystemctlコマンドで確認してみたところ、Docker内にnginx、tor、Node.jsなどが動いているようでした。

Raspberrry Piの場合と違ってインターネット上のクラウド環境にあるので、自宅からサーバまでの通信をどう暗号化するかが課題です。

案1: https化 →❌

はじめに、サーバにnginxを入れてhttpsを終端させてリバースプロキシ経由でアクセスする方式を考えました。

以下の感じの定義、サーバ証明書はとりあえず自己署名で。

server {
  listen 443 ssl;
  ssl_certificate     /etc/nginx/server.pem;
  ssl_certificate_key /etc/nginx/server.key;
  # server_name example.com;
  root /var/www/html;
  index index.html;

  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $host;
  proxy_redirect off;
  proxy_max_temp_file_size 0;
  location / {
     proxy_pass http://localhost;
  }
}

これでうまく行くだろうと思ったのもつかの間、Bitcoin NodeアプリやLightning Network Nodeアプリを入れると、2100ポート、2101ポートが新たにHTTP通信用に別サイトとして使われる仕組みのようで失敗しました。

URLやドメインでリバースプロキシ先を複数切り分ける方法をいくつか試してみましたが、期待したような結果になりませんでした。

(細かいことは割愛しますが、各サイト間の行き来がありリバースプロキシだとURL書き換えに難あり)

案2: OpenVPNを使用

サーバにOpenVPNを入れようと思いましたが、ノウハウが無いのと証明書作成あたりがややこしそうですぐ断念・・・ ちょっと大がかりですね。

案3: SSHトンネリング→⭕

炎鎮先生からありがたい助け船をいただきました。

SSHトンネリング(ポートフォワーディング)が簡単だよ、という情報を教えていただいたので、さっそく試してみました。

以下のように、使用するポートをフォワードしておくことにより、ブラウザからはhttp://localhost/でアクセスできようになりました。

こういうケースで使える方法なのですね!

$ ssh -L 80:localhost:80     <server>
$ ssh -L 2100:localhost:2100 <server>
$ ssh -L 2101:localhost:2101 <server>
︙

は接続先のサーバ。~/.ssh/configにホスト名やユーザ、SSH鍵など定義しておくとよいでしょう。

サーバ増強

現在契約中のレンタルサーバはノードとして使うにはメモリは少なく、ディスク容量も400GBしかありませんので、スケールアップする必要があるようです。

仕事ではAzureやAWSを使うことが多いのですが、プライベートでは、通信量を気にせず使える国産サービスを利用しています。

スケールアップ時にディスク容量を上げるオプションが選択できたので、ディスクサイズを400GB → 800GBへ変えました。しばらくは大丈夫でしょう。

物理的に変更してもパーティションサイズが変わっていないので、以下の手順を参考に拡張しました。

https://manual.sakura.ad.jp/cloud/storage/modifydisk/resize-partition.html

1. 現サイズ確認

$ df -h /

2. パーティションサイズ変更

$ sudo growpart /dev/vda 3

3. リブート

$ sudo reboot now

4. リサイズ

$ resize2fs /dev/vda3

5. ディスク容量確認

$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3       784G  342G  406G  46% /