Menjalankan dan memeriksa node AeroNyx

AeroNyx12 menit baca

Runbook untuk node AeroNyx yang terdaftar: status, JSON kesehatan, log, relay-probe, relay-smoke dan mailbox-probe, pembaruan aman dengan rollback otomatis, rollback manual, pemeriksaan setelah mulai ulang, dan bagaimana setiap sinyal muncul di Nodeboard.

Runbook ini mencakup perintah harian untuk node AeroNyx yang telah terdaftar: status, kesehatan, log, bukti relay dan kotak surat, pembaruan yang aman, rollback, dan apa yang perlu diperiksa setelah mulai ulang. Setiap perintah ada di repositori node (deploy/node/aeronyx-node.sh dan biner aeronyx-server) dan ditampilkan dengan opsi yang diterima oleh kode.

Jika Anda belum memasang node, mulailah dengan Memasang dan mendaftarkan node AeroNyx.

Sebelum memulai

Jalankan semuanya dari shell root (sudo -i). Direktori konfigurasi /etc/aeronyx dan direktori state /var/lib/aeronyx bermode 700, sehingga perintah status, health, validasi, dan relay tidak dapat membacanya sebagai pengguna lain.

Pindah ke repositori tempat layanan benar-benar berjalan, dan berikan repositori tersebut dengan --repo-dir pada setiap perintah skrip. Tanpa --repo-dir, skrip mengasumsikan /opt/aeronyx/AeroNyx.

bash
cd "$(systemctl show aeronyx-server -p WorkingDirectory --value)"
pwd

Pada node yang dipasang dengan perintah dari Nodeboard, perintah ini mencetak /root/open/AeroNyx.

Ringkasan perintah

PerintahMengubah host?Digunakan untuk
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD"TidakTinjauan pertama: status layanan, kesehatan lokal, penemuan, status pembaruan, dan langkah berikutnya yang direkomendasikan
./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --jsonTidakDiagnostik lengkap; baris terakhir berupa JSON
./deploy/node/aeronyx-node.sh logs --repo-dir "$PWD" --lines 200TidakLog layanan terbaru (--follow untuk mengikuti secara langsung)
./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --jsonTidak mengubah host; mengirim satu amplop terenkripsi sintetis ke peerApakah jalur relay dapat digunakan?
./target/release/aeronyx-server relay-smoke --confirm-live-relay-smoke --jsonMembuat dua sesi uji berumur pendekBukti end-to-end atas pengiriman relay yang terautentikasi
./target/release/aeronyx-server mailbox-probe … --confirm-live-mailbox-probe --jsonMembuat satu kotak surat berumur pendek di node targetBukti end-to-end atas kotak surat anonim melalui rute onion
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" …YaMembangun, memvalidasi, dan beralih ke rilis baru dengan rollback

Status

bash
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD"

