Bước 1. Cấu hình các thành phần phụ thuộc cho Partner-Chain

Hướng dẫn này sẽ chỉ bạn cách cấu hình các “dependencies” (thành phần phụ thuộc) cho partner-chain, bao gồm Cardano-node, Cardano-db-sync, PostgreSQL, và Ogmios, Testnet hiện tại đã loại bỏ Kupo.

Tại sao lại cần những dịch vụ này?

Các dịch vụ này phối hợp với nhau để cung cấp dữ liệu và khả năng tương tác với blockchain Cardano cho Midnight-node.

  • Cardano-node: Đây là client nền tảng, có nhiệm vụ tải về và đồng bộ hóa toàn bộ dữ liệu của blockchain Cardano.
  • Cardano-db-sync & PostgreSQL: Cardano-db-sync sẽ đọc dữ liệu từ Cardano-node và lập chỉ mục (indexes) chúng vào một cơ sở dữ liệu PostgreSQL. Midnight-node cần một kết nối liên tục tới cổng (port) của PostgreSQL để theo dõi chuỗi Cardano.
  • Ogmios: Đây là một WebSocket API cung cấp khả năng truy cập và tương tác với chuỗi Cardano. Bạn sẽ cần cổng của Ogmios khi sử dụng các trình hướng dẫn (wizards) của partner-chains CLI trong quá trình đăng ký.

Bạn có thể sử dụng file compose-partner-chains.yaml ợc cung cấp sẵn cùng với Docker Compose để khởi chạy các dịch vụ này một cách dễ dàng hơn.

Điều kiện cần có 📜

Trước khi bắt đầu, hãy đảm bảo bạn đã có:

  • Hệ thống của bạn đáp ứng yêu cầu máy chủ tối thiểu.
  • Bạn có quyền quản trị (administrative access) trên máy chủ.
  • Đã cài đặt DockerDocker Compose. (Xem hướng dẫn cài đặt tại Install Docker EngineInstall Docker Compose tại đây).
  • Docker được cấu hình để chạy ở chế độ Rootless (không cần quyền root).
  • Cấu hình Docker để tuân thủ tường lửa UFW bằng cách sửa file /etc/docker/daemon.json:
{
   "iptables": false
}

Khởi động lại Docker và kiểm tra các quy tắc tường lửa:

sudo systemctl restart docker
sudo ufw status

Lưu ý 🛡️ Luôn xác thực lại cài đặt tường lửa sau khi cấu hình để đảm bảo an ninh

2. Cài đặt Dependencies bằng Docker Compose

Làm theo các bước sau để cấu hình và khởi động các dependency của partner-chain bằng Docker Compose.

I. Cài đặt direnv

sudo apt install direnv

Sau khi cài đặt, bạn cần “hook” (kết nối) direnv vào profile shell của bạn. Thêm dòng sau vào cuối file .bashrc:

eval "$(direnv hook bash)"

Tải lại shell:

source ~/.bashrc

II. Clone (Sao chép) Repository Midnight-node-docker

Sao chép repository và di chuyển vào thư mục dự án:

git clone git@github.com:midnightntwrk/midnight-node-docker.git
cd midnight-node-docker

Khi bạn vừa vào thư mục, direnv sẽ hỏi bạn có cho phép file nhập .envrc hay không. Hãy kiểm tra nội dung file để chắc chắn nó an toàn:

cat .envrc

Nếu nội dung file ổn, hãy cho phép nó chạy:

direnv allow

Lệnh này cho phép direnv tự động thiết lập các biến môi trường khi bạn vào thư mục này và xóa chúng khi bạn rời đi.

III. Cấu hình Biến môi trường

(Phần này không bắt buộc. Các biến môi trường trong file .envrc thường không cần thay đổi.)

Sửa file .envrc để cấu hình các thiết lập PostgreSQL cho Cardano-db-sync.

  • Mở file .envrc bằng một trình soạn thảo văn bản, ví dụ nano:
nano .envrc

Tìm và cập nhật các biến POSTGRES_*, ví dụ:Lưu ý 🔑

Mật khẩu PostgreSQL ngẫu nhiên của bạn được lưu trong file postgres.password trong cùng thư mục với file .envrc. File này sẽ được tự động tạo ra khi bạn khởi động các dịch vụ ở bước tiếp theo.

