Backup dan pemeliharaan
Yang harus dicadangkan
Section titled “Yang harus dicadangkan”| Data | Lokasi | Cara |
|---|---|---|
| PostgreSQL dan TimescaleDB | ${DATA_DIR}/postgresql, ${DATA_DIR}/timescaledb |
deploy/scripts/backup.sh (pg_dump format custom). |
Berkas .env |
deploy/.env |
Salin ke tempat aman. Jangan di-commit. |
SECRETS_KEY |
di .env |
Salinan terpisah di luar server (password manager). Tanpa kunci ini, kredensial tersimpan tidak bisa dibaca walau database pulih. |
| Berkas firmware | ${DATA_DIR}/firmware |
Salin folder. |
| Sertifikat CA sendiri | ${DATA_DIR}/tls-ca/ |
Cadangkan ca.key. |
Backup konfigurasi per workspace oleh pengguna (Backup dan restore) melengkapi, tidak menggantikan, backup server.
Backup harian
Section titled “Backup harian”# cron (02.15 setiap hari)15 2 * * * /opt/celestian/deploy/scripts/backup.sh >> /var/log/celestian-backup.log 2>&1Skrip menulis postgresql.dump dan timescaledb.dump ke ${BACKUP_DIR}/<tanggal-jam>/ dan menghapus backup yang lebih tua dari BACKUP_KEEP_DAYS (bawaan 7 hari).
Memulihkan
Section titled “Memulihkan”# PostgreSQLdocker compose exec -T postgresql pg_restore -U postgres -d celestian --clean --if-exists < postgresql.dump
# TimescaleDB: wajib diapit pre/post restoredocker compose exec -T timescaledb psql -U postgres -d celestian -c "SELECT timescaledb_pre_restore();"docker compose exec -T timescaledb pg_restore -U postgres -d celestian --clean --if-exists < timescaledb.dumpdocker compose exec -T timescaledb psql -U postgres -d celestian -c "SELECT timescaledb_post_restore();"Peringatan “circular foreign-key” saat dump TimescaleDB adalah normal. Latih prosedur pemulihan di lingkungan uji sebelum Anda membutuhkannya.
Pemeliharaan otomatis
Section titled “Pemeliharaan otomatis”Server menjalankan sendiri beberapa tugas latar belakang:
| Tugas | Keterangan |
|---|---|
| Migrasi database | Otomatis saat api start (dengan kunci advisory, aman untuk beberapa instance). |
| Retensi pesan | Kompresi setelah 7 hari dan penghapusan setelah 365 hari (hypertable TimescaleDB). |
| Retensi journal | Bawaan 180 hari, dibersihkan tiap jam. |
| Eksekusi rule | Jejak 7 hari dibersihkan tiap jam. |
| Hasil report | Dipertahankan sesuai REPORTS_RETENTION. |
| Penghapusan workspace | Workspace beku dihapus permanen setelah masa tenggang; pesannya dibersihkan bertahap. |
Memantau
Section titled “Memantau”GET /healthzdanGET /readyzpada backend (dipakaiHEALTHCHECKDocker).docker compose psdandocker compose logs -f apiuntuk status dan log.- Halaman Home per workspace menampilkan aktivitas pesan 24 jam.
- Peringatan log yang lazim: “belum bisa terhubung ke broker” saat start (wajar), dan
REPORTS_PDF_URL kosongbila PDF tidak dipakai.
Reset total (hanya untuk lingkungan uji)
Section titled “Reset total (hanya untuk lingkungan uji)”docker compose down# hapus isi DATA_DIR lewat kontainer (file milik uid kontainer), dengan path literal:docker run --rm -v /srv/celestian-data:/d alpine sh -c 'rm -rf /d/postgresql /d/timescaledb /d/redis /d/fluxmq'