📍 المقالة الرئيسية: Vaultwarden 2026.
فريق لا يختبر أبداً استعادة نسخه الاحتياطية لا يملك نسخاً احتياطية: يملك أوهاماً. هذا الدرس يفصِّل الإجراء الكامل لحفظ Vaultwarden بشكل مؤتمت ومشفر إلى MinIO ذاتي الاستضافة أو Backblaze B2 (متوافق S3) بسعر 6 دولارات لكل تيرابايت.
المتطلبات
- Vaultwarden إنتاج بـ SQLite أو PostgreSQL.
- وصول SSH root.
- دلو MinIO أو Backblaze B2.
- المستوى: متوسط.
- الوقت: ساعة للإعداد، 30 دقيقة للاختبار الشهري.
الخطوة 1 — اختر بين MinIO و Backblaze B2
MinIO ذاتي الاستضافة: تحكم كامل، لا اعتماد خارجي.
Backblaze B2 في وضع متوافق S3: 6 USD/تيرابايت/شهر مع egress مجاني عبر Cloudflare Bandwidth Alliance.
التوصية: الاثنان معاً. MinIO عند OVH للنسخة الأولية، Backblaze B2 للنسخة الثانوية offsite.
الخطوة 2 — تحضير الدلو والاعتمادات
على Backblaze B2: أنشئ دلواً خاصاً vaultwarden-backup-prod. فعِّل versioning. ولِّد مفتاح تطبيق بوصول قراءة/كتابة لهذا الدلو فقط.
الخطوة 3 — تثبيت rclone و restic
curl https://rclone.org/install.sh | sudo bash
apt install -y restic
الخطوة 4 — تكوين restic
export RESTIC_REPOSITORY="s3:s3.eu-central-003.backblazeb2.com/vaultwarden-backup-prod"
export AWS_ACCESS_KEY_ID="votre-keyID"
export AWS_SECRET_ACCESS_KEY="votre-applicationKey"
export RESTIC_PASSWORD="passphrase-très-très-forte"
restic init
عبارة المرور هذه هي مفتاح حماية نسخك. إذا فقدتها، نسخك غير قابلة للاستعادة. خزنها في 3 أماكن مستقلة.
الخطوة 5 — كتابة سكربت النسخ
#!/bin/bash
set -euo pipefail
VW_DATA="/var/lib/coolify/services/vaultwarden-prod/data"
TMP_DIR="/tmp/vw-backup-$$"
# Snapshot SQLite ساخن (قفل قصير)
docker exec vaultwarden-prod sqlite3 /data/db.sqlite3 \
".backup '/data/db-snapshot.sqlite3'"
cp "$VW_DATA/db-snapshot.sqlite3" db.sqlite3
# نسخ المرفقات والأيقونات
cp -r "$VW_DATA/attachments" attachments 2>/dev/null || true
# Restic
restic backup . --tag "vw-prod-$(date +%Y-%m-%d-%H%M)"
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
curl -s "https://ntfy.sh/votre-topic" -d "Vaultwarden backup OK $(date -Iseconds)"
الخطوة 6 — جدولة بـ cron
0 */6 * * * /srv/scripts/vw-backup.sh
الخطوة 7 — اختبار استعادة شهري
اختبار الاستعادة ليس اختيارياً. إجراء شهري على VPS staging:
restic snapshots
restic restore latest --target /tmp/restore
sqlite3 /tmp/restore/db.sqlite3 "PRAGMA integrity_check;"
sqlite3 /tmp/restore/db.sqlite3 "SELECT COUNT(*) FROM ciphers;"
الأخطاء الشائعة
| الخطأ | السبب | الحل |
|---|---|---|
| نسخة تالفة بعد cp مباشرة | SQLite قيد الكتابة | دائماً sqlite3 .backup |
| الدلو ممتلئ | forget غير مُشغَّل | تحقق restic forget –prune |
| كلمة سر restic مفقودة | تخزين فريد | 3 أماكن مستقلة |
التكيف مع السياق
ثلاث نقاط. اختيار datacenter: Backblaze B2 EU Central (Amsterdam) يقدم زمن استجابة دون 90 ميلي ثانية إلى داكار وأبيدجان والدار البيضاء. التكلفة بالعملة المحلية: 1 جيجابايت = 0.006 دولار = أقل من 4 فرنك CFA شهرياً. عرض النطاق: Backblaze يقدم egress مجاناً عبر Cloudflare.
دروس مرتبطة
للاستزادة
- 🔝 المرجع: Vaultwarden 2026