Xây dựng hạ tầng cho mạng Skywire


Xem thêm tại www.skywirex.com


Với định hướng Skywire là một mạng mở và mọi người có thể tham gia. Đơn giản nhất của việc tham gia vào mạng Skywire là cài đặt một nút (node) Skywire và sử dụng cho nhu cầu hằng ngày của bạn. Hiện tại skywire đang chạy testnet và bạn có thể sử dụng tính năng socks proxy của skywire với hơn 9000 nút (node) ở thời điểm viết bài.

Bạn sẽ được lợi ích gì khi xây dựng hạ tầng của Skywire ? Với testnet hiện tại, bạn sẽ được trả Skycoin nếu tuân thủ đúng qui định của nhóm phát triển. Bạn cần chạy Skywire trên bo mạch hỗ trợ test net + đảm bảo thời gian uptime trong tháng. Xem thêm ở đây

Bài viết này ghi lại quá trình xây dựng hạ tầng Skywire (hay còn gọi là Skyminner) mà bản thân tôi đã trải nghiệm. Nếu bạn có chút lo lắng hay do dự, bạn có thể bắt đầu bằng một bo mạch duy nhất và tổng giá thành không quá 30USD nếu bạn có thể tận dụng được những món có sẵn.

Đa phần những món hàng tôi mua là ở trang aliexpress.com. Nếu mua hàng và ship về Việt Nam, thông thường mất tầm khoảng 3 tuần để hàng về tới TP Hồ Chí Minh. Nếu lần đầu mua hàng bạn có thể ghé trang này để tham khảo cách thức mua hàng ở Aliexpress từ Việt Nam. Nó khá dễ dàng.

Bây giờ chúng ta bắt đầu,

Lưu ý: hướng dẫn được thực hiện trên hệ điều hành Windows

Chuẩn bị:

  • Phần cứng:
  • Bo mạch ARM (SBC-single board computer) + dây nguồn. Nên chọn thương hiệu Orange Pi
  • Nguồn cổng USB hoặc cấp nguồn tổ ong.
  • Switch 8 hoặc 16 cổng gigabit (tùy chọn, có thể mua sau nếu chỉ chạy một bo đầu tiên)
  • Router (tùy chọn, có thể mua sau nếu chỉ chạy một bo đầu tiên)
  • Thẻ nhớ class 10
  • Phụ kiện: đầu đọc thẻ nhớ, dây mạng CAT6, quạt tản nhiệt, ốc vít để lắp (tùy chọn)
  • Phần mềm:
  • File ảnh của hệ điều hành
  • Rufus hoặc Etcher. Phần mềm này dùng để flash file ảnh vào thẻ nhớ.
  • MobaXterm Home Edition — miễn phí hoặc có thể sử dụng Putty. Phần mềm này dùng để kết nối đến bo mạch thông qua dòng lệnh.

Về bo mạch, theo đề xuất của nhóm phát triển Skycoin, bo mạch nên mua là Orange Pi Prime. Nhưng để giảm chi phí ban đầu, đề xuất của tôi là bạn nên mua Orange Pi PC2 để tiết kiệm hoặc Orange Pi One Plus H6. Tuy nhiên Orange Pi One Plus H6 sử dụng chip H6 chưa được hỗ trợ nhiều bởi nhân Linux nên bạn cân nhắc lựa chọn chip H5. Bạn không cần phải mua bo quá đắt đỏ, chỉ cần lưu ý là cổng LAN gigabit để tránh nghẽn băng thông khi meshnet chính thức được triển khai. Quyết định cuối cùng tùy thuộc ở bạn. :)). Lưu ý dây nguồn của Orange Pi PC2 là dây nguồn 1.7mm rất khó kiếm ở các cửa hàng ở VN nên bạn nên mua cùng lúc với mua bo mạch.

Nguồn cấp cho Orange Pi nên chọn loại bộ nguồn tốt để cho dòng điện ra ổn định tầm max là 5V-2.4A. Nhóm phát triển Skycoin khuyến nghị mua nguồn tổ ong, nhưng theo kinh nghiệm của tôi bạn nên sử dụng nguồn USB thuận tiện hơn rất nhiều. Bạn có thể tham khảo bộ nguồn này trên Aliexpress hoặc trên Amazon. Nếu mới bắt đầu bạn có thể tận dụng cục sạc điện thoại USB có sẵn trong gia đình (dòng điện có thể là 5V — 1.5A, 2A hoặc 2.4A).

Thẻ nhớ nên chọn thẻ nhớ Samsung class 10 có bán rất nhiền trên trang shopee, nên chọn nhà cung cấp uy tín — Shopee Mall, tránh thẻ nhớ rởm.

Bo mạch đầu tiên (node số 1)

Sau khi đã tập hợp đầy đủ các linh kiện, chúng ta bắt đầu ráp và chạy node đầu tiên.

