以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

SSH経由でDocker内のbitzenydに繋ぎソロマイニングする謎行為

https://rita.xyz/blog/irasutoya/job_sekitan_horu-w240-zf.pngDockerでbitzenydを動かしている環境下で、SSH経由でDockerコンテナ内のbitzenydのRPCポートにアクセスし、cpuminerでソロマイニングしてみるという変態的アレのメモ。元々はさくらのクラウドで短時間BitZenyソロマイニングしたい→でもbitzenydを一から入れたらブロック同期にすっごく時間が掛かる≒料金がアレ→ならすでにブロック同期済みなVPSのDocker内のbitzenydを使えばいいじゃん!ということから思いついた手法。BitZenyだけに限らず他のコインにも応用できるかも。続きを読むから。
目次

前提

  • Dockerのコンテナ内でbitzenydが動いていること。
    • 適当にUbuntuなコンテナ作ってコンテナ内のコンソールに入りいろいろ入れてビルドして起動すればよい。
      • bitzeny.confにrpcuserとrpcpasswordを設定しないと動かないので設定しておくこと。
    • ちなみにdocker exec -itやdocker attachで入ったコンテナのコンソールから抜ける時はCtrl+P→Ctrl+Q。
    • めんどいのでDockerfileとか自動起動とかそういう設定はしてないマン。
  • ブロック同期済みであること。
    • もし初回起動でノードがなかなか見つからず同期が始まらないようであればここに載っているBitZenyノードをaddnodeする手もある。
  • もちろんマイニングするPCでcpuminerをビルドなりしておくこと。
    • 以下はLinux環境下での例。Windowsになるといろいろと変わってくる。

設定

コンテナ内の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経由でソロマイニングという構図の完成。掘れるのを祈ろう。