Những thiết lập này sẽ cấu hình cơ sở dữ liệu được Cardano-db-sync sử dụng và sẽ được midnight-node đọc.

– Khởi chạy các Dịch vụ Dependency của Partner-Chains

Khởi chạy các dependency ở chế độ “detached” (chạy ngầm):

docker compose -f compose-partner-chains.yml up -d

Kết quả ví dụ:

[+] Running 5/5
✔ Network midnight-node-docker_default Created 0.0s
✔ Container cardano-ogmios Started 0.3s
✔ Container db-sync-postgres Healthy 5.8s
✔ Container cardano-node Started 0.3s
✔ Container cardano-db-sync Started 5.9s

QUAN TRỌNG ⌛ Quá trình đồng bộ với mạng Cardano có thể mất vài giờ. Hãy chắc chắn rằng tất cả các dependency đã được đồng bộ hoàn toàn trước khi tiếp tục.

IV. Quản lý và giám sát dịch vụ

Kiểm tra trạng thái các dịch vụ và cổng (port)

Liệt kê các container Docker đang hoạt động cùng với trạng thái, cổng và ID của chúng:

docker container list

Xem log của các container cụ thể

Để xem log của một container, sử dụng docker logs <tên hoặc ID container>:

docker logs cardano-ogmios
docker logs cardano-db-sync
docker logs db-sync-postgres
docker logs cardano-node

Các lệnh docker-compose hữu ích

docker-compose stop     # Dừng các container
docker-compose start    # Bắt đầu các container
docker-compose restart  # Khởi động lại các container
docker-compose down     # Dừng và xóa các container
docker-compose stats    # Hiển thị thống kê sử dụng tài nguyên

Giám sát dịch vụ Ogmios

Xem dashboard của Ogmios tại http://localhost:1337/. Nếu Ogmios đang chạy trên một máy chủ từ xa, chỉ cần truy cập http://x.x.x.x:1337 trong trình duyệt với địa chỉ IP và PORT tương ứng.

Kiểm tra tình trạng sức khỏe (healthcheck) của Ogmios:

curl -s localhost:1337/health | jq '.'

V. Kiểm tra tiến trình đồng bộ của Cardano-db-sync

Cách 1: Sử dụng psql trực tiếp

Nếu bạn chưa cài đặt PostgreSQL client, bạn có thể cài đặt bằng lệnh:

sudo apt-get install postgresql-client

Đăng nhập vào shell của PostgreSQL bằng psql:

psql -h localhost -U postgres -d cexplorer -p 5432

Cách 2: (Tùy chọn) Đăng nhập vào shell của PostgreSQL qua docker

docker exec -it db-sync-postgres psql -U postgres -d cexplorer

Sau đó, chạy câu lệnh truy vấn sau bên trong shell của PostgreSQL để xem phần trăm đồng bộ:

SELECT 100 * (
    EXTRACT(EPOCH FROM (MAX(time) AT TIME ZONE 'UTC')) -
    EXTRACT(EPOCH FROM (MIN(time) AT TIME ZONE 'UTC'))
) / (
    EXTRACT(EPOCH FROM (NOW() AT TIME ZONE 'UTC')) -
    EXTRACT(EPOCH FROM (MIN(time) AT TIME ZONE 'UTC'))
) AS sync_percent
FROM block;

Cách 3: Sử dụng ssh từ xa

ssh user@x.x.x.x -C "psql -d cexplorer -h localhost -p 5432 -U postgres -c \"SELECT 100 * (EXTRACT(EPOCH FROM (MAX(time) AT TIME ZONE 'UTC')) - EXTRACT(EPOCH FROM (MIN(time) AT TIME ZONE 'UTC'))) / (EXTRACT(EPOCH FROM (NOW() AT TIME ZONE 'UTC')) - EXTRACT(EPOCH FROM (MIN(time) AT TIME ZONE 'UTC'))) AS sync_percent FROM block;\""

Hãy thay thế user@x.x.x.x bằng tên người dùng SSH và địa chỉ IP máy chủ của bạn.

Nguồn: MidnightDocs


Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Nội dung