Sunucu yedekleme HestiaCP ve CloudPanel'de: S3 uzak depoya otomatik yedek ve site bazlı geri yükleme
HestiaCP ve CloudPanel'de sunucu yedekleme ayarlarını aynı diskten çıkarın: rclone ile şifreli S3 hedefi tanımlayın, zamanlama ve saklama süresini ayarlayın, tek siteyi ya da tek veritabanını güvenle geri yükleyin ve düzenli geri yükleme testi yapın.
Batuhan Çelikel11 dk okuma
HestiaCP ya da CloudPanel gibi lisans ücreti olmayan bir panel kullanıyorsanız sunucu yedekleme işi büyük ölçüde size kalır. İki panel de yedek alabilir. Ama varsayılan ayarda HestiaCP yedekleri aynı sunucunun diskinde tutar, CloudPanel'de ise uzak yedeği sizin açmanız gerekir. Bu rehber sistem yöneticileri ve sunucusunu kendi yöneten KOBİ'ler için. Amaç şu: yedekler her gün kendiliğinden S3 uyumlu bir depoya gitsin, şifreli olsun, belirli bir süre saklansın ve tek bir siteyi geri dönmeniz gerektiğinde ne yapacağınızı bilin.
Panel yedeği neden yetmez: aynı diskteki yedeğin riski
HestiaCP varsayılan olarak yedekleri /backup dizinine yazar. Bu dizin çoğu kurulumda sitelerin durduğu diskle aynı yerdedir. Bu yüzden aşağıdaki durumların hepsinde canlı veriyle birlikte yedek de kaybolur:
- Disk arızası ya da dosya sisteminin bozulması.
- Sunucuya sızan saldırganın ya da fidye yazılımının root yetkisi alması.
- Yanlış bir komutla dizinin silinmesi ya da sunucunun yanlışlıkla iptal edilmesi.
- Sağlayıcı tarafında yaşanan ve sanal makinenin tamamını etkileyen bir sorun.
Sağlayıcının aldığı snapshot da bu sorunu tam çözmez. Snapshot genelde aynı altyapıda durur ve tek bir siteyi geri dönmek için bütün makineyi geri almanızı ister. Panel yedeği ise site, veritabanı ve e-posta bazında parçalı geri dönüş sağlar. Doğru kurgu ikisini birleştirir: panel yedeği alınır, ama sunucunun dışına, başka bir depoya gönderilir.
Karar ölçütü basit: "Bu sunucu bütünüyle ortadan kalksa yedeğe başka bir makineden ulaşabilir miyim?" sorusuna "evet" diyemiyorsanız uzak yedeğiniz yok demektir.
Ön koşullar
- HestiaCP 1.8 ya da üzeri (rclone desteği bu seriyle geldi) veya CloudPanel v2.
- S3 uyumlu bir bucket, erişim anahtarı (access key) ve gizli anahtar (secret key). Anahtara yalnız bu bucket için yetki verin.
- Sunucuda root ya da sudo erişimi.
- Yedeğin en az bir günlük boyutunu karşılayacak kadar boş disk. İki panel de yedeği önce yerelde oluşturup sonra gönderir.
Bucket henüz yoksa İstanbul'da tutulan S3 uyumlu Object Storage gibi bir hedef kullanabilirsiniz. Hangi sağlayıcıyı seçerseniz seçin, bucket'ın herkese açık olmadığını kontrol edin.
HestiaCP'de sunucu yedekleme: v-backup-user, zamanlama ve uzak hedef
Yedeğin nasıl alındığını görün
HestiaCP her kullanıcı için tek bir .tar arşivi üretir. İçinde web dosyaları, veritabanı dökümleri, DNS, e-posta ve cron kayıtları bulunur. Elle yedek almak ve mevcut yedekleri listelemek için:
# Tek bir kullanıcının yedeğini hemen alır
sudo /usr/local/hestia/bin/v-backup-user ORNEK_KULLANICI
# Kullanıcının yedeklerini listeler (dosya adı, boyut, tarih)
sudo /usr/local/hestia/bin/v-list-user-backups ORNEK_KULLANICI
# Günlük yedeği tetikleyen cron kaydını gösterir (v-backup-users satırını arayın)
sudo /usr/local/hestia/bin/v-list-cron-jobs admin | grep backup
Zamanlama admin kullanıcısının cron listesindeki v-backup-users satırıyla yapılır. Saati değiştirmek isterseniz panelde admin olarak Cron Jobs bölümünden bu satırı düzenleyin. Yoğun saatlerden uzak, gece yarısından sonra bir saat seçmek disk ve veritabanı yükünü azaltır.
Kaç yedek saklanacağı kullanıcının bağlı olduğu paketteki Backups değeriyle belirlenir. Bu değer 3 ise her kullanıcı için en son 3 arşiv tutulur, eskileri silinir.
rclone ile şifreli S3 hedefi tanımlama
HestiaCP uzak hedef olarak FTP, SFTP, Backblaze B2 ve rclone destekler. S3 uyumlu depo için rclone yolu en esnek olanıdır. HestiaCP kendi yedeğini şifrelemediği için araya rclone'un crypt katmanını koymak, depoya giden dosyaların okunamaz olmasını sağlar.
Aşağıdaki betik Ubuntu 24.04 ve Debian 12 üzerinde, HestiaCP 1.8 ve sonrası için hazırlandı. rclone'u kurar, S3 remote'unu ve onun üstüne şifreli remote'u oluşturur. Remote zaten varsa yeniden oluşturmaz, yani tekrar çalıştırılabilir. Geri almak için sudo rclone config delete ORNEK_SIFRELI ve sudo rclone config delete ORNEK_S3 yeterlidir; bucket'taki veriye dokunmaz.
#!/usr/bin/env bash
# HestiaCP icin rclone S3 + crypt hedefi hazirlama
# Ubuntu 24.04 ve Debian 12 icin hazirlandi. root olarak calistirin.
set -euo pipefail
# --- Degistirmeniz gereken degerler ---
S3_REMOTE="ORNEK_S3" # duz S3 remote adi
CRYPT_REMOTE="ORNEK_SIFRELI" # sifreli remote adi
ENDPOINT="https://s3.example.com" # saglayicinizin S3 adresi
ACCESS_KEY="ORNEK_ACCESS_KEY"
SECRET_KEY="ORNEK_SECRET_KEY"
BUCKET="ornek-yedek-bucket"
KLASOR="hestia-sunucu01" # bucket icinde bu sunucuya ait klasor
CRYPT_PAROLA="ORNEK_UZUN_PAROLA" # bunu sunucu disinda da saklayin!
# --------------------------------------
# rclone yoksa dagitim deposundan kur
if ! command -v rclone >/dev/null 2>&1; then
apt-get update && apt-get install -y rclone
fi
# Duz S3 remote'u yoksa olustur
if ! rclone listremotes | grep -qx "${S3_REMOTE}:"; then
rclone config create "$S3_REMOTE" s3 \
provider Other \
access_key_id "$ACCESS_KEY" \
secret_access_key "$SECRET_KEY" \
endpoint "$ENDPOINT" \
acl private
fi
# Sifreli remote'u yoksa olustur (parola rclone tarafindan gizlenerek yazilir)
if ! rclone listremotes | grep -qx "${CRYPT_REMOTE}:"; then
rclone config create "$CRYPT_REMOTE" crypt \
remote "${S3_REMOTE}:${BUCKET}/${KLASOR}" \
password "$CRYPT_PAROLA" \
filename_encryption standard
fi
# Erisim testi: hata vermemeli
rclone lsd "${S3_REMOTE}:${BUCKET}" && echo "S3 erisimi tamam"
Dağıtım deposundaki rclone sürümü eski kalabilir. S3 için genelde yeterlidir, ama sağlayıcınız yeni bir özellik istiyorsa rclone'un resmi belgelerindeki kurulum yöntemine bakın. Şifreleme ayrıntıları için de aynı belgelerdeki crypt bölümü esas kaynaktır.
En önemli uyarı: CRYPT_PAROLA kaybolursa yedekler açılamaz. Parolayı sunucu dışında, bir parola yöneticisinde saklayın. Betiği çalıştırdıktan sonra dosyayı silmeyin, ama içindeki anahtar ve parolayı boşaltın.
Hedefi HestiaCP'ye bağlama
HestiaCP'nin resmi belgelerindeki Backup & Restore bölümü, rclone hedefini v-add-backup-host komutuyla eklemeyi anlatır. Komutun parametre sırası sürüme göre değişebileceği için kurmadan önce belgedeki güncel örneği kontrol edin. Genel biçim şöyledir:
# rclone hedefini ekler: tur, remote adi, kullanici ve parola bos, yol
sudo /usr/local/hestia/bin/v-add-backup-host 'rclone' 'ORNEK_SIFRELI' '' '' 'yedekler'
# Tanimli hedefi gosterir
sudo /usr/local/hestia/bin/v-list-backup-host rclone
# Yedek sisteminin hangi hedefleri kullandigini gosterir
grep BACKUP_SYSTEM /usr/local/hestia/conf/hestia.conf
Beklenen çıktıda BACKUP_SYSTEM değeri local,rclone biçiminde olmalı. Yalnız local görüyorsanız hedef eklenmemiştir. Geri almak için v-delete-backup-host rclone kullanılır; bu, depodaki mevcut yedekleri silmez.
Doğrulama
# Elle bir yedek al ve uzak depoya gidip gitmedigini kontrol et
sudo /usr/local/hestia/bin/v-backup-user ORNEK_KULLANICI
sudo rclone ls ORNEK_SIFRELI:yedekler | tail -n 5
# Ayni dosyanin S3 tarafinda sifreli adla durdugunu gor
sudo rclone ls ORNEK_S3:ornek-yedek-bucket/hestia-sunucu01 | tail -n 5
İlk komut arşiv adlarını okunur biçimde (ORNEK_KULLANICI.2026-11-08_...tar), ikincisi anlamsız karakter dizileri olarak göstermelidir. İkisi de dosyayı listeliyorsa yedek hem gidiyor hem şifreleniyor demektir.
CloudPanel'de uzak yedek ayarı ve S3 uyumlu depo
CloudPanel uzak yedeği arka planda rclone ile yapar ve ayarı panelden yönetilir. Admin alanında Backups bölümüne girin:
- Storage Provider listesinden sağlayıcıyı seçin. Listede Amazon S3 ve bazı S3 uyumlu servisler hazır gelir. Sağlayıcınız listede yoksa özel rclone yapılandırması seçeneğini kullanıp yukarıdaki betikteki gibi
provider Otherve kendiendpointadresinizi tanımlayın. - Erişim anahtarı, gizli anahtar, bucket ve klasör bilgisini girin.
- Frequency ile yedeğin ne sıklıkla alınacağını, Retention Period ile uzak depoda kaç gün tutulacağını belirleyin.
- Kaydedip ilk yedeği elle başlatın ve tamamlanana kadar bekleyin.
Alan adları CloudPanel sürümüne göre küçük farklılık gösterebilir; güncel ekranlar için CloudPanel v2 resmi belgelerindeki yedekleme bölümüne bakın.
CloudPanel veritabanlarını ayrıca döküm olarak alır ve bu dökümler site kullanıcısının ev dizinine yazılır. Uzak yedek bu dizini de kapsadığı için veritabanı dökümü de depoya gider. Elle döküm almak ve kontrol etmek için clpctl aracı kullanılır:
# Tum veritabanlarinin dokumunu alir, 7 gunden eskileri yerelde temizler
sudo clpctl db:backup --databases=all --retentionPeriod=7
# Tek veritabaninin dokumunu belirli bir dosyaya alir
sudo clpctl db:export --databaseName=ornek_db --file=/root/ornek_db.sql.gz
CloudPanel'de şifreleme
CloudPanel'in hazır sağlayıcı seçenekleri dosyayı depoda düz arşiv olarak tutar. Şifreli saklamak istiyorsanız özel rclone yapılandırmasında S3 remote'unun üstüne bir crypt remote'u tanımlayıp CloudPanel'i ona yönlendirmeniz gerekir. Bu mümkün olmuyorsa en azından bucket tarafında sunucu tarafı şifrelemeyi açın ve erişim anahtarını yalnız o bucket ile sınırlayın.
Saklama süresi ve şifreleme kararları
Saklama süresini ayarlarken üç soruyu sorun:
- Bir hatayı ne kadar geç fark edebilirsiniz? Bir eklentinin siteye zararlı kod eklediğini iki hafta sonra fark ederseniz 7 günlük yedek işe yaramaz. Çoğu web sitesi için en az 14 gün, e-ticaret ve kurumsal siteler için 30 gün mantıklı bir başlangıçtır.
- Depo maliyeti ne kadar artar? HestiaCP her gün tam arşiv alır; 10 GB'lık bir kullanıcı 30 gün saklanırsa depoda yaklaşık 300 GB yer kaplar. CloudPanel'de de durum benzerdir. Artımlı ve tekilleştirmeli bir yapı gerekiyorsa panel yedeğinin yanına restic eklemeyi düşünün; ayrıntısı restic ile S3 yedekleme rehberinde var.
- Sunucu ele geçirilirse yedek silinebilir mi? Sunucudaki anahtarın silme yetkisi varsa saldırgan uzak yedeği de silebilir. Bucket'ta sürümlemeyi (versioning) açmak ya da yaşam döngüsü kuralıyla eski sürümleri belirli gün tutmak bu riski azaltır. Panelin kendi saklama temizliği ile depodaki kurallar çakışmasın diye kuralları birlikte planlayın.
Şifrelemenin artısı açıktır: depo sağlayıcısında ya da anahtar sızıntısında veri okunamaz. Eksisi de var: parola kaybolursa yedek de kaybolur, ve şifreli yedeği açmak için geri yükleme sırasında rclone yapılandırmasına ihtiyaç duyarsınız. Bu yüzden rclone.conf dosyasının bir kopyasını parola yöneticisinde ya da şifreli bir notta sunucu dışında tutun.
Tek site ve tek veritabanı geri yükleme
Geri yükleme mevcut veriyi ezer. Her işlemden önce sitenin şimdiki halinin yedeğini alın; geri yükleme beklediğiniz gibi gitmezse dönebileceğiniz bir nokta olsun.
HestiaCP'de tek site
v-restore-user komutu arşivin tamamını değil, seçtiğiniz parçaları geri yükleyebilir. Parametre sırası: kullanıcı, arşiv, web, DNS, e-posta, veritabanı, cron, kullanıcı dizini. Geri yüklemek istemediğiniz parçalara no yazılır.
# 1) Once mevcut durumun yedegini al
sudo /usr/local/hestia/bin/v-backup-user ORNEK_KULLANICI
# 2) Uygun arsivi sec
sudo /usr/local/hestia/bin/v-list-user-backups ORNEK_KULLANICI
# 3) Yalniz example.com web dosyalarini geri yukle
sudo /usr/local/hestia/bin/v-restore-user ORNEK_KULLANICI \
ORNEK_KULLANICI.2026-11-01_05-10-01.tar 'example.com' 'no' 'no' 'no' 'no' 'no'
# 4) Yalniz tek veritabanini geri yukle (web dosyalarina dokunmaz)
sudo /usr/local/hestia/bin/v-restore-user ORNEK_KULLANICI \
ORNEK_KULLANICI.2026-11-01_05-10-01.tar 'no' 'no' 'no' 'ORNEK_KULLANICI_db' 'no' 'no'
Arşiv yerelde artık yoksa (saklama sayısı dolup silindiyse) önce uzak depodan /backup dizinine kopyalayın, sonra komutu çalıştırın:
sudo rclone copy ORNEK_SIFRELI:yedekler/ORNEK_KULLANICI.2026-11-01_05-10-01.tar /backup/ --progress
CloudPanel'de tek site
CloudPanel'de geri yükleme panelde tek tuşla değil, rclone ve clpctl ile yapılır. Önce depodaki klasör yapısını görün, sonra dosyaları geçici bir dizine indirip inceleyin. Doğrudan site dizinine rclone sync yazmayın; sync hedefte fazla olan dosyaları siler. Aşağıda copy kullanılıyor ve önce --dry-run ile ne yapılacağı gösteriliyor.
# Depodaki klasorleri listele (yapi surume gore degisir)
sudo rclone lsd ORNEK_REMOTE:ornek-yedek-bucket --max-depth 3
# Once deneme: hangi dosyalar inecek?
sudo rclone copy ORNEK_REMOTE:ornek-yedek-bucket/ORNEK_YOL/htdocs/example.com \
/root/geri-yukleme/example.com --dry-run
# Gercek indirme gecici dizine
sudo rclone copy ORNEK_REMOTE:ornek-yedek-bucket/ORNEK_YOL/htdocs/example.com \
/root/geri-yukleme/example.com --progress
İçeriği kontrol ettikten sonra mevcut site dizinini yedekleyip dosyaları yerine koyun ve sahipliği site kullanıcısına verin:
# Mevcut dizini tarih ekiyle kenara al (silmek yerine tasima)
sudo mv /home/ORNEK_SITE_KULLANICI/htdocs/example.com \
/home/ORNEK_SITE_KULLANICI/htdocs/example.com.eski-$(date +%F)
# Indirilen dosyalari yerine koy ve sahipligi duzelt
sudo cp -a /root/geri-yukleme/example.com /home/ORNEK_SITE_KULLANICI/htdocs/
sudo chown -R ORNEK_SITE_KULLANICI:ORNEK_SITE_KULLANICI \
/home/ORNEK_SITE_KULLANICI/htdocs/example.com
# Veritabani: once mevcut halini disa aktar, sonra yedegi ice al
sudo clpctl db:export --databaseName=ornek_db --file=/root/ornek_db_once.sql.gz
sudo clpctl db:import --databaseName=ornek_db --file=/root/geri-yukleme/ornek_db.sql.gz
Site düzgün çalıştıktan birkaç gün sonra .eski- uzantılı dizini elle ve yalnız o yolu hedefleyerek kaldırabilirsiniz.
Geri yükleme testi takvimi
Hiç geri yüklenmemiş yedek, çalıştığı varsayılan yedektir. Aşağıdaki takvim küçük bir ekip için uygulanabilir:
- Her gün (otomatik): Uzak depodaki en yeni dosyanın tarihini kontrol eden bir cron ya da izleme kontrolü.
rclone lslçıktısındaki son tarih 24 saatten eskiyse uyarı üretin. - Her ay: Rastgele bir siteyi test alt alan adına (ör.
test.example.com) geri yükleyin. Ana sayfa, yönetim paneli girişi ve son eklenen bir içerik açılıyor mu, kontrol edin. - Her üç ay: Boş bir sanal sunucuya aynı paneli kurup bir kullanıcının ya da sitenin tamamını yalnız uzak depodan geri yükleyin. Bu test, parola ve
rclone.confkopyasının gerçekten sunucu dışında olup olmadığını da ortaya çıkarır. Bunun için saatlik ya da kısa süreli bir bulut sunucu yeterlidir.
Her testte geri yüklemenin kaç dakika sürdüğünü not edin. Bu süre, gerçek bir arızada sitenin ne kadar kapalı kalacağının en iyi tahminidir.
Sık yapılan hatalar
- Uzak hedefi tanımlayıp ilk yedeği beklememek. Yanlış endpoint ya da yetkisiz anahtar ancak yedek çalıştığında hata verir. Ayarı yaptıktan hemen sonra elle yedek alıp depoyu listeleyin.
- Disk dolması. İki panel de arşivi önce yerelde üretir. Disk dolarsa yedek yarım kalır.
df -hile yedek zamanında yeterli boş alan olduğundan emin olun. - Şifre parolasını yalnız sunucuda tutmak. Sunucu giderse parola da gider, yedek açılamaz.
- Silme yetkisi geniş anahtar. Tüm hesaba yetkili bir anahtar, sunucu ele geçirildiğinde bütün bucket'ları riske atar.
rclone syncile geri yüklemek. Hedefte fazla olan dosyaları siler; geri yüklemedecopykullanın.- Yalnız dosyaları geri yüklemek. Dosyalarla veritabanı aynı ana ait olmazsa site tutarsız çalışır. Aynı tarihli arşivi kullanın.
Sık sorulan sorular
HestiaCP yedekleri uzak depoya gönderdikten sonra yerelde de tutar mı?
Evet. BACKUP_SYSTEM değeri local,rclone olduğunda arşiv hem /backup dizininde hem uzak depoda tutulur. Yerel kopya hızlı geri yükleme sağlar, uzak kopya ise sunucu kaybına karşı korur. Yerel kopya sayısı paketteki Backups değerine göre sınırlanır.
CloudPanel tek tıkla geri yükleme yapıyor mu?
CloudPanel'in uzak yedeği dosyaları depoya taşır, ama tek bir siteyi panelden tek tuşla geri yükleme sunmaz. Dosyalar rclone ile indirilir, veritabanı clpctl db:import ile içe alınır. Bu yüzden geri yükleme adımlarını önceden yazılı bir prosedür olarak hazırlamak önemlidir.
Yedek deposu hangi ülkede olmalı?
Sitelerde kişisel veri işleniyorsa yedek de o verinin bir kopyasıdır ve yurt dışına aktarım sayılabilir. Müşteri verisi tutan siteler için depo lokasyonunu ana sunucuyla birlikte değerlendirin ve bucket'ın bölgesini sağlayıcıdan yazılı olarak teyit edin.
Panel yedeği varken snapshot da gerekli mi?
Gerekli değil ama faydalı. Snapshot işletim sistemi ve panel dahil bütün makineyi hızlıca geri döndürür; panel yedeği ise tek site ya da tek veritabanı düzeyinde dönüş sağlar. İkisi farklı sorunları çözer.
Yedek alınırken site yavaşlar mı?
Sıkıştırma ve veritabanı dökümü CPU ve disk kullanır. Büyük sitelerde yedek sırasında yanıt süresi artabilir. Yedeği trafiğin en düşük olduğu saate alın ve ilk birkaç gece yük grafiğini izleyin.
Bu işi hazır yapmak isterseniz
Zamanlama, şifreli uzak hedef, saklama ve geri yükleme testini kendiniz kurup izlemek yerine hazır bir hizmetle ilerlemek isterseniz bulut yedekleme sayfasındaki seçenekleri inceleyebilir, sunucunuzdaki panel ve veri boyutuna göre ihtiyacınızı bize iletebilirsiniz.
Sonuç
HestiaCP ve CloudPanel'de sunucu yedekleme ayarı birkaç komut ve bir panel ekranından ibaret. Asıl iş, yedeğin sunucudan çıktığını, şifrelendiğini, yeterince uzun saklandığını ve geri yüklenebildiğini düzenli olarak doğrulamak. Bugün yapılacaklar: S3 hedefini tanımlayın, elle bir yedek alıp depoda görün, şifre parolasını sunucu dışına kaydedin ve ilk aylık geri yükleme testini takvime ekleyin.
- #sunucu yedekleme
- #hestiacp
- #cloudpanel
- #s3
- #rclone
- #geri yükleme
Yazar
Kurucu, sunucu.com.tr · Bulut altyapısı ve yapay zeka otomasyonları
sunucu.com.tr ve Sunucu UK'in kurucusu. Bulut altyapısı, sanallaştırma ve sunucu yönetimi üzerine çalışıyor; şirketlerin iş yazılımlarını, web sitelerini ve yapay zeka iş yüklerini güvenli sunuculara taşıyor. Blogdaki rehberler sahada karşılaşılan kurulum, güvenlik ve taşıma işlerinden derlenir; yazılar yapay zeka desteğiyle hazırlanır ve kaynaklarla doğrulanır.