Restic bukan pulau: ada ekosistem yang memperluasnya. Episode ini membahas rest-server sebagai produk backup server, wrapper seperti resticprofile dan restic-compose untuk konfigurasi terpusat, dashboard Grafana, eksposisi metrics Prometheus, serta integrasi backup ke dalam pipeline CI/CD.

Episode 12 membangun rest-server; episode 18 mengoptimalkan skalanya. Sekarang kita melangkah keluar dari binary itu sendiri: ekosistem yang membuat restic bisa dikelola, dipantau, dan diintegrasikan seperti produk enterprise. Satu binary hebat tidak cukup — tim butuh konfigurasi terpusat, metrics, dan pipeline.
rest-server bukan sekadar daemon — ia adalah produk backup server dalam satu binary. Yang sudah kalian kuasai di episode 12 (HTTPS, htpasswd, append-only) adalah fondasinya. Di produksi, ia biasanya berdiri di belakang reverse proxy dengan:
systemd + healthcheck).Contoh healthcheck untuk rest-server:
curl -fsS https://backup.example.com/ | grep -q "restic" || exit 1Menjalankan restic dengan 10 flag berulang kali membuat config tersebar di banyak cron. resticprofile mengatasinya dengan konfigurasi YAML terpusat:
default:
repository: s3:https://minio.example.com/backup-bucket
password-file: /etc/restic/passphrase
daily:
backup:
source: /home/user
exclude-file: /etc/restic/excludes.txt
tag: daily
upload-limit: 4096
prune:
forget:
keep-daily: 7
keep-monthly: 6
prune: trueLalu jalankan:
resticprofile daily backup
resticprofile prune forgetKeuntungan: satu file untuk semua jadwal, bisa di-versioning, dan men-support Prometheus metrics (episode 20).
restic-compose (docker-compose) mengelola container backup dengan pola yang sama — untuk yang sudah menyeragamkan deploy lewat compose (episode 12).
Untuk visualisasi, community menyediakan dashboard Grafana untuk restic (cari "restic" di grafana.com dashboards). Metrik yang umum ditampilkan: status backup terakhir, durasi, data added, dan error rate. Dashboard ini hidup dari metrics Prometheus yang diekspos oleh script/wrapper — bukan dari binary restic itu sendiri.
Restic tidak punya endpoint metrics bawaan. Solusi umum: wrapper yang menjalankan backup lalu mem-publish status. Dengan resticprofile, pengukuran otomatis:
resticprofile --source /etc/resticprofile.yaml backup --log-format json \
--exporter-prometheus \
--exporter-prometheus-listen-address :9090Untuk custom, script sederhana bisa menghitung dan meng-export metrik:
start=$(date +%s)
if restic backup /data --json; then
echo 'restic_backup_status 1' >> /var/lib/node_exporter/restic.prom
else
echo 'restic_backup_status 0' >> /var/lib/node_exporter/restic.prom
fi
echo "restic_backup_duration $(($(date +%s)-start))" >> /var/lib/node_exporter/restic.promDetail lengkap metrik & alerting ada di episode 20.
Backup bisa menjadi bagian dari pipeline — misalnya snapshot sebelum deploy:
- name: Backup pre-deploy dengan restic
run: |
export RESTIC_PASSWORD="${{ secrets.RESTIC_PASSWORD }}"
restic -r s3:${{ secrets.S3_ENDPOINT }}/${{ secrets.BUCKET }} \
backup ./artifacts --tag predeployIni menerapkan pola --keep-tag dari episode 8: snapshot predeploy dilindungi dari policy forget sehingga kalian bisa rollback ke state sebelum deploy yang bermasalah.
Note
Di CI, jangan hardcode kredensial — injeksi via secret management (episode 3 dan 15). Snapshot CI biasanya berisi artifact build yang bisa dihasilkan ulang; set retention agresif agar repository tidak membengkak.
--tag predeploy + --keep-tag untuk rollback.Di episode 20 selanjutnya kita membuat backup terpantau: monitoring & alerting — exporter/script untuk status backup (success/failed/duration), alarm saat gagal, notifikasi Email/Slack/Telegram, dan dashboard untuk seluruh fleet.