Lewati ke konten

Backup dan pemeliharaan

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.

Terminal window
# cron (02.15 setiap hari)
15 2 * * * /opt/celestian/deploy/scripts/backup.sh >> /var/log/celestian-backup.log 2>&1

Skrip menulis postgresql.dump dan timescaledb.dump ke ${BACKUP_DIR}/<tanggal-jam>/ dan menghapus backup yang lebih tua dari BACKUP_KEEP_DAYS (bawaan 7 hari).

Terminal window
# PostgreSQL
docker compose exec -T postgresql pg_restore -U postgres -d celestian --clean --if-exists < postgresql.dump
# TimescaleDB: wajib diapit pre/post restore
docker 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.dump
docker 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.

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.
  • GET /healthz dan GET /readyz pada backend (dipakai HEALTHCHECK Docker).
  • docker compose ps dan docker compose logs -f api untuk 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 kosong bila PDF tidak dipakai.
Terminal window
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'