Menjalankan dan memeriksa node AeroNyx
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.
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
| Perintah | Mengubah host? | Digunakan untuk |
|---|---|---|
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD" | Tidak | Tinjauan pertama: status layanan, kesehatan lokal, penemuan, status pembaruan, dan langkah berikutnya yang direkomendasikan |
./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --json | Tidak | Diagnostik lengkap; baris terakhir berupa JSON |
./deploy/node/aeronyx-node.sh logs --repo-dir "$PWD" --lines 200 | Tidak | Log layanan terbaru (--follow untuk mengikuti secara langsung) |
./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --json | Tidak mengubah host; mengirim satu amplop terenkripsi sintetis ke peer | Apakah jalur relay dapat digunakan? |
./target/release/aeronyx-server relay-smoke --confirm-live-relay-smoke --json | Membuat dua sesi uji berumur pendek | Bukti end-to-end atas pengiriman relay yang terautentikasi |
./target/release/aeronyx-server mailbox-probe … --confirm-live-mailbox-probe --json | Membuat satu kotak surat berumur pendek di node target | Bukti end-to-end atas kotak surat anonim melalui rute onion |
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" … | Ya | Membangun, memvalidasi, dan beralih ke rilis baru dengan rollback |
Status
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD"
status mencetak, secara berurutan:
systemctl status aeronyx-server(20 baris terakhir)- 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) - kesiapan penemuan lokal dari
http://127.0.0.1:8422/api/discovery/status: penayangan ChatRelay dan kuorum peer - status alur kerja pembaruan terakhir dari
/var/lib/aeronyx/upgrade-status.json - rekomendasi operator:
operator_status,operator_title,operator_detaildanoperator_next_step
Rekomendasi berasal dari pemeriksaan kesehatan. Statusnya adalah salah satu dari:
operator_status | Prioritas | Arti |
|---|---|---|
critical | fix_failed_healthcheck atau fix_failed_upgrade | Sebuah pemeriksaan gagal, atau pembaruan terakhir gagal |
warning | service_not_active, privacy_protocol_degraded atau review_warnings | Layanan mati, kesehatan lokal bukan ok, atau terdapat peringatan |
info | upgrade_staged | Sebuah build telah disiapkan dan menunggu mulai ulang |
ok | monitor | Tidak ada pemeriksaan yang gagal |
Kesehatan
./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:
| Bidang | Arti |
|---|---|
success | true jika tidak ada pemeriksaan yang gagal |
summary | Jumlah pass, warn dan fail |
operator_action | Rekomendasi yang ditampilkan oleh status (status, priority, title, detail, next_step) |
local_vpn_health | status (ok jika sehat), active_sessions, placement_readiness, encrypted_message_forwarding |
capacity | Penghitung kapasitas dan risiko yang dilaporkan oleh node |
discovery_readiness | Kapabilitas 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 |
runtime | Commit 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_status | Langkah, status, dan pesan pembaruan terakhir |
checks | Setiap pemeriksaan beserta status dan pesannya |
Anda dapat membaca endpoint lokal mentah secara langsung:
curl -s http://127.0.0.1:8421/api/vpn/health
curl -s http://127.0.0.1:8422/api/discovery/status
Log
./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)
./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)
./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:
| Gerbang | Gagal dengan |
|---|---|
Kesehatan lokal adalah ok dan tidak ada pemeriksaan kesehatan yang gagal | node health is not ready / node health has failed checks |
| Node memiliki nol sesi aktif | relay smoke requires zero active sessions for evidence attribution |
| Kuorum peer, pool rute, dan rute onion dua lompatan sudah siap | peer 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 pengiriman | authenticated 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 siap | chat 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 terautentikasi | authenticated 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.tomldan kunci node, dan hanya menerima alamat loopback (--server, default127.0.0.1:51820;--health-url, defaulthttp://127.0.0.1:8421/api/vpn/health). --timeout-secondsmenetapkan 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_verifieddane2e_ciphertext_verifiedyang semuanyatrue, sertasession_cleanupbernilaiexplicit_authenticated_close.terminal_replica_cleanupbernilainode_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)
./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.
--seeddapat 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.tomlmencetaknya. - 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-secondsberlaku 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:
./deploy/node/aeronyx-node.sh upgrade --repo-dir "$PWD" --build-priority live --build-jobs auto
Yang dilakukannya:
- Mengambil kunci penerapan dan menolak berjalan jika berkas yang dilacak di checkout telah diubah (
--allow-dirtymengesampingkan ini). - Menarik
main(atau membangun commit yang persis di checkout terisolasi dengan--commit <40-hex SHA>). - Membangun dengan toolchain Rust yang dipatok oleh repositori. Prioritas
live(default) dan--build-jobs automenggunakan sekitar separuh CPU sehingga node yang berjalan tetap melayani. - Memvalidasi
/etc/aeronyx/server.tomldengan biner baru. Berkas konfigurasi tidak pernah ditimpa. - Mencadangkan biner yang benar-benar sedang berjalan ke
/var/lib/aeronyx/releases/. - 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.
- Memperbarui unit systemd, menukar ke biner baru, dan memulai ulang layanan.
- Menunggu hingga 180 detik (90 pemeriksaan, berjarak 2 detik) agar kesehatan lokal melaporkan
okdari commit yang baru saja dibangun. Jika mulai ulang, status layanan, atau pemeriksaan kesehatan gagal, proses memulihkan biner dan unit sebelumnya secara otomatis. - 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
./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:
./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:
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:
systemctl is-active aeronyx-servermengembalikanactive. Unit ini bertipeType=notify, sehinggaactiveberarti proses telah melaporkan siap; startup dapat memakan waktu hingga 300 detik sebelum systemd menyerah../deploy/node/aeronyx-node.sh status --repo-dir "$PWD"menampilkanoperator_status=ok, atau peringatan yang Anda pahami../deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --jsondiakhiri dengan"success":truedanlocal_vpn_health.statusbernilaiok.- Commit yang berjalan adalah yang Anda maksudkan:
curl -s http://127.0.0.1:8421/api/vpn/healthmelaporkannya sebagairuntime.git_commit. (runtime.git_commitdihealth --jsonadalah commit dari checkout.) discovery_readiness.peer_quorum.quorum_readybernilaitruesetelah putaran gossip pertama.- Untuk node relay:
relay-probe --two-hop --jsonmelaporkanok. - Di Nodeboard, heartbeat masih baru, Rust Runtime menampilkan versi baru, dan mulai ulang muncul di bawah Alerts / Events. Nonaktifkan Maintenance Mode setelah selesai.
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 node | Di Nodeboard |
|---|---|
| Status layanan dan kesehatan lokal | Daftar Nodes dan detail node: AeroNyx Health, Rust Runtime, AeroNyx Service Readiness |
| Penghitung kapasitas | Detail node: Node Capacity dan Capacity Decision (ready, watch, blocked, waiting) |
| Kesiapan penemuan dan relay | Detail node: Node Discovery, Encrypted Chat Relay; Services untuk seluruh armada |
upgrade-status.json | Detail node: Rust Upgrade Workflow; Services → Fleet Restart Readiness |
| Peringatan dalam log layanan | Detail node: Recent Operational Events (disanitasi, 24 jam terakhir) |
| Mulai ulang dan pemulihan | Alerts / Events → Incident Closure (open, watch, recovered) |
| Maintenance Mode, sesi maksimum, bandwidth, tingkatan | Settings, 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.
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.