Tutorial Disaster Recovery VPS: Automasi Encrypted Backup Pakai Restic & Cloudflare R2
Poin Kunci Artikel Ini:
- Mimpi Buruk di Jam Dua PagiBayangkan ponsel mendadak berdering jam dua pagi.
- Notifikasi monitoring masuk: server produksi down.
- Buka laptop, coba SSH ke VPS, koneksi menolak.
Mimpi Buruk di Jam Dua Pagi
Bayangkan ponsel mendadak berdering jam dua pagi. Notifikasi monitoring masuk: server produksi down. Buka laptop, coba SSH ke VPS, koneksi menolak. Masuk ke console provider, layar hitam menampilkan pesan kernel panic. Storage crash total, atau ransomware menembus celah keamanan web server dan mengunci seluruh isi /var/www serta basis data aplikasi.
Kondisi ini makin parah jika backup tersimpan di partisi yang sama atau VPS sekunder dalam satu jaringan data center. Serangan ransomware akan melahap file cadangan tersebut tanpa sisa. Mengandalkan fitur snapshot bawaan provider VPS juga punya risiko tersendiri saat terjadi ganggual massal pada penyedia layanan atau akun terblokir.
Kenapa Cara Backup Lama Sering Bermasalah?
Banyak pengelola server masih menggunakan script tar.gz lalu dikirim via rsync ke server lain. Metode konvensional ini menyimpan tiga masalah besar:
- Tanpa Enkripsi Bawaan: Target storage yang diretas membuat data mentah langsung terbaca tanpa hambatan.
- Boros Ruang Storage: Setiap proses backup menyalin seluruh file dari nol. Tanpa deduplikasi pintar, kapasitas penyimpanan cepat penuh.
- Lambat dan Membakar Bandwidth: Transfer data berukuran besar tanpa pemecahan blok efisien membebani memory dan jaringan server produksi.
Solusi Restic dan Cloudflare R2
Restic hadir menyelesaikan kendala tersebut lewat arsitektur modern:
- End-to-End Encryption: Data dienkripsi langsung di VPS menggunakan algoritma AES-256 sebelum diunggah. Penyedia storage tidak bisa mengintip isi data sama sekali.
- Deduplikasi Berbasis Konten: Restic memecah file menjadi potongan blok unik dan hanya mengunggah potongan yang berubah. Backup harian selesai dalam hitungan detik dan hemat kapasitas storage.
- Cloudflare R2 Storage: Storage objek standar S3 tanpa biaya transfer keluar (zero egress fee). Solusi penyimpanan off-site jangka panjang yang sangat hemat anggaran.
Setup Bucket Cloudflare R2 dan Repository Restic
1. Konfigurasi Bucket dan Kredensial R2
Buka dashboard Cloudflare, masuk ke menu R2 Object Storage, lalu jalankan langkah berikut:
- Klik Create bucket, beri nama bucket (contoh:
vps-backup-repository). - Kembali ke halaman utama R2, pilih Manage R2 API Tokens di sebelah kanan.
- Klik Create API Token. Ubah hak akses menjadi Object Read & Write, lalu arahkan ke bucket yang baru dibuat.
- Catat tiga informasi penting yang muncul: Access Key ID, Secret Access Key, dan Endpoint URL S3 API (format:
https://<ACCOUNT_ID>.r2.cloudflarestorage.com).
2. Install Restic di VPS Linux
Jalankan perintah instalasi sesuai distro Linux pada server Anda.
Pengguna Ubuntu atau Debian:
sudo apt update && sudo apt install -y resticPengguna RHEL, Rocky Linux, atau AlmaLinux:
sudo dnf install -y resticCek apakah instalasi berhasil:
restic version3. Inisialisasi Repository Terenkripsi
Ekspor variabel lingkungan untuk menghubungkan Restic ke Cloudflare R2. Tentukan password kuat untuk mengunci repository.
export AWS_ACCESS_KEY_ID="ISI_ACCESS_KEY_ID_R2"
export AWS_SECRET_ACCESS_KEY="ISI_SECRET_ACCESS_KEY_R2"
export RESTIC_REPOSITORY="s3:https://<ACCOUNT_ID>.r2.cloudflarestorage.com/vps-backup-repository"
export RESTIC_PASSWORD="PasswordSangatKuatDanRahasiamu123!"
restic initProses inisialisasi yang berhasil akan menampilkan ID repository baru. Simpan password repository ke dalam pengelola kata sandi seperti Bitwarden atau 1Password. Tanpa password ini, data terenkripsi di R2 mustahil bisa dibuka kembali.
Automasi Backup, Cleaning, dan Pengujian Restore
1. Buat Script Backup Otomatis
Amankan direktori khusus untuk menyimpan kredensial agar tidak bisa diakses user biasa.
sudo mkdir -p /etc/restic
sudo chmod 700 /etc/resticSimpan password Restic ke dalam file terproteksi:
echo "PasswordSangatKuatDanRahasiamu123!" | sudo tee /etc/restic/restic-password
sudo chmod 600 /etc/restic/restic-passwordBuat file script baru di /usr/local/bin/vps-backup.sh:
#!/usr/bin/env bash
set -e
# Kredensial Cloudflare R2 & Restic
export AWS_ACCESS_KEY_ID="ISI_ACCESS_KEY_ID_R2"
export AWS_SECRET_ACCESS_KEY="ISI_SECRET_ACCESS_KEY_R2"
export RESTIC_REPOSITORY="s3:https://<ACCOUNT_ID>.r2.cloudflarestorage.com/vps-backup-repository"
export RESTIC_PASSWORD_FILE="/etc/restic/restic-password"
# Direktori target backup
BACKUP_PATHS="/etc /var/www /var/backups"
# Ekspor basis data MySQL/MariaDB sebelum proses backup
mysqldump --all-databases --single-transaction --quick | gzip > /var/backups/all_databases.sql.gz
# Jalankan backup Restic
restic backup \
--exclude="/var/www/*/cache" \
--exclude="*.tmp" \
--tag automated \
$BACKUP_PATHS
# Hapus snapshot lama berdasarkan aturan retensi
restic forget \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 12 \
--pruneUbah izin file agar script bisa dieksekusi:
sudo chmod +x /usr/local/bin/vps-backup.sh2. Pasang Jadwal Cronjob Server
Buka editor crontab milik user root:
sudo crontab -eTambahkan baris berikut agar proses backup berjalan otomatis setiap hari pukul 02:30 WIB:
30 2 * * * /usr/local/bin/vps-backup.sh >> /var/log/restic-backup.log 2>&13. Uji Pemulihan Data (Disaster Recovery Test)
Backup yang tidak pernah diuji nilainya sama dengan nol. Lakukan verifikasi secara berkala untuk memastikan data benar-benar bisa dipulihkan.
Tampilkan daftar snapshot yang ada di Cloudflare R2:
export AWS_ACCESS_KEY_ID="ISI_ACCESS_KEY_ID_R2"
export AWS_SECRET_ACCESS_KEY="ISI_SECRET_ACCESS_KEY_R2"
export RESTIC_REPOSITORY="s3:https://<ACCOUNT_ID>.r2.cloudflarestorage.com/vps-backup-repository"
export RESTIC_PASSWORD_FILE="/etc/restic/restic-password"
restic snapshotsCoba restore snapshot terbaru ke direktori pengujian /tmp/restore-test:
restic restore latest --target /tmp/restore-testJalankan pemeriksaan integritas struktur data pada remote repository:
restic checkTerapkan Strategi 3-2-1 Sekarang
Kombinasi Restic dan Cloudflare R2 memudahkan penerapan standar keamanan data 3-2-1:
- 3 Salinan Data: File produksi aktif, snapshot lokal server, dan cadangan terenkripsi di R2.
- 2 Media Berbeda: Storage lokal VPS dan Object Storage cloud.
- 1 Lokasi Off-site: Data tersimpan aman di jaringan global Cloudflare yang terisolasi dari infrastruktur VPS utama.
Jangan menunggu sampai server kena ransomware atau harddisk rusak untuk mulai berbenah. Sisihkan waktu 15 menit hari ini: pasang Restic, buat bucket Cloudflare R2, dan amankan data server Anda sekarang juga.




๐ฌ Komentar (0)
Tulis Komentar