Kembali ke Series Homelab dari Nol
Homelab

Backup & Restore Homelab: Panduan Agar Data Tidak Hilang

Panduan lengkap backup dan restore homelab. Strategi 3-2-1, backup VM/LXC dengan Proxmox, backup Docker volume, dan cara memastikan backup bisa dipulihkan.

A
Alif Afriza Penulis
· · 5 menit baca
Backup & Restore Homelab: Panduan Agar Data Tidak Hilang

Backup adalah bagian terlambat yang paling sering dilewatkan orang yang baru memulai homelab. Server makin lama makin banyak isinya: foto, dokumen, konfigurasi, data aplikasi. Kalau disk rusak atau salah setting, semua itu hilang dalam hitungan detik.

Part ini membahas cara membuat backup yang benar-benar bisa dipulihkan, bukan sekadar menyalin file ke satu tempat.

Strategi 3-2-1

Aturan yang paling banyak dipakai administrator adalah 3-2-1:

  • 3 salinan data
  • 2 di media yang berbeda
  • 1 di lokasi yang terpisah secara fisik

Contoh penerapannya: data asli di server, backup di NAS di rumah, dan satu salinan lagi di hard drive eksternal atau penyimpanan cloud.

Homelab pemula bisa mulai dari 2-1-1 (dua salinan, satu lokasi terpisah) dan naik bertahap. Yang penting bukan jumlahnya, tapi disiplin jadwalnya.

Apa Saja yang Perlu Dibackup

Sebelum mengatur tool, buat daftar aset yang nilainya tidak bisa diganti:

AsetContohCara backup
File pribadiFoto, dokumen, project codeRsync/Borg/Restic ke NAS
DatabasePostgreSQL, MySQLDump SQL lalu backup file dump
Container stateDocker volumeSnapshot volume / vzdump
VM & LXCProxmox containervzdump
KonfigurasiNginx, Cloudflare Tunnel, systemdRsync /etc + folder config di Git

Backup Docker Volume

Container Docker menyimpan data di volume. Menyalin folder container tidak cukup karena strukturnya beda tergantung image.

Cara paling sederhana: berhentikan container dulu, lalu salin volume.

# Lihat daftar volume
docker volume ls

# Backup satu volume ke folder host
docker run --rm -v namavolume:/data -v /srv/backup:/backup alpine \
  tar czf /backup/namavolume-$(date +%Y%m%d).tar.gz /data

Untuk service yang datanya di database, backup lewat dump lebih aman daripada menyalin file database langsung.

# Backup database PostgreSQL yang jalan di container
docker exec -t postgres pg_dump -U user dbname -F c -f /tmp/db.dump

# Tarik keluar file dump dari container
docker cp postgres:/tmp/db.dump /srv/backup/db-$(date +%Y%m%d).dump

Backup VM dan LXC di Proxmox

Kalau homelab kamu berjalan di Proxmox, tool bawaan bernama vzdump menangani backup VM dan LXC. Format vzdump mendukung mode stop (cool dan paling konsisten) dan mode snapshot (server tetap jalan saat backup).

# Backup semua container/VM ke storage backup
vzdump 101,102,103 --storage backup --mode snapshot \
  --compress zstd --notes-template "Backup bulanan"

# Backup satu container saja
vzdump 103 --storage backup --mode snapshot --compress zstd

Kamu juga bisa menjadwalkannya lewat web UI: Datacenter > Backup, lalu tambah Backup Job dengan jadwal jam tertentu. Pilih retention supaya backup lama otomatis dihapus, misalnya simpan 7 hari harian dan 4 minggu mingguan.

Backup Konfigurasi dengan Restic

Untuk backup file dan folder ke NAS atau layanan cloud, Restic adalah pilihan yang solid: terenkripsi, deduplikasi, dan punya banyak backend (lokal, SFTP, S3, B2).

# Inisialisasi repository
restic -r /mnt/nas/restic init

# Backup folder penting
restic -r /mnt/nas/restic backup \
  /etc \
  /srv \
  --exclude '*.log' \
  --tag server1

