こんにちは。
1日かけてXMRのノードを設立したので報告します。
私が立てたXMRのノードアドレスとポートはこちらになり、XMRのウォレットや支払いサーバなどでTorを通すと利用できます。
364364hndcwnr5y2ueuxzqhn2xvu6ievv755y5i2cj4bedxpvlhxcgid.onion:18089
下記のXMRノードリストからも確認できると思います。
このような事を考えて実行した理由はインド先輩兄貴が運営しているヤジュッターにてXMRでヤジュコイン(ヤジュヤジュ動画で使える通貨)をXMRで買えないかという話に若干なって、取引に必要なXMRのノードを試しに立てて実験してみたかったからです。
自宅にある余ったミニPCと回線にUbuntuとTorとMonerodをインストールして実行しています。
VPSではなく自宅鯖を使った理由としては必要スペックが高すぎたからです。
- SSD に少なくとも 256 GB のストレージ (フルノードの場合)
- 少なくともデュアルコア、理想的にはクアッドコア
- 少なくとも2GBのRAM、理想的には4GB
- 最低10Mbpsの接続、最低100GBの月間データ
はっきり言って必要なストレージが多すぎます。
ドメインについても最初は33-4のドメインを利用しようと思いましたが、Cloudflareを経由するとP2P通信が制限される事を知ったのでサーバのIPの保護との兼ね合いの末にOnionドメインを使ってノードを公開する事に決めました。
Linuxをインストールしたらまずはファイアウォールの設定を行います。
これはOnionドメイン用なのでクリアネットの場合は「allow (ポート番号)」でポートを開放する必要があります。
# UFWで全ポート閉鎖
# Torは外向き接続のみ(ポート開放不要)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Torをインストールします。
# 更新とTorインストール
sudo apt update && sudo apt upgrade -y
sudo apt install tor git build-essential cmake pkg-config \\
libboost-all-dev libssl-dev libzmq3-dev libunbound-dev \\
libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev \\
libexpat1-dev libpgm-dev qttools5-dev-tools libhidapi-dev \\
libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev \\
libminiupnpc-dev
MonerodをインストールしてTorrcを設定します。
# 公式バイナリダウンロード(推奨)
cd ~/Downloads
wget [<https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.4.3.tar.bz2>](<https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.3.4.tar.bz2>)
tar -xvf monero-linux-x64-v0.18.4.3.tar.bz2
sudo cp monero-x86_64-linux-gnu-v0.18.4.3/monerod /usr/local/bin/
sudo cp monero-x86_64-linux-gnu-v0.18.4.3/monero-wallet-cli /usr/local/bin/
# バージョン検証
monerod --version
Tor Hidden Service設定に入ります。
sudo vim /etc/tor/torrc
# torrc設定
HiddenServiceDir /var/lib/tor/monero-node/
HiddenServicePort 18084 127.0.0.1:18084
HiddenServicePort 18089 127.0.0.1:18089
そしてTorを再起動してドメインを確認します(後ほど変更しますが)
sudo systemctl restart tor
sudo cat /var/lib/tor/monero-node/hostname # .onionアドレス取得
Monerod設定ファイルを編集します。
sudo vim ~/.bitmonero/bitmonero.conf
# データディレクトリ
data-dir=/home/xmr/.bitmonero
# ログ設定
log-level=0
log-file=/home/xmr/.bitmonero/monerod.log
# Tor設定
anonymous-inbound=(onionアドレス).onion:18084,127.0.0.1:18084
tx-proxy=tor,127.0.0.1:9050,16
hide-my-port=1
no-igd=1
# P2P設定
p2p-ignore-ipv4=1
# RPC設定
rpc-bind-ip=127.0.0.1
rpc-bind-port=18089
confirm-external-bind=1
restricted-rpc=1
# ZMQ無効化
no-zmq=1
daemonのsystemd.service化をします。
sudo vim /etc/systemd/system/monerod.service
[Unit]
Description=Monero Full Node
After=network.target tor.service
Wants=tor.service
[Service]
Type=forking
PIDFile=/run/monerod/monerod.pid
# 実行前にディレクトリ作成
ExecStartPre=/bin/mkdir -p /run/monerod
ExecStartPre=/bin/chown あなたのユーザー名:あなたのユーザー名 /run/monerod
# Monerod起動
ExecStart=/usr/local/bin/monerod \\
--config-file=/home/あなたのユーザー名/.bitmonero/bitmonero.conf \\
--detach \\
--pidfile=/run/monerod/monerod.pid
# 停止コマンド
ExecStop=/usr/local/bin/monerod exit
# 再起動設定
Restart=on-failure
RestartSec=30s
# ユーザー設定
User=あなたのユーザー名
Group=あなたのユーザー名
# セキュリティ強化(オプション)
PrivateTmp=true
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
そして再起動と有効化。
sudo systemctl daemon-reload
sudo systemctl enable monerod
sudo systemctl start monerod
上手くいかない場合はTorとMonerodの設定が競合していないか確認してみてください。
次は下記のページを参考にしてonionアドレスを指定のものに変えます。