Hướng dẫn này giúp sẽ giúp bạn thực hiện trên file ảnh do armbian xây dựng. Do đó tùy thuộc vào bo mạch bạn chọn bạn sẽ tải file ảnh tương ứng (nên chọn file ảnh Debian-Armbian Stretch). Ở hướng dẫn này tôi chọn file ảnh là Orange Pi PC2

  • Flash file ảnh tải từ armbian vào thẻ nhớ bằng cách dùng phần mềm Rufus hoặc Etcher tải ở trên
  • Nhét thẻ nhớ đã flash vào bo mạch, cắm dây mạng vào router và bật nguồn. Board sẽ tự động khởi động sau khi cắm nguồn một vài giây, lúc này bạn sẽ thấy đèn xanh nhỏ trên bo sáng lên. Nếu đèn màu đỏ bạn cần phải flash lại file ảnh lên thẻ nhớ.
  • Bạn vào trang quản lý router để xác định địa chỉ IP trong mạng LAN của bo bạch sau khi khởi động, hoặc bạn có thể dùng phần mềm để scan IP trong mạng LAN. Sau đó dùng phần mềm MobaXterm Home Edition thực hiện SSH đến địa chỉ của bo mạch này. Login với tài khoản root pass mặc định là 1234 theo thông tin ở trang armbian

Màn hình SSH sau khi login thành công sẽ trông giống như sau:

___                               ____  _   ____   ____ ____
/ _ \ _ __ __ _ _ __ __ _ ___ | _ \(_) | _ \ / ___|___ \
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | |_) | | __) |
| |_| | | | (_| | | | | (_| | __/ | __/| | | __/| |___ / __/
\___/|_| \__,_|_| |_|\__, |\___| |_| |_| |_| \____|_____|
|___/
Welcome to ARMBIAN 5.73 stable Debian GNU/Linux 9 (stretch) 4.19.20-sunxi64
System load: 0.16 0.03 0.01 Up time: 7:31 hours
Memory usage: 15 % of 993MB IP: 192.168.1.24
CPU temp: 42°C
Usage of /: 7% of 30G

Cài đặt skywire

Việc cài đặt skywire diễn ra khá dễ dàng tương tự như cài skywire ở bài này, chỉ yêu cầu bạn biết gõ dòng lệnh và thực hiện tuần tự theo các bước sau:

  • Cập nhật cho hệ điều hành và cài dependenci
apt-get update && apt-get upgrade -y 
apt-get install -y curl git mercurial make binutils gcc bzr bison libgmp3-dev screen gcc build-essential
  • Cài đặt Go, tôi chọn phiên bản 1.12
cd ~ 
export GOV=1.12
curl -sS https://storage.googleapis.com/golang/go$GOV.linux-arm64.tar.gz > go$GOV.linux-arm64.tar.gz
tar xvf go$GOV.linux-arm64.tar.gz
mv go /usr/local/go
ln -s /usr/local/go/bin/go /usr/local/bin/go
ln -s /usr/local/go/bin/godoc /usr/local/bin/godoc
ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt
  • Tạo thư mục GO
mkdir -p $HOME/go
mkdir -p $HOME/go/bin
mkdir -p $HOME/go/src
mkdir -p $HOME/go/pkg
  • Thiết lập biến $GOPATH bằng cách chỉnh sửa file .bashrc
nano .bashrc

Trong trình soạn thảo nano thêm vào những dòng sau ở cuối,

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

File .bashrc sau khi chỉnh sửa nội dung có dạng như sau:

Nội dung file .bashrc sau khi chỉnh sửa

Bấm Crtl + O để lưu nội dung và Ctrl + X để thoát nano

Sau cùng load lại file .bashrc bằng lệnh

source ~/.bashrc

Kiểm tra việc cài đặt thành công Go bằng câu lệnh

go version
  • Tải và cài đặt Skywire
mkdir -p $GOPATH/src/github.com/skycoin
cd $GOPATH/src/github.com/skycoin/skywire
git clone https://github.com/skycoin/skywire.git
cd $GOPATH/src/github.com/skycoin/skywire/cmd
go install ./...

Sau khi thực hiện xong lệnh go install ./... thành công nghĩa là ta đã cài đặt skywire manager và skywire node thành công,

Chạy Skywire manager

cd $GOPATH/bin
nohup ./skywire-manager -web-dir ${GOPATH}/src/github.com/skycoin/skywire/static/skywire-manager > /dev/null 2>&1 &sleep 3

Chạy Skywire node

cd $GOPATH/bin
./skywire-node -connect-manager -manager-address 127.0.0.1:5998 -manager-web 127.0.0.1:8000 -discovery-address discovery.skycoin.net:5999-034b1cd4ebad163e457fb805b3ba43779958bba49f2c5e1e8b062482904bacdb68 -address :5000 -web-port :6001

Sau khi thực hiện những câu lệnh chạy skywire manager và skywire node ở trên, bạn mở trình duyệt và gõ địa chỉ <IP-bo-số-1>:8000 vào trình duyệt để vào trang quản lý của skywire.

Bo số 2,3,4,5,6,7,8 (node số 2,3,4,5,6,7,8)

Để chạy testnet và nhận skycoin hằng tháng, nhóm skycoin giới hạn ở 8 bo mạch ở một địa chỉ WAN IP (một đường truyền internet). Các bước cài đặt bo số 2 đến bo số 8 thực hiện tương tự với bo đầu tiên cho đến câu lệnh go install ./.... Đến đây để kết nối từ node số 2 vào bo số 1 (bo quản lý - skywire manager). Ta thực hiện câu lệnh sau:

cd $GOPATH/bin
nohup ./skywire-node -connect-manager -manager-address :5998 -manager-web :8000 -discovery-address discovery.skycoin.net:5999-034b1cd4ebad163e457fb805b3ba43779958bba49f2c5e1e8b062482904bacdb68 -address :5000 -web-port :6001 > /dev/null 2>&1 &cd /

Thay thế <địa chỉ IP bo số 1> bằng địa chỉ IP của bo số 1 (ví dụ 192.168.1.10). Do đó, để bo số 1 luôn được router cấp phát địa chỉ đó thì bạn nên gán địa chỉ IP cố định cho bo số 1 (ví dụ 192.168.1.10).

Script tự động chạy skywire khi khởi động lại bo mạch

Để các node của skywire tự động chạy sau khi khởi động lại hệ điều hành hoặc cúp điện thì các bạn dùng script được viết sẵn để thực hiện việc đó.

Để tránh xảy ra xung đột bạn cần tắt dịch vụ skymanager và skynode nếu bạn đã kích hoạt trước đó:

systemctl stop skymanager.service
systemctl stop skynode.service

Chuyển đến thư mục hệ thống

cd /etc/systemd/system
# Tạo dịch vụ cho bo mạch manager (bo quản lý - bo số 1) (chỉ thực hiện trên board manager)
nano skymanager.service
# Thêm những dòng sau lưu lại và thoát
[Unit]
Description=Skywire Manager
After=network-online.target
[Service]
User=root
Group=root
WorkingDirectory=/root/go/bin
Environment="GOPATH=/root/go" "GOBIN=$GOPATH/bin"
ExecStart=/root/go/bin/skywire-manager -web-dir /usr/local/skywire/go/src/github.com/skycoin/skywire/static/skywire-manager
ExecStop=kill
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# Tạo dịch vụ cho node (làm cho tất cả các bo mạch bao gồm manager)
nano skynode.service
# Thêm những dòng sau, lưu và thoát
(thay thế địa-chỉ-ip-bo-mạch-quản-lý với ip của bo mạch quản lý)
[Unit]
Description=Skywire Node
After=network-online.target
[Service]
User=root
Group=root
WorkingDirectory=/root/go/bin
Environment="GOPATH=/root/go" "GOBIN=$GOPATH/bin"
ExecStart=/root/go/bin/skywire-node -connect-manager -manager-address <địa chỉ IP bo số 1>:5998 -manager-web <địa chỉ IP bo số 1>:8000 -discovery-address discovery.skycoin.net:5999-034b1cd4ebad163e457fb805b3ba43779958bba49f2c5e1e8b062482904bacdb68 -address :5000 -web-port :6001
ExecStop=kill
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# Thêm dịch vụ vào systemctl
systemctl daemon-reload # thực hiện cho tất cả các bo mạch 
systemctl enable skymanager.service # chỉ thực hiện cho bo mạch quản lý
systemctl enable skynode.service # thực hiện cho tất cả các bo mạch
systemctl start skymanager.service # chỉ thực hiện cho bo mạch quản lý
systemctl start skynode.service # thực hiện cho tất cả các bo mạch

Hoặc các bạn cũng có thể tải file service cho manager và node tại địa chỉ bên dưới

Sau đó

  • Giải nén được những file .service và copy vào thư mục ‘/etc/systemd/system’
  • Kích hoạt và chạy dịch vụ bằng 2 câu lệnh sau:
systemctl enable skynode.service
systemctl start skynode.service

Trang trí

Trang trí và làm đẹp cho các bo mạch tùy thuộc khả năng sáng tạo của các bạn. Để có thêm ý tưởng các bạn vào trang này của skywirex để tham khảo sự sáng tạo của Skyfleet nhé.

Trong quá trình cài đặt nếu gặp khó khăn hay vướng mắc, bạn có thể tham gia vào Telegram group ở phần Social bên phải để được trợ giúp.

Chúc các bạn thành công và tận hưởng phần thưởng skycoin mỗi cuối tháng.

Tham khảo