跳到主要內容

圖解架設 Monero (XMR) 礦池教學,所有 CryptoNight 算法的加密貨幣通用礦池 (Mining Pool),趕快架來讓人挖礦!



隨著 GPU 挖礦越來越難回收成本很多人選擇乾脆自己來開礦池讓別人挖,一來你只需要負擔伺服器營運成本 (比挖礦電費少非常多),也不需要購入太昂貴的硬體 (和挖礦設備相比更是天壤之別),那究竟要滿足什麼條件才能開礦池呢?而實際操作又是如何?這篇將以「門羅幣」 Monero (XMR) 礦池為例來教大家怎麼從無到有架設一個礦池,而且這是一個 CryptoNight 通用礦池,換句話說你也能拿這套來挖 ETNTRTL、ITNS ...等同樣算法的貨幣,可以說是 CP 值超高的礦池啊!

(一個架好的 TRTL 礦池範例) 

node-cryptonote-pool 就是一個基於 Node.js 的礦池系統,它能適用於每個 CryptoNote 的加密貨幣 (Bytecoin, Monero, QuazarCoin, HoneyPenny, etc..),基本上你目前看到的 CryptoNote 礦池大多都是使用這套系統所架設的,它不但提供了現成的網頁介面,還能讓使用者隨時查詢挖礦進度,當然這套系統也有不少 Fork 的版本,這次使用的是最原版的作為範例。

node-cryptonote-pool
GitHub : https://github.com/zone117x/node-cryptonote-pool




安裝套件

這次會選擇架設在 Linux (Ubuntu) 系統上,如果是使用其它發行版的 Linux 基本上操作也都是一樣的,可能只有少部份的指令需要更改,Windows 的話則多半需要手動到網站上下載相關套件 (Packages),使用上比較麻煩一些但理論上也都是可行的。

安裝礦池會需要以下套件,在 Windows 系統會需要逐一安裝,而 Linux 可以略過這個步驟,等會統一使用指令安裝即可。比較需要注意的是它要求的是 v0.10+ 的 Node.js 版本,建議你就乖乖的裝遠古時代的 v0.10 版畢竟 Node.js 不同版本間的相容性問題很容易報錯。

sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev
sudo apt-get install libboost-all-dev git npm nodejs nodejs-legacy libminiupnpc-dev redis-server
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh
bash install_nvm.sh
source ~/.profile
nvm install 0.10.48
nvm use 0.10.48
nvm alias default 0.10.48
nvm use default
Linux 直接打上述指令即可完成全部的相關套件的安裝,要注意這會將 Node.js 預設為使用 v0.10.48 版本方便你之後使用 node-cryptonote-pool ,如果之後有別的用途要使用新版的 Node.js 記得再改回來。




同步 Monerod


再來就是到 Monero 官網下載適合你作業系統的 CLI 錢包,要注意這是需要同步區塊鏈的錢包,而且之後架設礦池也都必須隨時同步在最新的區塊高度。


cd monero
./monerod
下載回 CLI 錢包後,CD 到它的路徑並測試看看能不能連上 Monero 並且同步區塊,你可以就放著給它同步 (可能跑個一整天),或是直接下載所有的區塊資料回來匯入,這會在下一步解釋。


wget -c --progress=bar https://downloads.getmonero.org/blockchain.raw
使用指令可以將區塊數據下載回來,可以看到我 ^C 再重啟並且確認了它是可以續傳的,所以你未必要一次下載完,有事可以先關掉之後在同路徑下繼續下載,這個過程會比直接同步來的快很多,但仍然需要數個小時。


./monero-blockchain-import --verify 0 --input-file ./blockchain.raw
下載完成後就能用上述指令匯入並讀取,這個過程也是滿花時間的,確定匯入成功之後你就可以把 blockchain.raw 這個檔案給刪掉了,如果匯入失敗你還把它刪掉,那恭喜你可以再下載一次...。


./monerod --detach
然後使用上述指令能在背景運行 monerod,這樣就不需要佔一個終端機在那邊礙眼了,如果想關掉的話只要使用 ./monerod exit 即可。



安裝、啟動礦池

git clone https://github.com/zone117x/node-cryptonote-pool.git pool
cd pool
npm update
再來就可以將礦池 Clone 回來並安裝啦,當然你也可以自己到 GitHub 下載完整檔案,要記得使用 v0.10.48 的 Node.js 安裝,如果剛剛在安裝套件時已經有設定好就沒有問題了。


cp config_example.json config.json
接著將資料夾內的 config_example.json 複製並改名成 config.js,並且用文字編輯器開啟把裡面包括要挖的貨幣、礦池地址 (就是你剛剛同步好的錢包)、預設難度 ...等修改好,可以參考原作者在 GitHub 有附上註解的文件來修改。要特別注意 Daemon 和 Wallet 的 Port 設定,不同貨幣的預設 Port 會不一樣,最保險的方式就是在開啟 monerod 時就加上 --rpc-bind-port 18081 強制它開在某一個 Port。


node init.js
現在就終於可以啟動你的礦池啦,正常來講應該能如上圖運作,如果出現錯誤可能是區塊尚未同步完成或 config.json 有沒有填妥的地方。這時候的礦池已經可以正常接收 Shares 了,但是還沒有 Host 前端的介面。


