# النسخ الاحتياطية

> كيف تنسخ خادم Octa Pass المستضاف ذاتيًا احتياطيًا وتستعيده بأمان، ولماذا يمكن حفظ النسخ المشفّرة في أي مكان، وكيف يحتفظ المستخدمون بتصديراتهم لخزنتهم.

Source: https://octap.app/ar/docs/self-hosting/backups/
Status: in-progress
Project: Octa Pass

:::note[قيد التطوير]
النسخ الاحتياطية المجدولة وأوامر النسخ الاحتياطي تعمل اليوم مع SQLite. ومع PostgreSQL استخدم أدواته الخاصة.
:::

## النسخ الاحتياطية للخادم

اضبط `OCTAPASS_BACKUP_DIR` فينسخ الخادم نفسه احتياطيًا أثناء عمله:

| المتغير | الافتراضي | الوصف |
|---|---|---|
| `OCTAPASS_BACKUP_DIR` | غير مضبوط | يفعّل النسخ الاحتياطية المجدولة في هذا المجلد. SQLite فقط. |
| `OCTAPASS_BACKUP_EVERY_HOURS` | `24` | تُنشأ نسخة جديدة عندما تكون أحدث نسخة أقدم من هذه المدة. يُفحص ذلك كل 10 دقائق، فلا تؤدي إعادة التشغيل إلى تفويت نسخة أو تكرارها. |
| `OCTAPASS_BACKUP_KEEP` | `14` | عدد النسخ الاحتياطية المحتفظ بها؛ تُحذف الأقدم. |

كل نسخة احتياطية مجلد باسم `octapass-YYYYMMDD-HHMMSS` (بتوقيت UTC) يحوي قاعدة البيانات (منسوخة بالأمر `VACUUM INTO` في SQLite، فتكون متسقة والخادم يعمل) والسرّين الخاصين بالخادم ومجلد `attachments`. ملفات المرفقات لا تتغير أبدًا، فالملفات الموجودة أصلًا في النسخة السابقة تُربط بروابط صلبة بدل نسخها. وتُكتب النسخة باسم مؤقت وتُعاد تسميتها عند اكتمالها.

يدويًا، وللاستعادة (أوقف الخادم أولًا):

```bash
octapass-server admin backup /backups
octapass-server admin restore /backups/octapass-20261024-030000
```

ينقل `admin restore` قاعدة البيانات والسرّين والمرفقات الحالية إلى `<data dir>/before-restore-<time>/` بدل حذفها، ثم ينسخ النسخة الاحتياطية إلى موضعها. في Docker: `docker compose stop octapass`، ثم `docker compose run --rm --no-deps octapass admin restore /backups/…`، ثم `docker compose up -d`.

كل ما في النسخة الاحتياطية إما نص مشفَّر أو بيانات وصفية مذكورة في [ما يراه الخادم](https://octap.app/ar/docs/security/what-the-server-sees/). وهذا يعني أنه يمكن حفظ النسخ الاحتياطية لدى أي مزوّد دون كشف محتويات الخزنات. ومع ذلك احمِها: فهي تحوي عناوين البريد الإلكتروني للمستخدمين وأسرار الخادم وبيانات مشفّرة يستطيع المهاجم الاحتفاظ بها لمدة طويلة. **بدون `opaque-server-setup.bin` لا يستطيع أحد تسجيل الدخول مرة أخرى**، فلا تنسخ قاعدة البيانات وحدها أبدًا.

## روتين موصى به

1. أبقِ النسخ الاحتياطية المجدولة مفعّلة (يوميًا هو الافتراضي).
2. انسخها خارج الخادم، باتباع قاعدة 3-2-1: ثلاث نسخ، على نوعين من الوسائط، ونسخة واحدة خارج الموقع.
3. جرّب الاستعادة على جهاز منفصل كل بضعة أشهر.
4. انسخ احتياطيًا قبل كل ترقية.

مع PostgreSQL استخدم أدواتك المعتادة (`pg_dump` وأرشفة WAL)، مع نسخة من مجلد البيانات: ملفا السر ومجلد `attachments`، أو حاوية S3 الخاصة بك. الملفات مشفّرة على أجهزة المستخدمين، فيمكن أن تُحفظ نسختها في أي مكان أيضًا. انسخ قاعدة البيانات والملفات معًا؛ فقاعدة البيانات المستعادة تسرد ملفات بأسماء عشوائية يجب أن تكون موجودة في التخزين.

## النسخ الاحتياطية على مستوى المستخدم

يستطيع كل مستخدم الاحتفاظ بـ[تصدير](https://octap.app/ar/docs/import-export/export/) مشفّر لخزنته. ولا يعتمد على الخادم إطلاقًا.
