跳到主要內容

圖解架設 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。 右鍵 > 內容,將它更改為「 已停用 」後確定即可。

Ubuntu Server 16.04 免密碼自動登入 (Auto Login),沒有圖形化介面 (GUI) 也可以達成

在用 Ubuntu Desktop 的時候要做到帳號免密碼自動登入非常簡單,只要到設定內將使用者帳戶的 Automatic Login 打開以後就不再需要輸入密碼了,但如果是用 Ubuntu Server 而且沒有裝 GUI 呢? 其實還有更簡單的辦法可以純用 CLI 就達成自動登入的目標,即便在遠端使用 SSH 操控機器也可以很輕鬆地達成。 (Ubuntu Desktop 版本的自動登入) sudo mkdir /etc/systemd/system/getty@tty1.service.d sudo vim /etc/systemd/system/getty@tty1.service.d/override.conf 首先建立 getty@tty1.service.d 目錄以及 override.conf 設定檔。 [Service] ExecStart= ExecStart=-/sbin/agetty --noissue --autologin 帳戶名稱 %I $TERM Type=idle 將上述內容貼至設定檔內,記得換成自己的帳戶名稱,並使用 :wq 指令儲存。 之後就可以試試看 sudo reboot 重開機就會自動登入了。