DMQノードの設定
このマニュアルは、Stake Pool Operator(SPO)が DMQ Node を安全に運用するための設定手順をまとめたものです。
ドキュメント作成時点では、DMQ Node はテストネット(preview)のみサポートされており、メインネットでの利用には対応していません。
以下は、Mithril Signerノードの設定をしている方のみ対象です。
1. DMQ Nodeのインストール
システムのアップデート
sudo apt update && sudo apt upgrade -y作業ディレクトリの作成
mkdir -p $HOME/git/mithril/dmq
cd $HOME/git/mithril/dmqビルド済みバイナリファイルのダウンロード
wget -O dmq-node.tar.gz https://github.com/IntersectMBO/dmq-node/releases/download/0.4.2.0/dmq-node-linux.tar.gz解凍してtar.gzファイルの削除
tar -xzf dmq-node.tar.gz --strip-components=2 result/bin
rm dmq-node.tar.gzバージョン確認
./dmq-node --versiondmq-node version: 0.4.2.0バイナリファイルをシステムフォルダへコピー
sudo cp dmq-node /usr/local/bin/dmq-nodeシステムに反映されたバージョン確認
dmq-node --versiondmq-node version: 0.4.2.02. ソケット・設定ディレクトリ作成
DMQ Node設定ディレクトリの作成
設定ファイル格納ディレクトリの作成
mkdir -p $HOME/mithril/dmqDMQ Nodeソケットパス
grep -q '^export DMQ_NODE_SOCKET_PATH=' $HOME/.bashrc || echo "export DMQ_NODE_SOCKET_PATH=\"$HOME/mithril/dmq/socket\"" >> $HOME/.bashrc
source $HOME/.bashrc設定内容の確認
echo $DMQ_NODE_SOCKET_PATH/home/cardano/mithril/dmq/socket設定ファイルの作成
cat > $HOME/mithril/dmq/${NODE_CONFIG}-dmq-config.json << EOF
{
"NetworkMagic": 2147483650,
"CardanoNetworkMagic": ${NODE_NETWORK_ID},
"CardanoNodeSocket": "${CARDANO_NODE_SOCKET_PATH}",
"PeerSharing": true,
"PeerSelectionCounters": true,
"TraceOptions": {
"": {
"backends": [
"Stdout MachineFormat",
"PrometheusSimple suffix 0.0.0.0 12000"
],
"severity": "Debug"
}
}
}
EOFcat > $HOME/mithril/dmq/${NODE_CONFIG}-dmq-config.json << EOF
{
"NetworkMagic": 2147483650,
"CardanoNetworkMagic": ${NODE_NETWORK_ID},
"CardanoNodeSocket": "${CARDANO_NODE_SOCKET_PATH}",
"PeerSharing": false,
"PeerSelectionCounters": true,
"TraceOptions": {
"": {
"backends": [
"Stdout MachineFormat",
"PrometheusSimple suffix 0.0.0.0 12000"
],
"severity": "Debug"
}
}
}
EOF3. トポロジーファイル作成
クラウドのセキュリティグループでファイアウォールを開けている場合
ufw は使わず、コンソールで BPサーバーから DMQ 通信に使用するIP のみ Relayサーバーの DMQ ポート(例: 6161)へのインバウンド を許可してください。
sudo ufw allow from <BPのIP> to any port 6161 proto tcpsudo ufw reloaddmq_bootstrap_peer_ip=34.76.22.193
dmq_bootstrap_peer_port=6161cat > $HOME/mithril/dmq/${NODE_CONFIG}-dmq-topology.json << EOF
{
"bootstrapPeers": [],
"localRoots": [
{
"accessPoints": [
{
"address": "${dmq_bootstrap_peer_ip}",
"port": ${dmq_bootstrap_peer_port}
}
],
"advertise": true,
"trustable": false,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": []
}
EOFクラウドのセキュリティグループでファイアウォールを開けている場合
ufw は使わず、コンソールで Relayサーバーから DMQ 通信に使用するIP のみ BPサーバーの DMQ ポート(例: 6161)へのインバウンド を許可してください。
sudo ufw allow from <リレーのIP> to any port 6161 proto tcpsudo ufw reload自身のRelayサーバーで稼働するDMQ NodeのIPアドレスを調べ、BPタブの変数relay_dmq_ipに代入してください。
relay_dmq_ip=***.***.***.***
relay_dmq_port=6161cat > $HOME/mithril/dmq/${NODE_CONFIG}-dmq-topology.json << EOF
{
"bootstrapPeers": [],
"localRoots": [
{
"accessPoints": [
{
"address": "${relay_dmq_ip}",
"port": ${relay_dmq_port}
}
],
"advertise": false,
"trustable": false,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": []
}
EOF4. systemd サービス作成
cat > $HOME/mithril/dmq/dmq-node.service << EOF
[Unit]
Description=DMQ relay service
Wants=network-online.target
After=network-online.target cardano-node.service
StartLimitIntervalSec=0
[Service]
User=${USER}
Type=simple
WorkingDirectory=$NODE_HOME
Restart=always
RestartSec=60
LimitNOFILE=32768
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=dmq-node
ExecStart=/usr/local/bin/dmq-node --configuration-file $HOME/mithril/dmq/${NODE_CONFIG}-dmq-config.json --topology-file $HOME/mithril/dmq/${NODE_CONFIG}-dmq-topology.json --local-socket ${DMQ_NODE_SOCKET_PATH} --host-addr $(curl -s https://api.ipify.org) --port 6161
[Install]
WantedBy=multi-user.target
EOFcat > $HOME/mithril/dmq/dmq-node.service << EOF
[Unit]
Description=DMQ block producer service
Wants=network-online.target
After=network-online.target cardano-node.service
StartLimitIntervalSec=0
[Service]
User=${USER}
Type=simple
WorkingDirectory=$NODE_HOME
Restart=always
RestartSec=60
LimitNOFILE=32768
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=dmq-node
ExecStart=/usr/local/bin/dmq-node --configuration-file $HOME/mithril/dmq/${NODE_CONFIG}-dmq-config.json --topology-file $HOME/mithril/dmq/${NODE_CONFIG}-dmq-topology.json --local-socket ${DMQ_NODE_SOCKET_PATH} --host-addr $(curl -s https://api.ipify.org) --port 6161
[Install]
WantedBy=multi-user.target
EOFシステムディレクトリへ配置
sudo cp $HOME/mithril/dmq/dmq-node.service /etc/systemd/system/dmq-node.servicesudo chmod 644 /etc/systemd/system/dmq-node.serviceサービス設定反映
sudo systemctl daemon-reload自動起動登録して起動
sudo systemctl enable dmq-node --now状態確認
sudo systemctl status dmq-node --no-pager● dmq-node.service - DMQ xxx service
~
Active: active (running)ログの確認
journalctl -u dmq-node -fエイリアス設定
echo alias dmqnode='"journalctl -u dmq-node -f"' >> $HOME/.bashrc
source $HOME/.bashrc5. DMQ Node の動作確認
DMQ Node のログを確認します。
sudo journalctl -u dmq-node -fソケットファイルの確認
ls -l ${DMQ_NODE_SOCKET_PATH}srwxr-xr-x 1 cardano cardano 0 xxx xx xx:xx /home/cardano/mithril/dmq/socketサービスポート確認
sudo ss -lntp | grep 6161LISTEN 0 8 xxx.xxx.xxx.xxx:6161 0.0.0.0:* users:(("dmq-node",pid=***,fd=***)) 6. Mithril Signer と連携
Mithril Signer が DMQ Node を利用するよう設定します。
grep -q '^DMQ_NODE_SOCKET_PATH=' $HOME/mithril/mithril-signer.env || echo "DMQ_NODE_SOCKET_PATH=${DMQ_NODE_SOCKET_PATH}" | sudo tee -a $HOME/mithril/mithril-signer.env > /dev/nullgrep DMQ_NODE_SOCKET_PATH $HOME/mithril/mithril-signer.envDMQ_NODE_SOCKET_PATH=/home/cardano/mithril/dmq/socketMithril Signer を再起動
sudo systemctl restart mithril-signer状態確認
sudo systemctl status mithril-signer --no-pager● mithril-signer.service - Mithril Signer service
~
Active: active (running)ログ確認
journalctl -u mithril-signer -f --output=catLast updated on