【第4回】「Umbrel」で素人でも簡単にダークマーケットを作る!BTCPay Server設定
久し振りのUmbrelの記事です。前回はUmbrelでLightningノードを構築してルーティング手数料を稼ごう!的な内容でした。
Lightningノードの運用に関してはKJ氏のダイヤモンドハンズが最近話題になっており、再びUmbrelブームが来るのではないでしょうか?
さて、第4回目となる本記事ではUmbrelで建てた自前ノードを利用してダークマーケットを作ってみよう!という物騒な内容になります。
え?ダークマーケット?この人は反社会的勢力なの?
と思われないように補足しておきますが、初めはUmbrelの自前ノードを利用して自身のブログなどでビットコイン&ライトニング決済を導入してみようと思ったのです。
しかしUmbrelは匿名性・安全性向上のため現状外部からはTorを利用しないと接続できず、結果的にTorブラウザを使ってアクセスするビットコイン決済対応のオンラインショップ(ダークマーケット)が出来てしまった…という流れです。
(Umbrelの設定画面、Torの設定変更は現状できないが今後は対応するかも?)
そんな訳で、今回は需要があるか不明ですが「Umbrelを利用してダークマーケットを作ってみたい!」「自前のノードに直接送金されるPOSレジ風のUIを使いたい!」なんて人におすすめの記事になります。
UmbrelアプリストアからBTCPay Serverをインストールする
まずはUmbrelを開いてApp Storeから「BTCPay Server」をインストールしていきますが、UmbrelへのアクセスはTor経由で行います。(その方が後々都合がいいので)
PCでBraveを利用しているのであれば右上にある三本線から「Torで新しいプライベートウィンドウを開く」でTorブラウザが利用できます。
詳しい方法は第2回に載せていますので分からない場合はそちらを見てね
TorブラウザでUmbrelを開いたらApp Storeから「BTCPay Server」をインストールします。
インストール後にアプリを開き、アカウントを作成しましょう。
※この時の注意点ですが、すでにBTCPayサーバーのアカウントを持っている人でも新規に作成してください。
前述の通り今利用しているUmbrelはTorでなければ接続ができないためか、既存のアカウントではログインできませんでした。
また、今回Umbrel上で作成したアカウントでは他のBTCPayサーバーにログインできないのであしからず(この辺りの謎は詳しい人に聞いてください、私は素人です)
BTCPayサーバーでお店を作成&決済の設定を行う
アカウントが作成出来たらログイン、BTCPayサーバーの管理画面に入ります。
「STORES」→「Create a new store」から早速お店を作っていきましょう。名前はお好みで。
STOREを作成すると設定画面に遷移するので、このお店で決済された時に受け取るウォレットを連携していきます。
オンチェーンのBTCとLightningのBTCふたつが設定できますが、オンチェーンの場合接続方法がややこしかったので今回はLightning決済のみとします。
Lightningの「Setup」を選択
注意書きを読んだ後に赤枠部分に「Internal Node」と入力し、「Test connection」を押す。
Umbrel上の自前Lightningノードに接続成功するとこんな感じのが出てくるので、再度下にスクロールして「Submit」を押せばLightning決済の設定は完了です!
お店の中に売りたい商品を設置していく「APPS」の設定
お店を作って、自前の口座(Lightning)も設定したので次は売りたい商品を並べていきましょう。
上部メニュー欄の「APPS」を選択し、「Create a new app」から作成していきます。
この時に「App type」が選択可能ですが、普通のオンラインショッピング的なサイトを作る場合はテンプレートの「Point Of Sale」で問題ないです。
作成後は設定画面に遷移します、せっかくなので一番下までスクロールをして「View App」からテンプレートがどんな感じか見てみましょう
(LocalでなくTorで接続してると画像が見れないかも)
テンプレートでもそれなりにオンラインショップ感があって良いですね、もちろん商品のBuyボタンを押すとライトニング決済が可能なので別のウォレットからテスト送金をしてみるのもおすすめです!
自分のラズパイノードに直接振り込まれるのでなかなか楽しいです。第三者の仲介無しにオンラインショップを運営できるのは素晴らしい。
一通り確認したらAppの設定画面に戻り、自分の好みに変えていきましょう。各種設定項目はGoogle翻訳などを利用すればおおよそ把握できるはず。
注意点としては商品画像のアップロードです。画像をアップロードする場合は上部メニュー欄の「Server setting」から「Services」へ、「External storage services」で画像のアップロード先を設定します。
クラウドストレージも選択できますが、Torの絡みがあるので「File System」に設定しましょう(Umbrelのローカルストレージ)
アップロード先を設定したら「Files」に進み、使いたい商品画像をアップロードします。
Umbrelのローカルストレージにアップロードが完了すると一覧に表示されるので「Get Link」をクリック。
このお店にはTorでしか外部接続ができないので「onion」が入っているTorアドレス=「Direct Url」をコピーします。
商品画像のURLをコピーしたらAppの設定画面に戻り、「Products」→「Add」をクリック。
「image」の欄に先程コピーしたURLを貼り付ければ商品画像の設定は完了です!
後は商品名(Title)や価格(Price)、説明(Description)、Inventory(在庫数)などを設定し「Save Changes」で商品登録できます。
一通り商品登録が完了したら下までスクロールし、【SaveSetting】で保存しましょう。保存後にView Appで確認を行い、問題なければダークマーケットの完成です!APPのURLをブックマークしておきましょう。
今回はダークマーケットということで適当に「NISINARI STORE」を作ってみました。こちらにアクセスするにはTorブラウザで開く必要があります。
スマホやタブレットの場合は「Torブラウザ」というアプリが個人的にはおすすめです。
という訳で今回はBTCPayサーバーのテンプレートを利用しましたが、CSSやHTMLの知識があればかなりのカスタマイズも可能だと思います。
現状はTor接続でしかアクセスできませんが、今後Umbrel側で設定を変更できれば自分のノードでビットコイン決済ができるオンラインショップが簡単に作れるので、銀行や中抜き決済業者を省いていくことも可能ですね。
Tor制限のあるUmbrelではなく別でノードを構築してBTCPayサーバーを建てればすぐにでも実現できますが、難易度が高いので気が向いたら試してみたい思います()
これを見てダークマーケットを作ろう!というクレイジーな人はほぼいないと思いますが、日本語のBTCPayサーバー設定情報が少なかったので誰かの役には立つことを願ってます。
くれぐれも法に触れるようなことはしないで下さいね!私言いましたからね!
おまけ
App設定の際にDefault Viewで「Light」を選択するとPOSレジ的なサムシングを作ることができます。
基軸をJPYにしているので日本円を入力すると同額のSatoshi決済インボイスが発行されます。
Umbrelを店舗で使っているけど残高や出金操作のできるホーム画面を出したくない場合、タブレットやスマホなど別端末で決済したい場合に便利?かもしれません。
一応UmbrelではZap,Zeusなどのウォレットを連携できるのですが、動作が不安定だったり繋がらなかったりするので現時点でモバイルウォレットとして使うなら案外悪くないかもしれません。
おまけその2
各StoreごとにWebhookの設定が可能です。決済がされた時などタイミングの設定も可能。
以前NEMO FEED(現在機器故障につき休止中)で利用していたLINE通知を利用したところ、決済が完了した際に通知を送ることができました。
このあたりもOPEN NODEなどを使えば同じことはできますが、第三者を介さずにできるというのは一歩進んだような感じで楽しいです。
Webhookも使い勝手が良いのでIFTTTと組み合わせ民泊のスマートロック開閉と連携させたりIoTでも面白い利用法ができそう。