これをダウンロードしてReadmeに従いmake、実行します。
# 依存パッケージインストール
sudo apt install gcc libsodium-dev make autoconf -y
# リポジトリクローン
cd ~/Downloads
git clone <https://github.com/cathugger/mkp224o.git>
cd mkp224o
# ビルド
./autogen.sh
./configure
make
# バイナリ確認
./mkp224o
淫夢に因んで「364364(見ろよ見ろよ)」から始まるonionアドレスを生成します。
10分かそこらで生成され、onionsディレクトリ内にonionアドレスのディレクトリとその中に必要なファイル一式が同梱されています。
./mkp224o -d onions 364364 -n 1
ちなみにonionアドレスはbase32という三十二進法を使っているので、0・1・8・9は使えません。
なので「810」や「1919」といったドメインを生成する事は不可能です。
私はこれに気づかず「114514」から始まるドメインを生成しようとしてドツボに嵌っていました。
生成されたファイルをコピペする為に一旦TorとMonerodを停止させます。
# Monerodを停止
sudo systemctl stop monerod
# Torを停止
sudo systemctl stop tor
cpコマンドで「/var/lib/tor/monero-node」に生成ファイルを放り込みます。
# 生成されたディレクトリ名を確認
ls ./onions/
# 例:364364...onion というディレクトリができている
ONION_DIR=$(ls ./onions/)
echo $ONION_DIR
# ファイルをTorのディレクトリにコピー
sudo cp ./keys/$ONION_DIR/hostname /var/lib/tor/monero-node/
sudo cp ./keys/$ONION_DIR/hs_ed25519_public_key /var/lib/tor/monero-node/
sudo cp ./keys/$ONION_DIR/hs_ed25519_secret_key /var/lib/tor/monero-node/
# 所有者をtorユーザーに変更
sudo chown -R debian-tor:debian-tor /var/lib/tor/monero-node
# パーミッション設定(権限が緩いと警告が出て動かない時がある)
sudo chmod 700 /var/lib/tor/monero-node
sudo chmod 600 /var/lib/tor/monero-node/hostname
sudo chmod 600 /var/lib/tor/monero-node/hs_ed25519_public_key
sudo chmod 600 /var/lib/tor/monero-node/hs_ed25519_secret_key
新しいOnionアドレスを確認し、Monerodの設定を変更します。
# 新しいアドレスを確認
sudo cat /var/lib/tor/monero-node/hostname
# 設定ファイル編集
nano ~/.bitmonero/bitmonero.conf
# 変更前
anonymous-inbound=old-random-address.onion:18080,127.0.0.1:18084
# 変更後(新しいアドレスに)
anonymous-inbound=364364...新しいアドレス.onion:18080,127.0.0.1:18084
サービスを再起動して動作を確認します。
# Tor起動
sudo systemctl start tor
# Tor起動確認
sudo systemctl status tor
# エラーがないか確認
sudo journalctl -u tor -n 50
# Monerod起動
sudo systemctl start monerod
# Monerod起動確認
sudo systemctl status monerod
# Onionアドレス確認
sudo cat /var/lib/tor/monero-node/hostname
# Torログでエラーがないか確認
sudo journalctl -u tor -f
# Monerodが正常に動作しているか
monerod status
running状態になっていたら成功です。
お疲れ様でした。
- 参考ソース


コメント