在 Synology DSM Docker 裡面搭建一個 IOTA CarrIOTA 完整節點

上次談過一次我個人認為潛力很大的虛擬貨幣 IOTA,其中一個特點就是他沒辦法「挖礦」取得

因為 IOTA 在 ICO 的時候已經把所有幣全部發放完畢,交易時也沒有手續費

目前幾乎全靠社群的力量在搭建 IOTA 的節點(IRI),但是搭建節點很麻煩的一點就是要怎麼去找可靠的「鄰居」?

於是又有人開發可以自動發現鄰居的「Nelson」,會想要搭建 IOTA IRI 節點的人

通常不是極熱衷的信徒,要不然就是想要給自己或親友錢包加速使用 IOTA 轉帳匯款

每個節點通常都在小群體裡面使用,因為都是私人架設的,要找到一個可靠的節點還真是要靠點運氣

這也是官方錢包難用的原因之一,官方錢包內建的幾個節點有時候都會失效,就必須要手動來切換節點

然而又有個傢伙跳出來,打造了一個「CarrIOTA」的技術,他可以讓上面這些看似獨立的節點

通通加入到他的大家庭裡面,讓普通使用者只要使用「一個」入口節點,然後 CarrIOTA 會根據使用者的所在地

分配一個最佳的節點來使用,同時 CarrIOTA 還開放大家的自由捐助,收到的捐款將會自動分配到加入 CarrIOTA 節點搭建者

分數越高能分配到的 IOTA 捐助就會越多~(咦?這不就是「變種挖礦」?)

但是這種收入不穩,因為每季度收到的捐助會不同,而且節點在歐洲會比亞洲分數還高喔!

這應該是因為歐洲那邊使用 IOTA 的人比較多吧,亞洲這邊關注的還比較少一點~

擔任 IOTA 節點這種事情,NAS 本身就非常適合,因為 NAS 硬碟空間大而且基本不會關機

因為整個項目開源的幫助,上述這些東西都有人移植到各個設備上面,除了 VPS 以外還有像是樹莓派這種小型設備都很適合

於是我也利用家中的 Synology NAS 來搭建一個 CarrIOTA 完整節點~

準備工作

首先新建幾個新的目錄在 DSM 裡面, ssh 進去 DSM 裡面輸入以下指令

1
2
3
4
$ mkdir -p /volume1/docker/IOTA/IRI/mainnetdb/
$ mkdir -p /volume1/docker/IOTA/field.cli/
$ mkdir -p /volume1/docker/IOTA/nelson.cli/data/
$ cd /volume1/docker/IOTA/IRI

因為目前 IOTA 完整的資料量巨大,如果只是靠「鄰居」來同步,那會同步到天荒地老,所以我們先來個「預」下載

1
2
3
$ curl http://db.iota.partners/IOTA.partners-mainnetdb.tar.gz -o mainnetdb.tar.gz
$ tar xzfv mainnetdb.tar.gz -C /volume1/docker/IOTA/IRI/mainnetdb/
$ rm mainnetdb.tar.gz

第 1 行是在下載整個節點資料,會需要一點時間

第 2 行是在解壓縮,也要一點時間

第 3 行是在刪除下載下來已經用不到的壓縮檔

接著我們要創幾個會用到的設定檔,把我們的設定都寫進去,首先是 IRI 的

1
$ vi iota.ini

然後複製粘貼以下內容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[IRI]
PORT = 14265
TCP_RECEIVER_PORT = 15777
UDP_RECEIVER_PORT = 14777
HEADLESS = true
DEBUG = false
TESTNET = false
DB_PATH = /iri/mainnetdb/
API_HOST = localhost
REMOTE = true

再來是 field 的設定檔

1
$ vi /volume1/docker/IOTA/field.cli/config.ini

複製並修改以下內容:

1
2
3
4
5
6
7
8
9
[field]
name = {name}
IRIPort = 14265
IRIHostname = localhost
seed = {seed}
port = 21310
pow = true
disableIRI = false
customFieldId = true

