النسخ الاحتياطي والاستعادة لـ VeloCMS المستضاف ذاتيًا
كيفية إعداد نسخ احتياطية تلقائية لـ PocketBase وتخزينها في موقع خارجي، واستعادة البيانات عند الحاجة.
يخزّن VeloCMS المستضاف ذاتيًا جميع البيانات في قاعدة بيانات SQLite الخاصة بـ PocketBase، فضلًا عن ملفات الوسائط في مجلد تخزين مخصص — أو في Cloudflare R2 إن كان مُهيَّأً. يجب أن تشمل استراتيجية النسخ الاحتياطي كلا المصدرين. يفترض هذا الدليل أنك تشغّل VeloCMS عبر Docker Compose على خادم VPS.
ما الذي تحتاج إلى نسخه احتياطيًا
- مجلد بيانات PocketBase — في الغالب ./pb_data/ — يحتوي على قاعدة بيانات SQLite وملفات الوسائط المرفوعة محليًا.
- ملف البيئة (.env) — يتضمن مفاتيح API والأسرار. احفظه بشكل منفصل في مدير أسرار، لا في النسخة الاحتياطية ذاتها.
- مجلد الثيمات المخصصة — إن أنشأت ملفات ثيم JSON مخصصة خارج القوالب الافتراضية.
النسخ الاحتياطي اليومي التلقائي بمهمة cron
تمتلك PocketBase واجهة برمجية (API) مدمجة للنسخ الاحتياطي. يمكنك استدعاؤها بمهمة cron لإنشاء نسخة احتياطية مُختومة بالوقت تلقائيًا كل ليلة. أضف السطر التالي إلى جدول crontab في خادمك (عبر crontab -e):
# 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 بعنوان URL الخاص بـ PocketBase إن كانت تعمل على منفذ مختلف. تُنشأ النسخة الاحتياطية في pb_data/backups/ بصيغة ملف .zip يحتوي على قاعدة البيانات الكاملة والوسائط. اضبط PB_SUPERUSER_TOKEN على رمز مستخدم متميز طويل الأمد من لوحة تحكم PocketBase.
نقل النسخ الاحتياطية إلى موقع خارجي
النسخ الاحتياطية المخزّنة على الخادم نفسه لن تفيدك إن تعطّل الخادم بالكامل. بعد كل نسخة، انسخ ملف .zip إلى موقع خارجي؛ تعمل بشكل جيد كل من: Cloudflare R2 وAWS S3 وBackblaze B2. استخدم أداة rclone — وهي أداة سطر أوامر متعددة المنصات تدعم مزودي التخزين الثلاثة — لمزامنة مجلد النسخ الاحتياطية بعد كل تشغيل لـ cron. سيمنحك الاحتفاظ بـ 7 أيام من النسخ اليومية إمكانية الاستعادة إلى أي نقطة خلال الأسبوع الأخير.
الاستعادة من نسخة احتياطية
لاستعادة البيانات: (1) أوقف حاويات VeloCMS (docker compose down)، (2) نزّل ملف .zip من موقع التخزين الخارجي، (3) فكّ ضغطه داخل مجلد pb_data/ مع استبدال الملفات الموجودة، (4) أعد تشغيل الحاويات (docker compose up -d). ستقرأ PocketBase قاعدة البيانات المُستعادة عند الإقلاع. تحقق من نجاح الاستعادة بتسجيل الدخول إلى /admin والتأكد من وجود محتواك.
استعادة نسخة احتياطية تستبدل قاعدة بياناتك الحالية بصورة نهائية لا رجعة منها. إن لم تكن واثقًا، أعد تسمية مجلد pb_data/ الحالي إلى pb_data_old/ قبل الاستعادة — هذا يمنحك خيارًا للتراجع في حال فشلت العملية.
اختبار عملية النسخ الاحتياطي
النسخة الاحتياطية التي لم تختبرها قط ليست نسخة احتياطية — إنها مجرد أمل. كل 90 يومًا، استعد نسخة احتياطية في بيئة محلية وتحقق من أن الموقع يعمل، وأن المنشورات موجودة، وأن الوسائط تُخدَّم بشكل صحيح. إن فشلت الاستعادة، فالخلل في إجراءات النسخ الاحتياطي لديك، لا في لحظة الأزمة.