Kendi Sunucunuzdaki VeloCMS için Yedekleme ve Geri Yükleme
Otomatik PocketBase yedeklemeleri nasıl ayarlanır, bu yedekler sunucu dışında nasıl saklanır ve işler ters gittiğinde bir yedekten nasıl geri dönülür, hepsini anlatıyoruz.
Kendi sunucunuzda barındırdığınız VeloCMS, tüm verileri bir PocketBase SQLite veritabanında, medya dosyalarını ise bir depolama klasöründe (veya ayarlandıysa Cloudflare R2'de) tutar. İyi bir yedekleme stratejisi bu ikisini de kapsamalı. Bu rehber, VeloCMS'i bir VPS üzerinde Docker Compose ile çalıştırdığınızı varsayıyor.
Neleri Yedeklemeli?
- PocketBase veri klasörü — genelde `./pb_data/` yolunda bulunur — SQLite veritabanını ve yerel medya yüklemelerini içerir.
- Ortam değişkenleri dosyası (`.env`) — API anahtarlarınızı ve gizli bilgilerinizi barındırır. Bunu yedekle birlikte değil, ayrı bir yerde, mesela bir 'secrets manager' içinde saklayın.
- Özel tema klasörü — eğer varsayılan şablonların dışında özel tema JSON dosyaları oluşturduysanız.
Cron Job ile Otomatik Günlük Yedekleme
PocketBase'in dahili bir yedekleme API'ı var. Bunu bir cron job ile çağırarak her gece otomatik olarak zaman damgalı bir yedek oluşturabilirsiniz. Sunucunuzun crontab'ine (`crontab -e` komutuyla) şu satırı ekleyin:
# Daily backup at 03:00 UTC
0 3 * * * curl -X POST "http://localhost:8090/api/backups" -H "Authorization: Bearer $PB_SUPERUSER_TOKEN" >> /var/log/velocms-backup.log 2>&1`localhost:8090` kısmını, eğer farklı bir port kullanıyorsanız kendi PocketBase URL'niz ile değiştirin. Yedek, `pb_data/backups/` klasöründe, tüm veritabanını ve medyayı içeren bir `.zip` dosyası olarak oluşturulur. `PB_SUPERUSER_TOKEN` değişkenine de PocketBase yönetici panelinizden alacağınız uzun ömürlü bir süper kullanıcı token'ını atamayı unutmayın.
Yedekleri Sunucu Dışına Taşıma
Sunucunun kendisinde tutulan yedekler, sunucu çökerse pek bir işe yaramaz. Her yedeklemeden sonra `.zip` dosyasını sunucu dışı bir yere kopyalamak lazım. Cloudflare R2, AWS S3 veya Backblaze B2 bu iş için biçilmiş kaftan. Her üç sağlayıcıyı da destekleyen platform bağımsız bir CLI olan `rclone`'u kullanarak, her cron çalışmasından sonra yedekler klasörünü senkronize edebilirsiniz. Günlük yedeklerle 7 günlük bir saklama politikası, son bir hafta içindeki herhangi bir ana geri dönebileceğiniz anlamına gelir.
Yedekten Geri Yükleme
Geri yükleme için adımlar şöyle: (1) VeloCMS container'larını durdurun (`docker compose down`), (2) yedek `.zip` dosyasını sunucu dışı depolama alanınızdan indirin, (3) dosyayı `pb_data/` klasörünüze açın — mevcut dosyaların üzerine yazılacak, (4) container'ları yeniden başlatın (`docker compose up -d`). PocketBase başlangıçta geri yüklenen veritabanını okuyacaktır. `/admin` adresine giriş yapıp içeriğinizin yerli yerinde olduğunu kontrol ederek geri yüklemenin başarılı olduğunu doğrulayın.
Bir yedeği geri yüklemek, mevcut veritabanınızın üzerine kalıcı olarak yazar. Bunun geri dönüşü yoktur. Eğer emin değilseniz, geri yüklemeden önce mevcut `pb_data/` klasörünün adını `pb_data_old/` olarak değiştirin. Bu size, olur da geri yükleme başarısız olursa bir kaçış yolu sunar.
Yedekleme Sürecinizi Test Etmek
Hiç test etmediğiniz bir yedek, yedek değildir; olsa olsa bir umuttur. Her 90 günde bir, bir yedeği yerel bir ortama geri yükleyip sitenin açıldığını, yazıların yerinde olduğunu ve medyaların düzgün çalıştığını doğrulayın. Geri yükleme başarısız olursa, sorun kriz anında değil, yedekleme prosedürünüzün kendisindedir.