status mencetak, secara berurutan:

  1. systemctl status aeronyx-server (20 baris terakhir)
  2. ringkasan API kesehatan lokal (http://127.0.0.1:8421/api/vpn/health) dan API status operator (http://127.0.0.1:8421/api/operator/status)
  3. kesiapan penemuan lokal dari http://127.0.0.1:8422/api/discovery/status: penayangan ChatRelay dan kuorum peer
  4. status alur kerja pembaruan terakhir dari /var/lib/aeronyx/upgrade-status.json
  5. rekomendasi operator: operator_status, operator_title, operator_detail dan operator_next_step

Rekomendasi berasal dari pemeriksaan kesehatan. Statusnya adalah salah satu dari:

operator_statusPrioritasArti
criticalfix_failed_healthcheck atau fix_failed_upgradeSebuah pemeriksaan gagal, atau pembaruan terakhir gagal
warningservice_not_active, privacy_protocol_degraded atau review_warningsLayanan mati, kesehatan lokal bukan ok, atau terdapat peringatan
infoupgrade_stagedSebuah build telah disiapkan dan menunggu mulai ulang
okmonitorTidak ada pemeriksaan yang gagal

Kesehatan

bash
./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --json

Pemeriksaan kesehatan membaca berkas, systemd, dan endpoint lokal; pemeriksaan ini tidak pernah mengubah host. Setiap pemeriksaan mencetak [PASS], [WARN] atau [FAIL], lalu baris [SUMMARY] pass=… warn=… fail=…, lalu satu baris JSON. Gunakan --json-only untuk hanya mencetak JSON. Perintah keluar dengan status bukan nol jika ada pemeriksaan yang gagal.

Yang diperiksa: repositori, Cargo.lock yang dilacak, dan biner rilis; validasi konfigurasi dengan aeronyx-server validate; berkas pendaftaran dan kunci; unit systemd, kebijakan mulai ulang, dan pengerasan; memori, disk, serta port 51820 dan 8421; penerusan IP dan NAT; endpoint kesehatan lokal; penemuan; dan cadangan rilis.

Bidang JSON utama:

BidangArti
successtrue jika tidak ada pemeriksaan yang gagal
summaryJumlah pass, warn dan fail
operator_actionRekomendasi yang ditampilkan oleh status (status, priority, title, detail, next_step)
local_vpn_healthstatus (ok jika sehat), active_sessions, placement_readiness, encrypted_message_forwarding
capacityPenghitung kapasitas dan risiko yang dilaporkan oleh node
discovery_readinessKapabilitas ChatRelay (dikonfigurasi, endpoint siap, runtime siap, ditayangkan, penghambat), peer_quorum (quorum_ready, valid_peers, healthy_peers, routeable_chat_relays, routeable_onion_middle_hops, next_action), network_story (kesiapan satu lompatan dan dua lompatan) dan recovery_anchor
runtimeCommit dan branch Git dari checkout, apakah berkas yang dilacak telah diubah, waktu biner dan konfigurasi, service_active, service_enabled, kebijakan mulai ulang systemd, apakah unit mengarah ke biner dan konfigurasi ini, subnet VPN, cadangan rilis
upgrade_statusLangkah, status, dan pesan pembaruan terakhir
checksSetiap pemeriksaan beserta status dan pesannya

Anda dapat membaca endpoint lokal mentah secara langsung:

bash
curl -s http://127.0.0.1:8421/api/vpn/health
curl -s http://127.0.0.1:8422/api/discovery/status

Log

bash
./deploy/node/aeronyx-node.sh logs --repo-dir "$PWD" --lines 200
./deploy/node/aeronyx-node.sh logs --repo-dir "$PWD" --follow

Perintah ini membungkus journalctl -u aeronyx-server -n <lines> --no-pager (default 160 baris) dan journalctl -u aeronyx-server -f. Gunakan journalctl secara langsung untuk rentang waktu, misalnya journalctl -u aeronyx-server --since "1 hour ago".

Bukti relay dan kotak surat

Perintah-perintah ini menjawab pertanyaan yang berbeda. Jangan anggap probe sintetis yang lolos sebagai bukti pengiriman nyata.

relay-probe (sintetis)

bash
./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --json
./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --json

Mengirim satu amplop BlindRelay buram yang sintetis dan acak dari node ini ke peer ChatRelay yang ditemukan, dan hanya melaporkan perubahan penghitung. --two-hop mengirimkannya melalui lompatan tengah ke node terminal. status hasilnya adalah ok, attention, blocked atau error, dan two_hop_readiness menjelaskan apa yang kurang ketika jalur dua lompatan tidak memungkinkan. Perintah ini membaca cache peer dan kunci node, sehingga memerlukan root. Ini bukan lalu lintas pengguna dan tidak membuktikan pengiriman kotak surat. fleet-smoke menjalankan pemeriksaan sintetis serupa di beberapa node publik yang Anda cantumkan dengan --endpoints.

relay-smoke (terautentikasi, end-to-end)

bash
./target/release/aeronyx-server relay-smoke --confirm-live-relay-smoke --json

relay-smoke bertindak sebagai klien sungguhan terhadap node di host ini. Perintah ini membuka dua sesi berumur pendek dengan identitas sekali pakai dan menyelesaikan handshake produksi, yang dipatok ke kunci node ini. Perintah ini mengirim satu pesan acak berukuran 48 byte, terenkripsi end-to-end, melalui jalur relay multi-lompatan yang terautentikasi. Setelah itu, perintah ini memverifikasi tanda terima terminal bertanda tangan untuk permintaan tersebut secara persis, menarik pesan dari kotak surat node ini, mendekripsinya, mengakuinya (ack), dan memeriksa bahwa kotak surat kosong serta sesi telah ditutup.

Perintah ini menolak dimulai kecuali setiap gerbang lolos:

GerbangGagal dengan
Kesehatan lokal adalah ok dan tidak ada pemeriksaan kesehatan yang gagalnode health is not ready / node health has failed checks
Node memiliki nol sesi aktifrelay smoke requires zero active sessions for evidence attribution
Kuorum peer, pool rute, dan rute onion dua lompatan sudah siappeer quorum is not ready / route pool is not ready / two-hop onion route is not ready
Terdapat jalur pengiriman terautentikasi dengan setidaknya dua peer yang mampu memberikan tanda terima pengirimanauthenticated delivery path is not ready: <reason>, dengan alasan berupa no_receipt_capable_terminal, no_receipt_capable_middle atau no_network_diverse_receipt_path
ChatRelay diaktifkan dalam konfigurasi dan runtime-nya siapchat relay is disabled in node configuration / chat relay runtime is not ready
Penyimpanan custody relay telah memverifikasi ketahanan commit penuh (SQLite FULL atau lebih kuat)encrypted custody durability is unavailable; restart the node with the current binary / … is not FULL-or-stronger
Biner yang berjalan melaporkan kesehatan relay onion terautentikasiauthenticated onion relay health is unavailable; restart the node with the current binary

Catatan:

  • Perintah ini harus dijalankan sebagai root di node itu sendiri. Perintah ini membaca /etc/aeronyx/server.toml dan kunci node, dan hanya menerima alamat loopback (--server, default 127.0.0.1:51820; --health-url, default http://127.0.0.1:8421/api/vpn/health).
  • --timeout-seconds menetapkan jendela pembuktian: 5 hingga 120 detik, default 30.
  • Nol sesi aktif berarti node yang melayani pengguna VPN harus dikosongkan terlebih dahulu. Aktifkan Maintenance Mode di Nodeboard dan tunggu hingga sesi mencapai nol.
  • Dua sesi uji tersebut adalah sesi protokol sungguhan, sehingga dapat muncul sebentar di Sessions Nodeboard.
  • Hasil lolos memiliki "status": "passed", terminal_receipt_observed, entry_mailbox_round_trip_verified, entry_mailbox_ack_verified dan e2e_ciphertext_verified yang semuanya true, serta session_cleanup bernilai explicit_authenticated_close. terminal_replica_cleanup bernilai node_ttl_managed: ack di node entri tidak menghapus salinan yang disimpan oleh node terminal, yang akan kedaluwarsa dengan sendirinya.
  • Setiap gerbang yang gagal, error, atau bidang yang hilang merupakan bukti yang gagal, bukan keberhasilan parsial.

mailbox-probe (bersumber dari klien)

bash
./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 berperilaku seperti aplikasi: perintah ini menggunakan kunci sekali pakai, membangun rute onion sendiri dari deskriptor bertanda tangan yang dikumpulkan dari node --seed, dan mengirim HTTP biasa ke API peer publik node entri, tanpa sesi VPN. Perintah ini menjalankan siklus hidup kotak surat anonim secara penuh di node target: ticket_issue, lease_create, put, pull_one, ack dan pull_one terakhir. Perintah ini memeriksa bahwa byte yang ditarik cocok dan kotak surat kosong sesudahnya. Hasil lolos melaporkan "status": "verified" dan jumlah lompatan.

  • --seed dapat diulang. Tanpa --entry, rute memiliki satu lompatan.
  • ID node adalah kunci publik node dalam heksadesimal sepanjang 64 karakter. Pada node yang Anda operasikan, ./target/release/aeronyx-server pubkey -c /etc/aeronyx/server.toml mencetaknya.
  • Target harus mengaktifkan kotak surat anonim ([memchain.chat_relay.anonymous_mailbox] enabled = true); fitur ini nonaktif secara default.
  • --work-bits (default 12) harus setidaknya sama dengan pengaturan kerja tiket pada target. --timeout-seconds berlaku per permintaan (default 20).
  • Perintah ini tidak membaca berkas node lokal, sehingga dapat dijalankan dari mesin mana pun yang memiliki biner. Perintah ini membuktikan penitipan sebuah item buram, bukan bahwa penerima dapat mendekripsinya.

Memperbarui dengan aman

Gunakan alur kerja pembaruan, bukan git pull yang diikuti systemctl restart:

bash
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" --build-priority live --build-jobs auto

Yang dilakukannya:

  1. Mengambil kunci penerapan dan menolak berjalan jika berkas yang dilacak di checkout telah diubah (--allow-dirty mengesampingkan ini).
  2. Menarik main (atau membangun commit yang persis di checkout terisolasi dengan --commit <40-hex SHA>).
  3. Membangun dengan toolchain Rust yang dipatok oleh repositori. Prioritas live (default) dan --build-jobs auto menggunakan sekitar separuh CPU sehingga node yang berjalan tetap melayani.
  4. Memvalidasi /etc/aeronyx/server.toml dengan biner baru. Berkas konfigurasi tidak pernah ditimpa.
  5. Mencadangkan biner yang benar-benar sedang berjalan ke /var/lib/aeronyx/releases/.
  6. Memeriksa sesi aktif setelah build, dan sekali lagi tepat sebelum mulai ulang. Jika ada sesi aktif, atau jika jumlahnya tidak dapat dibaca saat layanan berjalan, proses berhenti tanpa beralih versi.
  7. Memperbarui unit systemd, menukar ke biner baru, dan memulai ulang layanan.
  8. Menunggu hingga 180 detik (90 pemeriksaan, berjarak 2 detik) agar kesehatan lokal melaporkan ok dari commit yang baru saja dibangun. Jika mulai ulang, status layanan, atau pemeriksaan kesehatan gagal, proses memulihkan biner dan unit sebelumnya secara otomatis.
  9. Menyimpan 10 cadangan terbaru untuk setiap jenis dan mencatat hasilnya di /var/lib/aeronyx/upgrade-status.json.

Jika node memiliki sesi aktif, build tetap berjalan lalu pembaruan berhenti dengan Active sessions appeared during compilation. Enter maintenance mode, drain sessions, and run the upgrade again. Aktifkan Maintenance Mode di Settings Nodeboard, tunggu hingga sesi aktif mencapai nol, lalu jalankan perintah yang sama lagi. Build ulang menggunakan kembali cache.

Siapkan sekarang, mulai ulang nanti

bash
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" --no-restart

--no-restart membangun, memvalidasi, dan mencadangkan, lalu memasang biner baru di disk tanpa memulai ulang. status kemudian melaporkan upgrade_staged. Proses yang berjalan tetap menggunakan versi lama. Setiap mulai ulang berikutnya, termasuk reboot atau mulai ulang otomatis setelah crash, akan menjalankan biner baru.

Untuk beralih pada jendela pemeliharaan, kosongkan node dan jalankan pembaruan lagi tanpa menarik, sehingga node beralih tepat ke apa yang telah Anda siapkan, dengan pemeriksaan sesi, penantian kesehatan, dan rollback:

bash
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" --skip-pull

Jangan gunakan --force. Opsi ini memulai ulang bahkan ketika ada sesi aktif atau jumlah sesi tidak diketahui, dan memutus koneksi pengguna.

Rollback manual

Pembaruan melakukan rollback secara otomatis ketika rilis baru gagal dimulai atau gagal melaporkan status sehat. Untuk kembali ke rilis sebelumnya di kemudian hari, promosikan salah satu biner yang tersimpan:

bash
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 memvalidasi konfigurasi dengan biner yang dipilih dan menolak berjalan kecuali sesi aktif tepat nol. Perintah ini meminta Anda mengetik PROMOTE BINARY, mencadangkan biner saat ini di sebelahnya, menukar biner, dan memulai ulang. Jika layanan tidak sehat dalam 180 detik, perintah ini memulihkan biner sebelumnya. Perintah ini hanya mengganti biner, bukan unit systemd.

Setelah setiap mulai ulang

Periksa hal-hal berikut secara berurutan:

  1. systemctl is-active aeronyx-server mengembalikan active. Unit ini bertipe Type=notify, sehingga active berarti proses telah melaporkan siap; startup dapat memakan waktu hingga 300 detik sebelum systemd menyerah.
  2. ./deploy/node/aeronyx-node.sh status --repo-dir "$PWD" menampilkan operator_status=ok, atau peringatan yang Anda pahami.
  3. ./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --json diakhiri dengan "success":true dan local_vpn_health.status bernilai ok.
  4. Commit yang berjalan adalah yang Anda maksudkan: curl -s http://127.0.0.1:8421/api/vpn/health melaporkannya sebagai runtime.git_commit. (runtime.git_commit di health --json adalah commit dari checkout.)
  5. discovery_readiness.peer_quorum.quorum_ready bernilai true setelah putaran gossip pertama.
  6. Untuk node relay: relay-probe --two-hop --json melaporkan ok.
  7. Di Nodeboard, heartbeat masih baru, Rust Runtime menampilkan versi baru, dan mulai ulang muncul di bawah Alerts / Events. Nonaktifkan Maintenance Mode setelah selesai.
  8. journalctl -u aeronyx-server --since "15 min ago" tidak memiliki error yang berulang.

Bagaimana ini muncul di Nodeboard

Nodeboard menerima heartbeat bertanda tangan dan laporan sesi dari node. Nodeboard tidak menjalankan perintah di host dengan sendirinya; tindakan yang Anda pilih di sana dimasukkan ke antrean dan node menjalankannya pada heartbeat berikutnya.

Di nodeDi Nodeboard
Status layanan dan kesehatan lokalDaftar Nodes dan detail node: AeroNyx Health, Rust Runtime, AeroNyx Service Readiness
Penghitung kapasitasDetail node: Node Capacity dan Capacity Decision (ready, watch, blocked, waiting)
Kesiapan penemuan dan relayDetail node: Node Discovery, Encrypted Chat Relay; Services untuk seluruh armada
upgrade-status.jsonDetail node: Rust Upgrade Workflow; Services → Fleet Restart Readiness
Peringatan dalam log layananDetail node: Recent Operational Events (disanitasi, 24 jam terakhir)
Mulai ulang dan pemulihanAlerts / Events → Incident Closure (open, watch, recovered)
Maintenance Mode, sesi maksimum, bandwidth, tingkatanSettings, terkonfirmasi ketika Policy Sync menampilkan synced

Detail node juga memiliki kartu Operator Runbook dengan perintah health, status, logs dan pembaruan bertahap yang dapat disalin untuk jalur repositori yang terdeteksi.

Isi keluaran

status, health, relay-probe, relay-smoke dan mailbox-probe hanya mencetak nilai agregat: jumlah, status, waktu, dan kode alasan. Perintah-perintah ini tidak mencetak kunci privat, kode pendaftaran, IP publik klien, tujuan, isi DNS, payload, atau teks polos pesan. Catatan sesi dengan kunci klien terlihat di Nodeboard, bukan di keluaran ini; lihat Panduan konsol operator Nodeboard. Saat membagikan keluaran untuk dukungan, bagikan JSON beserta stempel waktunya, bukan alamat host atau kredensial.

<!-- faq:start -->

Pertanyaan yang sering diajukan

Perintah mana yang harus saya jalankan pertama kali ketika ada yang tampak salah?

Jalankan ./deploy/node/aeronyx-node.sh status --repo-dir "$PWD" sebagai root. Perintah ini menampilkan status layanan, kesehatan lokal, penemuan, dan langkah berikutnya yang direkomendasikan, dan tidak mengubah host.

Mengapa health gagal dengan "config missing" atau peringatan Git?

Kemungkinan Anda bukan root, atau Anda menunjuk ke repositori yang salah. /etc/aeronyx dan /var/lib/aeronyx hanya dapat diakses root, dan tanpa --repo-dir skrip memeriksa /opt/aeronyx/AeroNyx alih-alih checkout tempat layanan berjalan.

Apa perbedaan antara relay-probe dan relay-smoke?

relay-probe mengirim satu amplop buram sintetis dan hanya menunjukkan bahwa jalur relay menerima lalu lintas. relay-smoke bertindak sebagai klien sungguhan: perintah ini memverifikasi tanda terima terminal bertanda tangan serta penarikan dan ack kotak surat secara penuh untuk satu pesan uji terenkripsi.

Mengapa relay-smoke menyatakan bahwa ia memerlukan nol sesi aktif?

Perintah ini mengatribusikan perubahan penghitung ke sesi ujinya sendiri, sehingga hanya berjalan pada node yang menganggur. Aktifkan Maintenance Mode di Nodeboard, tunggu hingga sesi aktif mencapai nol, lalu jalankan.

Dapatkah saya memperbarui tanpa memutus koneksi pengguna?

Anda dapat membangun dan menyiapkan pembaruan dengan --no-restart saat pengguna terhubung. Beralih ke versi baru memerlukan mulai ulang, jadi kosongkan node dengan Maintenance Mode lalu jalankan upgrade --skip-pull.

Bagaimana cara kembali ke versi sebelumnya?

Pembaruan yang gagal melakukan rollback secara otomatis. Untuk rollback di kemudian hari, gunakan promote-binary dengan salah satu cadangan di /var/lib/aeronyx/releases/; perintah ini memerlukan nol sesi aktif dan memulihkan biner sebelumnya jika biner yang dipromosikan tidak sehat.

<!-- faq:end -->