第 2 行的 {name} 請修改成自己喜歡的名字,這個名字會出現在 CarrIOTA 的節點上

第 5 行的 {seed} 請自己重新創立一個 IOTA 錢包的新 Seed,建議不要跟你主錢包使用同一個,這是用來接收捐助的錢包,系統會自動根據 seed 來生成接收錢包的地址

如果不知道怎麼新建 seed,請參考之前寫的這篇文章

最後一個 nelson 設定檔

1
$ vi /volume1/docker/IOTA/nelson.cli/config.ini

複製並修改以下內容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[nelson]
name = My nelson node
cycleInterval = 60
epochInterval = 300
apiPort = 18600
apiHostname = 0.0.0.0
port = 16600
IRIHostname = localhost
IRIProtocol = tcp
IRIPort = 14265
TCPPort = 15777
UDPPort = 14777
dataPath = /data/neighbors.db
incomingMax = 5
outgoingMax = 4
isMaster = false
silent = false
gui = false
getNeighbors = https://raw.githubusercontent.com/SemkoDev/nelson.cli/master/ENTRYNODES
neighbors[] = mainnet.deviota.com/16600
neighbors[] = mainnet2.deviota.com/16600
neighbors[] = mainnet3.deviota.com/16600
neighbors[] = iotairi.tt-tec.net/16600

第 2 行可以根據自己愛好修改名字

最後的準備工作,就是打開路由器上的端口並指向 NAS

  • 14777 UDP – IOTA/IRI UDP 連線端口

  • 15777 TCP – IOTA/IRI TCP 連線端口

  • 16600 TCP – Nelson.cli TCP 連線端口

  • 21310 TCP – Field.cli TCP 連線端口

下載並設定 Docker

直接打開 DSM 的網頁管理頁面,打開 Docker 應用程式,找到「倉庫伺服器」,搜索「iri」,並下載「iotaledger/iri」最新的映像檔

/media/2018/03/snipaste_20180324_145728.png

稍等下載完畢後,直接開始部署 IRI 節點

進階設定:自動重啟,請打勾

儲存空間:見下圖,新增設定檔案與 IOTA 的資料庫資料夾

/media/2018/03/snipaste_20180324_150413.png

網路:與 Docker Host 使用相同網路,打勾

其他不用調整,然後直接點「套用」,一路按下一步,這樣就能跑一個 IOTA IRI 完整節點起來~

再來回到「倉庫伺服器」,搜索「nelson.cli」,找到「romansemko/nelson.cli」下載之後開始部署

進階設定:自動重啟,請打勾

儲存空間:見下圖,新增設定檔案與 nelson 的資料庫資料夾

/media/2018/03/snipaste_20180324_153916.png

網路:與 Docker Host 使用相同網路,打勾

環境設定:新增一個「NELSON_CONFIG」,見下圖

/media/2018/03/snipaste_20180324_154115.png

然後直接套用,一直下一步到部署完畢,如此 Nelson 的服務應該也能順利跟 IRI 連動了

此時如果去看 IRI 或者 Nelson 的 log,就能看到他們正在辛勤的找鄰居同步數據了~

再次回到「倉庫伺服器」,搜索「field.cli」,下載「romansemko/field.cli」映像檔,然後開始部署

進階設定:自動重啟,請打勾

儲存空間:見下圖,新增設定檔案

/media/2018/03/snipaste_20180324_155048.png

網路:與 Docker Host 使用相同網路,打勾

環境設定:新增一個「FIELD_CONFIG」,見下圖

/media/2018/03/snipaste_20180324_155146.png

同樣的按下套用一路到底,CarrIOTA 的客戶端服務也順利架起來了~

等個幾分鐘,等服務都確定努力在跑,此時打開 CarrIOTA 的網頁: http://field.carriota.com

搜索一下自己設定的名字( field.cli 的 config.ini 第 2 行),應該就能看見囉!

/media/2018/03/snipaste_20180324_160653.png

看著自己的節點在這個錯綜複雜蜘蛛網裡面漂浮,很療癒喔~~~ XD