Dockerでbitzenydを動かしている環境下で、SSH経由でDockerコンテナ内のbitzenydのRPCポートにアクセスし、cpuminerでソロマイニングしてみるという変態的アレのメモ。元々はさくらのクラウドで短時間BitZenyソロマイニングしたい→でもbitzenydを一から入れたらブロック同期にすっごく時間が掛かる≒料金がアレ→ならすでにブロック同期済みなVPSのDocker内のbitzenydを使えばいいじゃん!ということから思いついた手法。BitZenyだけに限らず他のコインにも応用できるかも。続きを読むから。
目次
前提
- Dockerのコンテナ内でbitzenydが動いていること。
- ブロック同期済みであること。
- もし初回起動でノードがなかなか見つからず同期が始まらないようであればここに載っているBitZenyノードをaddnodeする手もある。
- もちろんマイニングするPCでcpuminerをビルドなりしておくこと。
設定
コンテナ内のbitzeny.confにrpcallowipを追記してDockerのホストからコンテナ内のRPCポート(9252)に繋がるようにする。DockerのネットワークのIP帯が172.17.0.〜である場合の設定。
rpcallowip=172.17.0.1 rpcallowip=127.0.0.1
設定を変更後、もしbitzenydを起動していたら一旦再起動。
接続
マイニングを行うPCでホストへのSSHをバックグラウンドで接続しておく。その際、ポートフォワーディングでローカルポート9252がDockerコンテナ内のポート9252に繋がるようにする。172.17.0.3の部分はbitzenydが動いているコンテナのIPを指定する(docker inspectやコンテナ内でifconfigするなりして確認)。
$ ssh -f -N -L 9252:172.17.0.3:9252 -p 22222 -i ~/.ssh/yourssh_key hoge@10.0.33.4
なんでや!阪神関係ないやろ! もちろん例なのでユーザーやIPは適当です
ちなみに、~/.ssh/configに以下の設定をしておくと長時間放置でSSHが切断されないので安心。
ServerAliveInterval 15 ServerAliveCountMax 10
マイニング
その後minerdを起動。--coinbase-addrには採掘報酬の振込先である自分のウォレットアドレスを指定する(以下の例ではダミーアドレスを指定しているが)。マイニングでアドレスを分けておくと吉(bitzeny-cliでgetnewaddress Miningとするなどして生成する)。-uと-pにはbitzeny.confで設定されているrpcuser/rpcpasswordを指定する。以下は例。
$ cpuminer/minerd -a yescrypt -o http://127.0.0.1:9252 --coinbase-addr=ZDummyAddressDoNoTUSEXXXXXXXUAyquG -u bitzenyrpc -p AnySuperPasswordHelloWorld1234567890 --no-longpoll --no-getwork
特にエラーが出なければSSH経由でソロマイニングという構図の完成。掘れるのを祈ろう。