Cài đặt mạng chạy thử skywire sử dụng Docker

Docker là môi trưởng ảo hoá chứa sẵn những thứ cần thiết để triển khai ứng dụng một cách nhanh chóng, bớt đi những bước cài đặt phần mềm tốn nhiều thời gian. Bài viết này không đề cập đến việc cài đặt và sử dụng docker. Chi tiết về cách cài đặt docker cho từng nền tảng có thể được tham khảo ở trang chủ docker.

Skywire là internet thế hệ tiếp theo, nó là một meshnet và được xây dựng dựa trên sự phi tập trung. Để hiểu rõ hơn Skywire các bạn có thể tham khảo bài viết này.

Cài đặt Skywire để làm gì? Hiện tại bạn có thể cài đặt Skywire và kết nối đến nút khác trong mạng Skywire để sử dụng tính năng SOCKS 5.

Yêu cầu

Lưu ý

  • Hướng dẫn được thực hiện trên Windows 10 và sử dụng chương trình SSH như Putty hoặc MobaXterm
  • Kí hiệu # hay $ ở đầu dònglà bắt đầu một câu lệnh trong Linux
  • Sau dấu # là câu lệnh được thực hiện ở tài khoản root trong Linux
  • Sau dấu $ là câu lệnh được thực hiện ở tài khoản user trong Linux
  • Sau dấu ### là comment và sẽ không bao gồm trong câu lệnh
  • Sau lệnh nano là cửa sổ soạn thảo, bạn copy hoặc gõ nội dung vào cửa sổ đó

Sau khi đã sẵn sàng bây giờ chúng ta bắt đầu:

Cài đặt skywire trong một docker container

Kiểm tra docker đã được cài đặt

$ docker version

Tạo một container với tên là skywire, chạy Alpine linux trong một container

$ sudo docker create --name=skywire --net=host -it alpine
$ docker start skywire

Login vào container ở cửa sổ lệnh

$ docker exec -it skywire /bin/sh

Cập nhật và cài đặt những gói cần thiết để tạo những file thực thi của skywire

# apk update
# apk add go git musl-dev make

Tạo file thực thi ở thư mục home của user (ở đây là root)

# cd
# mkdir -p go/src/github.com/skycoin
# cd ./go/src/github.com/skycoin
# go get -u github.com/skycoin/skywire/cmd/...

Thêm biến GOPATH vào profile

# echo 'export ENV=$HOME/.rc' >>"$HOME/.profile"
# echo 'export GOPATH=$HOME/go' >>"$HOME/.rc"

Khởi động manager

# cd
# source .rc
# cd $GOPATH/bin
# nohup ./skywire-manager -web-dir ${GOPATH}/src/github.com/skycoin/skywire/static/skywire-manager > /dev/null 2>&1 & echo $! > manager.pid

Kiểm tra

# ps aux | grep manager

Kết quả trông như sau

lệnh ps aux | grep manager

lệnh ps aux | grep manager

Lúc này trình quản lý skywire đang chạy dưới tiến trình 526, và bạn có thể gõ vào trình duyệt <ip>:8000 để login với pass mặc định là 1234

Chạy node skywire

# cd
# source .rc
# cd $GOPATH/bin
# nohup ./skywire-node -connect-manager -manager-address :5998 -manager-web :8000 -discovery-address testnet.skywire.skycoin.com:5999-028ec969bdeb92a1991bb19c948645ac8150468a6919113061899051409de3f243 -address :5000 -web-port :6001 > /dev/null 2>&1 & echo $! > node.pid

Kiểm tra

# ps aux | grep node

Sau khi kiểm tra có node skywire đang chạy bạn quay lại cửa sổ manager ở trên để thực hiện kết nối với các nút khác trên mạng skywire và sử dụng SOCKS 5 như hướng dẫn ở bài này.

Sao lưu (backup) và khôi phục

Backup thư mục .skywire

Để backup public key và private key của skywire trong container bạn cần nén và copy về máy thư mục .skywire nằm ở thư mục home được tạo ra sau khi chạy skywire-manager và skywire-node ở trên.

Login vào container ở dòng lệnh và kiểm tra sự tồn tại của thư mục .skywire

$ docker exec -it skywire /bin/sh
# ls -a

kiểm tra sự tồn tại của thư mục skywire

kiểm tra sự tồn tại của thư mục skywire

Nén thư mục .skywire thành file skywirex-backup.tgz và kiểm tra thư mục chứa file nén hiện hành bằng lệnh pwd

# tar czvf skywirex-backup.tgz .skywire/
# pwd

Trường hợp này ta sẽ thấy kết quả file đã được nén ở thư mục /root

Copy file skywirex-backup.tgz từ docker container về host thư mục hiện hành

# exit ### thoát khỏi container
$ docker cp skywire:/root/skywirex-backup.tgz .

Sau đó lấy file đã copy lưu vào một nơi nào đó an toàn.

Phục hồi thư mục .skywire

Quá trình phục hồi thư mục .skywire là quá trình ngược lại quá trình sao lưu. Bạn cần copy file đã sao lưu (ở đây là skywirex-backup.tgz) vào thư mục của user container (ở đây là thư mục /root) và giải nén.

$ docker cp skywirex-backup.tgz skywire:/root/skywirex-backup.tgz

Login vào skywire container và giải nén

$ docker exec -it skywire /bin/sh
# tar xzvf skywirex-backup.tgz

Mẹo

Để dễ dàng copy file bacup từ VPS hoặc máy được điều khiển kết nối thông qua SSH, bạn nên sử dụng chương trình MobaXterm để thực hiện kết nối đến máy cần điều khiển.

Script tự khởi động (#todo)

Tham khảo