之後打開 website_example/config.js 設定你的礦池網站,由於我只是開來作個示範所以架在 127.0.0.1 (Localhost),雖然理論上也應該會 Forward 到外網,但如果是要供別人挖礦的話可以直接換成你自己的「靜態」外網 IP,還沒有申請固定 IP 的話可以暫時用 DDNS 之類的服務來達成。


service apache2 start
那要怎麼 Host 這個前端網站呢?如果你有自己習慣的架站套件可以略過這步,我是使用 Ubuntu 就有內建的 Apache 架站組合包,Windows 也可以自己去下載回來裝。使用上述指令先開啟 Apache,如果沒裝的話則先用 sudo apt-get install apache2 安裝。


sudo chmod 777 -R /var/www/html
而架好的 Apache server 的根目錄就在 /var/www/html,我們先用上述指令取得這個路徑的修改權限方便之後的作業。


有修改權限後就能到 /var/www/html 內把原本 Apache 說明文件的 index.html 刪掉再將剛剛 website_example 的檔案都複製過來。


然後你到 http://localhost 就可以看到自己架的前端網站啦 (不過 XMR 區塊真的同步太久,所以我偷懶先開一個 TRTL 的當示範),如果有和礦池同步的話應該要可以看到 Network 裡面目前全網算力、區塊高度等訊息,那如果你想要別人也能看到你的礦池網站記得將防火牆的 Port 打開 (理論上 Apache 應該會幫你做),也要記得使用 SSL 架站以確保安全,這部份的話可以去參考 Cloudflare 等免費網站憑證。



基本上架礦池很簡單,只是大部份時間都花在同步區塊鏈上,當然後續怎麼找到人來挖礦也是難題,還得先自己測試出金 (多半都會去 Nicehash 買算力),那如果你看完之後覺得太麻煩了還是乖乖挖礦就好,可以參考這篇用 XMR-STAK 來挖 Monero 或其它 CryptoNight 的貨幣。








留言



這個網誌中的熱門文章

Linux (Ubuntu) 查詢硬碟容量、剩餘大小指令

在 Ubuntu Desktop 版本或有安裝 GUI 像 Xfce 的 Server 版本當然可以直接從圖形介面查看硬碟容量和已經使用的大小, 但如果是在純 CLI 版本或使用 SSH 連線時呢?那就需要用到指令了。 顯示硬碟容量、已使用、可用大小。 df -h 查詢資料夾所占硬碟的大小。 du -h 查詢檔案大小 ls -l

吃光硬碟讀寫的大怪獸 - Superfetch 是什麼?可以關嗎?

Superfetch 是 Windows 內建的硬碟快取功能,它會預先將檔案讀取起來到 Ram 裡方便稍後做使用,所以常常在工作管理員內都可以看到 Superfetch 往往占掉了不少的硬碟使用量,那這樣的情形是好的嗎?其實理論上並不會有太大影響,畢竟 Superfetch 只是將等會要讀取的內容先預置在 Ram 中,如果不趁硬碟負載小的時候優先讀取,之後反而可能忙不過來呢。當然如果你是使用 SSD 的話可能會為使用壽命擔心, 高頻率的讀取可能加速固態硬碟老化,那在讀取速度原本就很快的 SSD 當然就相對的沒有必要開啟 Superfetch 了。 Superfetch 在電腦待機時吃掉大部分硬碟使用量是很常有的事。 要關閉也很簡單, Win+R > services.msc 打開「服務」,找到 Superfetch。 右鍵 > 內容,將它更改為「 已停用 」後確定即可。

TLS / SSL 金鑰轉檔,「.crt / .key」如何轉成「.pem」?( OpenSSL 教學)

不管是哪個 Certificate Authority (CA) 發的憑證多半金鑰檔都是給「.crt / .key」格式的檔案,像是「ca_bundle.crt」、「 certificate.crt」和「.private.key」這種檔案, 但是在實際使用 (Nginx、Apache...等伺服器) 卻會需要的是「.pem」檔 ,那要怎麼轉換呢?其實可以直接使用 OpenSSL 這個軟體和幾行指令來達成。 OpenSSL 官方網站 :  https://www.openssl.org 下載頁面 :  https://www.openssl.org/source sudo apt-get install openssl 以 Linux (Ubuntu / Debian ...等) 為例,可以直接使用 apt-get 指令下載安裝 OpenSSL,如果是其他系統可以參考官方網站的說明。 openssl rsa -in private.key -text > private.pem openssl x509 -inform PEM -in certificate.crt > certificate.pem openssl x509 -inform PEM -in ca_bundle.crt > ca_bundle.pem 以前述所提到的「ca_bundle.crt」、「 certificate.crt」和「.private.key」三個檔案為例,就可以用上方的指令完成轉檔,其實同副檔名的轉檔指令都相同,所以兩個「.crt」的指令其實是重複的,也要記得套換成自己的檔案名稱。 如果需要申請免費的 SSL 憑證也可以參考之前介紹過的 SSL For Free ,它是使用「Let's Encrypt」核發的憑證,以及如果覺得申請憑證和定期更新太麻煩,也可以考慮自動化的 Caddy Server 能自動幫網站升級 HTTPS。