Vận hành và kiểm tra một nút AeroNyx
Sổ tay vận hành cho các nút AeroNyx đã đăng ký: trạng thái, JSON sức khỏe, nhật ký, relay-probe, relay-smoke và mailbox-probe, nâng cấp an toàn với khôi phục tự động, khôi phục thủ công, các bước kiểm tra sau khi khởi động lại và cách từng tín hiệu xuất hiện trong Nodeboard.
Sổ tay vận hành này trình bày các lệnh hằng ngày cho một nút AeroNyx đã đăng ký: trạng thái, sức khỏe, nhật ký, kiểm chứng chuyển tiếp và hộp thư, nâng cấp an toàn, khôi phục phiên bản cũ, và những gì cần kiểm tra sau khi khởi động lại. Mọi lệnh đều có trong kho mã của nút (deploy/node/aeronyx-node.sh và tệp nhị phân aeronyx-server) và được trình bày với các tùy chọn mà mã nguồn chấp nhận.
Nếu bạn chưa cài đặt nút, hãy bắt đầu với Cài đặt và đăng ký một nút AeroNyx.
Trước khi bắt đầu
Chạy mọi thứ từ một shell root (sudo -i). Thư mục cấu hình /etc/aeronyx và thư mục trạng thái /var/lib/aeronyx có chế độ 700, vì vậy các lệnh trạng thái, sức khỏe, kiểm tra hợp lệ và chuyển tiếp không thể đọc chúng với tư cách người dùng khác.
Chuyển vào kho mã mà dịch vụ thực sự đang chạy, và truyền nó bằng --repo-dir cho mọi lệnh của tập lệnh. Nếu không có --repo-dir, tập lệnh giả định /opt/aeronyx/AeroNyx.
cd "$(systemctl show aeronyx-server -p WorkingDirectory --value)"
pwd
Trên các nút được cài bằng lệnh của Nodeboard, lệnh này in ra /root/open/AeroNyx.
Tổng quan các lệnh
| Lệnh | Có thay đổi máy chủ không? | Dùng để |
|---|---|---|
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD" | Không | Xem nhanh đầu tiên: trạng thái dịch vụ, sức khỏe cục bộ, khám phá, trạng thái nâng cấp và bước tiếp theo được khuyến nghị |
./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --json | Không | Chẩn đoán đầy đủ; dòng cuối là JSON |
./deploy/node/aeronyx-node.sh logs --repo-dir "$PWD" --lines 200 | Không | Nhật ký dịch vụ gần đây (--follow để theo dõi liên tục) |
./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --json | Không thay đổi máy chủ; gửi một phong bì mã hóa tổng hợp tới các nút ngang hàng | Đường chuyển tiếp có dùng được không? |
./target/release/aeronyx-server relay-smoke --confirm-live-relay-smoke --json | Tạo hai phiên thử nghiệm ngắn hạn | Kiểm chứng đầu cuối việc chuyển phát qua chuyển tiếp có xác thực |
./target/release/aeronyx-server mailbox-probe … --confirm-live-mailbox-probe --json | Tạo một hộp thư ngắn hạn trên nút đích | Kiểm chứng đầu cuối hộp thư ẩn danh qua tuyến onion |
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" … | Có | Biên dịch, kiểm tra hợp lệ và chuyển sang bản phát hành mới với khả năng khôi phục |
Trạng thái
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD"
status in ra, theo thứ tự:
systemctl status aeronyx-server(20 dòng cuối)- bản tóm tắt của API sức khỏe cục bộ (
http://127.0.0.1:8421/api/vpn/health) và API trạng thái nhà vận hành (http://127.0.0.1:8421/api/operator/status) - mức sẵn sàng khám phá cục bộ từ
http://127.0.0.1:8422/api/discovery/status: việc quảng bá ChatRelay và ngưỡng đủ số nút ngang hàng - trạng thái quy trình nâng cấp gần nhất từ
/var/lib/aeronyx/upgrade-status.json - một khuyến nghị cho nhà vận hành:
operator_status,operator_title,operator_detailvàoperator_next_step
Khuyến nghị này đến từ bước kiểm tra sức khỏe. Trạng thái của nó là một trong các giá trị sau:
operator_status | Mức ưu tiên | Ý nghĩa |
|---|---|---|
critical | fix_failed_healthcheck hoặc fix_failed_upgrade | Một bước kiểm tra thất bại, hoặc lần nâng cấp gần nhất thất bại |
warning | service_not_active, privacy_protocol_degraded hoặc review_warnings | Dịch vụ không chạy, sức khỏe cục bộ không phải ok, hoặc có cảnh báo |
info | upgrade_staged | Một bản dựng đã được chuẩn bị sẵn và đang chờ khởi động lại |
ok | monitor | Không có bước kiểm tra nào thất bại |
Sức khỏe
./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --json
Bước kiểm tra sức khỏe đọc các tệp, systemd và các điểm cuối cục bộ; nó không bao giờ thay đổi máy chủ. Mỗi bước kiểm tra in ra [PASS], [WARN] hoặc [FAIL], sau đó là một dòng [SUMMARY] pass=… warn=… fail=…, rồi đến một dòng JSON. Dùng --json-only để chỉ in JSON. Lệnh thoát với trạng thái khác 0 nếu có bất kỳ bước kiểm tra nào thất bại.
Những gì được kiểm tra: kho mã, tệp Cargo.lock được theo dõi và tệp nhị phân phát hành; kiểm tra hợp lệ cấu hình bằng aeronyx-server validate; tệp đăng ký và tệp khóa; unit systemd, chính sách khởi động lại và các biện pháp gia cố; bộ nhớ, ổ đĩa và các cổng 51820 và 8421; chuyển tiếp IP và NAT; điểm cuối sức khỏe cục bộ; khám phá; và các bản sao lưu phát hành.
Các trường JSON chính:
| Trường | Ý nghĩa |
|---|---|
success | true khi không có bước kiểm tra nào thất bại |
summary | Số lượng pass, warn và fail |
operator_action | Khuyến nghị do status hiển thị (status, priority, title, detail, next_step) |
local_vpn_health | status (ok khi khỏe mạnh), active_sessions, placement_readiness, encrypted_message_forwarding |
capacity | Các bộ đếm dung lượng và rủi ro do nút báo cáo |
discovery_readiness | Khả năng ChatRelay (đã cấu hình, điểm cuối sẵn sàng, thời gian chạy sẵn sàng, đã quảng bá, các yếu tố chặn), peer_quorum (quorum_ready, valid_peers, healthy_peers, routeable_chat_relays, routeable_onion_middle_hops, next_action), network_story (mức sẵn sàng một chặng và hai chặng) và recovery_anchor |
runtime | Commit và nhánh Git của bản checkout, các tệp được theo dõi có bị sửa đổi hay không, thời điểm của tệp nhị phân và cấu hình, service_active, service_enabled, chính sách khởi động lại của systemd, unit có trỏ tới tệp nhị phân và cấu hình này hay không, mạng con VPN, các bản sao lưu phát hành |
upgrade_status | Bước nâng cấp gần nhất, trạng thái và thông báo |
checks | Mọi bước kiểm tra cùng trạng thái và thông báo của nó |
Bạn có thể đọc trực tiếp các điểm cuối cục bộ thô:
curl -s http://127.0.0.1:8421/api/vpn/health
curl -s http://127.0.0.1:8422/api/discovery/status
Nhật ký
./deploy/node/aeronyx-node.sh logs --repo-dir "$PWD" --lines 200
./deploy/node/aeronyx-node.sh logs --repo-dir "$PWD" --follow
Các lệnh này bao bọc journalctl -u aeronyx-server -n <lines> --no-pager (mặc định 160 dòng) và journalctl -u aeronyx-server -f. Dùng trực tiếp journalctl cho các khoảng thời gian, ví dụ journalctl -u aeronyx-server --since "1 hour ago".
Kiểm chứng chuyển tiếp và hộp thư
Các lệnh này trả lời những câu hỏi khác nhau. Đừng coi một lần thăm dò tổng hợp thành công là bằng chứng về việc chuyển phát thực tế.
relay-probe (tổng hợp)
./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --json
./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --json
Gửi một phong bì BlindRelay tổng hợp, ngẫu nhiên và mờ đục từ nút này tới một nút ngang hàng ChatRelay đã được khám phá, và chỉ báo cáo các thay đổi của bộ đếm. --two-hop gửi nó qua một chặng trung gian tới một nút đích cuối. Giá trị status của kết quả là ok, attention, blocked hoặc error, và two_hop_readiness giải thích những gì còn thiếu khi không thể có đường hai chặng. Lệnh đọc bộ nhớ đệm nút ngang hàng và khóa của nút, vì vậy cần quyền root. Đây không phải là lưu lượng của người dùng và không chứng minh việc chuyển phát tới hộp thư. fleet-smoke chạy một bước kiểm tra tổng hợp tương tự trên nhiều nút công khai mà bạn liệt kê bằng --endpoints.
relay-smoke (có xác thực, đầu cuối)
./target/release/aeronyx-server relay-smoke --confirm-live-relay-smoke --json
relay-smoke đóng vai một máy khách thực đối với nút trên máy chủ này. Nó mở hai phiên ngắn hạn với các danh tính dùng một lần và hoàn tất bắt tay như trong sản xuất, được ghim vào khóa của nút này. Nó gửi một tin nhắn ngẫu nhiên 48 byte, được mã hóa đầu cuối, qua đường chuyển tiếp đa chặng có xác thực. Sau đó nó xác minh biên nhận đích cuối có chữ ký cho đúng yêu cầu đó, kéo tin nhắn từ hộp thư của nút này, giải mã, xác nhận đã nhận, và kiểm tra rằng hộp thư trống và các phiên đã được đóng.
Lệnh từ chối khởi chạy trừ khi mọi điều kiện đều đạt:
| Điều kiện | Thất bại với |
|---|---|
Sức khỏe cục bộ là ok và không có bước kiểm tra sức khỏe nào thất bại | node health is not ready / node health has failed checks |
| Nút có không phiên nào đang hoạt động | relay smoke requires zero active sessions for evidence attribution |
| Ngưỡng đủ số nút ngang hàng, nhóm tuyến và tuyến onion hai chặng đã sẵn sàng | peer quorum is not ready / route pool is not ready / two-hop onion route is not ready |
| Tồn tại một đường chuyển phát có xác thực với ít nhất hai nút ngang hàng hỗ trợ biên nhận chuyển phát | authenticated delivery path is not ready: <reason>, trong đó lý do là no_receipt_capable_terminal, no_receipt_capable_middle hoặc no_network_diverse_receipt_path |
| ChatRelay được bật trong cấu hình và thời gian chạy của nó đã sẵn sàng | chat relay is disabled in node configuration / chat relay runtime is not ready |
Bộ lưu trữ lưu giữ chuyển tiếp đã xác minh độ bền commit đầy đủ (SQLite FULL hoặc mạnh hơn) | encrypted custody durability is unavailable; restart the node with the current binary / … is not FULL-or-stronger |
| Tệp nhị phân đang chạy báo cáo sức khỏe chuyển tiếp onion có xác thực | authenticated onion relay health is unavailable; restart the node with the current binary |
Lưu ý:
- Lệnh phải chạy với quyền root ngay trên nút. Nó đọc
/etc/aeronyx/server.tomlvà khóa của nút, và chỉ chấp nhận địa chỉ loopback (--server, mặc định127.0.0.1:51820;--health-url, mặc địnhhttp://127.0.0.1:8421/api/vpn/health). --timeout-secondsđặt khoảng thời gian kiểm chứng: từ 5 đến 120 giây, mặc định 30.- Không có phiên nào đang hoạt động có nghĩa là một nút phục vụ người dùng VPN phải được rút cạn phiên trước. Bật Maintenance Mode trong Nodeboard và chờ số phiên về 0.
- Hai phiên thử nghiệm là các phiên giao thức thực, vì vậy chúng có thể xuất hiện trong chốc lát ở Sessions của Nodeboard.
- Một lần đạt có
"status": "passed",terminal_receipt_observed,entry_mailbox_round_trip_verified,entry_mailbox_ack_verifiedvàe2e_ciphertext_verifiedđều làtrue, vàsession_cleanuplàexplicit_authenticated_close.terminal_replica_cleanuplànode_ttl_managed: việc xác nhận trên nút vào không xóa bản sao do nút đích cuối giữ, bản sao đó tự hết hạn. - Bất kỳ điều kiện thất bại, lỗi hoặc trường bị thiếu nào đều là kiểm chứng thất bại, không phải thành công một phần.
mailbox-probe (xuất phát từ phía máy khách)
./target/release/aeronyx-server mailbox-probe \
--seed http://SEED_PUBLIC_IP:8422 \
--target <64-hex node ID of the mailbox node> \
--entry <64-hex node ID of a different entry node> \
--confirm-live-mailbox-probe --json
mailbox-probe hoạt động như một ứng dụng: nó dùng các khóa dùng một lần, tự xây dựng tuyến onion từ các bộ mô tả có chữ ký thu thập từ các nút --seed, và gửi HTTP thuần tới API ngang hàng công khai của nút vào, không có phiên VPN. Nó chạy toàn bộ vòng đời hộp thư ẩn danh trên nút đích: ticket_issue, lease_create, put, pull_one, ack và một lần pull_one cuối cùng. Nó kiểm tra rằng các byte được kéo về khớp nhau và hộp thư trống sau đó. Một lần đạt báo "status": "verified" cùng số chặng.
--seedcó thể lặp lại. Nếu không có--entry, tuyến chỉ có một chặng.- ID nút là khóa công khai dạng hex 64 ký tự của nút. Trên một nút bạn vận hành,
./target/release/aeronyx-server pubkey -c /etc/aeronyx/server.tomlin ra giá trị này. - Nút đích phải bật hộp thư ẩn danh (
[memchain.chat_relay.anonymous_mailbox] enabled = true); tính năng này tắt theo mặc định. --work-bits(mặc định 12) phải ít nhất bằng thiết lập công việc vé của nút đích.--timeout-secondsáp dụng cho mỗi yêu cầu (mặc định 20).- Lệnh không đọc các tệp cục bộ của nút, vì vậy có thể chạy từ bất kỳ máy nào có tệp nhị phân. Nó chứng minh việc lưu giữ một mục mờ đục, chứ không chứng minh rằng người nhận có thể giải mã mục đó.
Nâng cấp an toàn
Dùng quy trình nâng cấp, không dùng git pull rồi systemctl restart:
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" --build-priority live --build-jobs auto
Quy trình làm những gì:
- Lấy một khóa triển khai và từ chối chạy nếu các tệp được theo dõi trong bản checkout bị sửa đổi (
--allow-dirtyghi đè điều này). - Kéo
main(hoặc biên dịch một commit chính xác trong một bản checkout tách biệt với--commit <40-hex SHA>). - Biên dịch bằng bộ công cụ Rust được cố định phiên bản trong kho mã. Mức ưu tiên
live(mặc định) và--build-jobs autodùng khoảng một nửa số CPU để nút đang chạy vẫn tiếp tục phục vụ. - Kiểm tra hợp lệ
/etc/aeronyx/server.tomlbằng tệp nhị phân mới. Tệp cấu hình không bao giờ bị ghi đè. - Sao lưu tệp nhị phân thực sự đang chạy vào
/var/lib/aeronyx/releases/. - Kiểm tra các phiên đang hoạt động sau khi biên dịch, và một lần nữa ngay trước khi khởi động lại. Nếu có phiên nào, hoặc nếu không đọc được số lượng phiên trong khi dịch vụ đang chạy, quy trình dừng lại mà không chuyển phiên bản.
- Cập nhật các unit systemd, thay tệp nhị phân mới vào và khởi động lại dịch vụ.
- Chờ tối đa 180 giây (90 lần kiểm tra, cách nhau 2 giây) để sức khỏe cục bộ báo
oktừ commit vừa được biên dịch. Nếu việc khởi động lại, trạng thái dịch vụ hoặc bước kiểm tra sức khỏe thất bại, quy trình tự động khôi phục tệp nhị phân và các unit trước đó. - Giữ 10 bản sao lưu gần nhất của mỗi loại và ghi lại kết quả vào
/var/lib/aeronyx/upgrade-status.json.
Nếu nút có phiên đang hoạt động, việc biên dịch vẫn chạy và sau đó quá trình nâng cấp dừng với Active sessions appeared during compilation. Enter maintenance mode, drain sessions, and run the upgrade again. Bật Maintenance Mode trong Settings của Nodeboard, chờ số phiên đang hoạt động về 0, rồi chạy lại cùng lệnh đó. Lần biên dịch lại sẽ tái sử dụng bộ nhớ đệm.
Chuẩn bị ngay, khởi động lại sau
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" --no-restart
--no-restart biên dịch, kiểm tra hợp lệ và sao lưu, sau đó cài tệp nhị phân mới lên ổ đĩa mà không khởi động lại. Khi đó status báo upgrade_staged. Tiến trình đang chạy vẫn giữ phiên bản cũ. Bất kỳ lần khởi động lại nào sau đó, kể cả khởi động lại máy hoặc khởi động lại tự động sau sự cố, đều khởi chạy tệp nhị phân mới.
Để chuyển đổi trong khung giờ bảo trì, hãy rút cạn phiên của nút và chạy lại quy trình nâng cấp mà không kéo mã, để nó chuyển sang đúng bản bạn đã chuẩn bị, kèm kiểm tra phiên, chờ sức khỏe và khôi phục:
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" --skip-pull
Không dùng --force. Tham số này khởi động lại ngay cả khi có phiên đang hoạt động hoặc không xác định được số lượng phiên, và ngắt kết nối người dùng.
Khôi phục thủ công
Quy trình nâng cấp tự động khôi phục khi bản phát hành mới không khởi động được hoặc không báo cáo trạng thái khỏe mạnh. Để quay lại một bản phát hành trước đó vào lúc khác, hãy nâng một trong các tệp nhị phân đã lưu lên dùng:
ls -lt /var/lib/aeronyx/releases/
./deploy/node/aeronyx-node.sh promote-binary --repo-dir "$PWD" \
--binary /var/lib/aeronyx/releases/<aeronyx-server.binary.YYYYMMDD_HHMMSS.xxxxxx>
promote-binary kiểm tra hợp lệ cấu hình với tệp nhị phân được chọn và từ chối chạy trừ khi số phiên đang hoạt động đúng bằng 0. Lệnh yêu cầu bạn gõ PROMOTE BINARY, sao lưu tệp nhị phân hiện tại bên cạnh nó, thay tệp nhị phân và khởi động lại. Nếu dịch vụ không khỏe mạnh trong vòng 180 giây, lệnh khôi phục tệp nhị phân trước đó. Lệnh chỉ thay tệp nhị phân, không thay các unit systemd.
Sau mỗi lần khởi động lại
Kiểm tra các mục sau theo thứ tự:
systemctl is-active aeronyx-servertrả vềactive. Unit cóType=notify, vì vậyactivecó nghĩa là tiến trình đã báo sẵn sàng; quá trình khởi động có thể mất tới 300 giây trước khi systemd bỏ cuộc../deploy/node/aeronyx-node.sh status --repo-dir "$PWD"hiển thịoperator_status=ok, hoặc một cảnh báo mà bạn hiểu rõ../deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --jsonkết thúc bằng"success":truevàlocal_vpn_health.statuslàok.- Commit đang chạy đúng là commit bạn mong muốn:
curl -s http://127.0.0.1:8421/api/vpn/healthbáo nó dưới dạngruntime.git_commit. (runtime.git_committronghealth --jsonlà commit của bản checkout.) discovery_readiness.peer_quorum.quorum_readylàtruesau các vòng gossip đầu tiên.- Đối với nút chuyển tiếp:
relay-probe --two-hop --jsonbáook. - Trong Nodeboard, nhịp tim còn mới, Rust Runtime hiển thị phiên bản mới, và lần khởi động lại xuất hiện trong Alerts / Events. Tắt Maintenance Mode khi bạn hoàn tất.
journalctl -u aeronyx-server --since "15 min ago"không có lỗi lặp lại.
Cách các thông tin này xuất hiện trong Nodeboard
Nodeboard nhận nhịp tim có chữ ký và các báo cáo phiên của nút. Nodeboard không tự mình chạy lệnh trên máy chủ; các hành động bạn chọn ở đó được đưa vào hàng đợi và nút sẽ chạy chúng ở nhịp tim kế tiếp.
| Trên nút | Trong Nodeboard |
|---|---|
| Trạng thái dịch vụ và sức khỏe cục bộ | Danh sách Nodes và chi tiết nút: AeroNyx Health, Rust Runtime, AeroNyx Service Readiness |
| Các bộ đếm dung lượng | Chi tiết nút: Node Capacity và Capacity Decision (ready, watch, blocked, waiting) |
| Mức sẵn sàng khám phá và chuyển tiếp | Chi tiết nút: Node Discovery, Encrypted Chat Relay; Services cho toàn bộ đội nút |
upgrade-status.json | Chi tiết nút: Rust Upgrade Workflow; Services → Fleet Restart Readiness |
| Các cảnh báo trong nhật ký dịch vụ | Chi tiết nút: Recent Operational Events (đã được làm sạch, 24 giờ gần nhất) |
| Khởi động lại và phục hồi | Alerts / Events → Incident Closure (open, watch, recovered) |
| Maintenance Mode, số phiên tối đa, băng thông, hạng | Settings, được xác nhận khi Policy Sync hiển thị synced |
Chi tiết nút cũng có một thẻ Operator Runbook với các lệnh health, status, logs và nâng cấp theo kiểu chuẩn bị trước có thể sao chép, dành cho đường dẫn kho mã được phát hiện.
Nội dung của các kết quả đầu ra
status, health, relay-probe, relay-smoke và mailbox-probe chỉ in ra các giá trị tổng hợp: số lượng, trạng thái, thời gian và mã lý do. Chúng không in ra khóa riêng tư, mã đăng ký, IP công khai của máy khách, đích đến, nội dung DNS, nội dung gói tin hoặc bản rõ tin nhắn. Các bản ghi phiên kèm khóa của máy khách có thể xem trong Nodeboard, không có trong các kết quả đầu ra này; xem Hướng dẫn bảng điều khiển nhà vận hành Nodeboard. Khi bạn chia sẻ kết quả đầu ra để được hỗ trợ, hãy chia sẻ JSON và dấu thời gian của nó, không chia sẻ địa chỉ máy chủ hay thông tin xác thực.
Câu hỏi thường gặp
Tôi nên chạy lệnh nào đầu tiên khi có điều gì đó bất thường?
Chạy ./deploy/node/aeronyx-node.sh status --repo-dir "$PWD" với quyền root. Lệnh này hiển thị trạng thái dịch vụ, sức khỏe cục bộ, khám phá và bước tiếp theo được khuyến nghị, và không thay đổi máy chủ.
Vì sao bước kiểm tra sức khỏe thất bại với "config missing" hoặc các cảnh báo Git?
Có thể bạn không phải là root, hoặc bạn đang trỏ tới sai kho mã. /etc/aeronyx và /var/lib/aeronyx chỉ dành cho root, và nếu không có --repo-dir, tập lệnh kiểm tra /opt/aeronyx/AeroNyx thay vì bản checkout mà dịch vụ đang chạy.
relay-probe và relay-smoke khác nhau như thế nào?
relay-probe gửi một phong bì mờ đục tổng hợp và chỉ cho thấy một đường chuyển tiếp chấp nhận lưu lượng. relay-smoke đóng vai một máy khách thực: nó xác minh một biên nhận đích cuối có chữ ký cùng toàn bộ việc kéo và xác nhận từ hộp thư cho một tin nhắn thử nghiệm được mã hóa.
Vì sao relay-smoke nói rằng nó cần không có phiên nào đang hoạt động?
Lệnh quy các thay đổi của bộ đếm cho chính các phiên thử nghiệm của nó, vì vậy nó chỉ chạy trên một nút đang nhàn rỗi. Bật Maintenance Mode trong Nodeboard, chờ số phiên đang hoạt động về 0, rồi chạy lệnh.
Tôi có thể nâng cấp mà không ngắt kết nối người dùng không?
Bạn có thể biên dịch và chuẩn bị sẵn một bản nâng cấp bằng --no-restart trong khi người dùng vẫn đang kết nối. Việc chuyển sang phiên bản mới cần khởi động lại, vì vậy hãy rút cạn phiên của nút bằng Maintenance Mode rồi chạy upgrade --skip-pull.
Làm thế nào để quay lại phiên bản trước?
Một lần nâng cấp thất bại sẽ tự động khôi phục. Để khôi phục vào lúc khác, hãy dùng promote-binary với một trong các bản sao lưu trong /var/lib/aeronyx/releases/; lệnh này yêu cầu không có phiên nào đang hoạt động và khôi phục tệp nhị phân trước đó nếu tệp nhị phân được nâng lên không khỏe mạnh.