# Cek snapshot yang sudah ada
restic -r /mnt/nas/restic snapshots

# Restore snapshot tertentu
restic -r /mnt/nas/restic restore latest --target /restore

Kunci dari Restic adalah tersimpan di luar server. Tulis passphrase-nya di tempat yang tidak ikut hilang jika server mati.

Otomasi Jadwal Backup

Manusia lupa. Jadwalkan backup dengan cron atau systemd timer agar berjalan tanpa perlu diingat.

# /etc/cron.d/backup-homelab
# Backup restic setiap hari pukul 02:00
0 2 * * * root /usr/local/bin/backup-daily.sh >> /var/log/backup.log 2>&1

Isi backup-daily.sh:

#!/bin/bash
set -euo pipefail
restic -r /mnt/nas/restic backup \
  --tag home \
  --exclude-caches \
  /srv /opt /etc/nginx

Setelah itu, beri exec bit: chmod +x /usr/local/bin/backup-daily.sh.

Verifikasi: Backup Harus Bisa Dipulihkan

Backup yang tidak pernah diuji sama saja dengan tidak punya backup. Lakukan uji restore minimal sekali dalam satu atau dua bulan.

Cara murah untuk menguji: restore ke folder terpisah dan bandingkan checksum, atau jalankan container uji dari volume backup.

# Bandingkan checksum antara file asli dan hasil restore
find /srv -type f -exec sha256sum {} + > /tmp/asli.sha256
find /restore -type f -exec sha256sum {} + > /tmp/restore.sha256

# Diff dua list, outputnya harus kosong
diff /tmp/asli.sha256 /tmp/restore.sha256

Kalau isinya beda, artinya ada yang salah di proses backup. Perbaiki sebelum menunggu kejadian yang membutuhkannya.

Gunakan Alarm Jika Backup Gagal

Backup yang gagal diam-diam lebih buruk daripada tidak ada backup. Backup management bisa terintegrasi dengan dashboard monitoring, atau minimal kirim notifikasi ke aplikasi chat:

#!/bin/bash
if restic -r /mnt/nas/restic backup /srv; then
  curl -fsS -X POST "https://ntfy.sh/homelab-alert" \
    -H "Title: Backup OK" -d "Backup berhasil $(date)"
else
  curl -fsS -X POST "https://ntfy.sh/homelab-alert" \
    -H "Title: Backup GAGAL" -d "Periksa log: $(date)"
fi

Dengan begitu kegagalan langsung terlihat, bukan baru ketahuan pas data sudah hilang.

Apa yang Harus Dihindari

  • Hanya satu lokasi penyimpanan. Kalau disk tersebut ikut hilang, backup tidak menolong.
  • Skip verifikasi restore. File ada tapi corrupt di banyak titik, sama saja.
  • Backup tanpa enkripsi ke cloud. Data pribadi kamu tersimpan apa adanya di server orang lain.
  • Jadwal manual tanpa pengingat. Konsistensi lebih penting daripada tool yang canggih.

Ringkasan

Urutan kerja yang benar: inventarisasi data, pilih 2-3 lokasi penyimpanan, jadwalkan backup otomatis, dan uji restore secara berkala. Tool bisa datang belakangan; kebiasaannya yang harus lebih dulu.

Di part berikutnya kita akan masuk ke arah lain dari homelab yang siap produksi: melihat kondisi server dengan Grafana dan Prometheus, supaya masalah seperti disk penuh terdeteksi sebelum mengganggu service. Lanjut ke Part 10: Monitoring Server dengan Grafana & Prometheus.

Open for Contributors

Ide kamu layak dibaca ribuan orang.

ByteNesia dibangun untuk semua orang. Kalau kamu punya pengalaman, tutorial, atau opini tentang teknologi, tulis dan bagikan lewat sini. Nama kamu akan tercantum sebagai kontributor.

Tulis apa saja: review tools, tutorial homelab, tips security, atau cerita pengalaman tech kamu.

Diskusi & Komentar