النسخ الاحتياطي والترقيات
وحدة التحكم هي قاعدتا بيانات Postgres ومجلد إعدادات واحد. انسخ هذه العناصر احتياطيًا، وستتمكن من إعادة بناء الخادم في أي مكان.
ما الذي يهم
| العنصر | الموقع | المحتوى |
|---|---|---|
| الإعدادات والأسرار | /opt/tzxmesh/app | .env، وowner.hash، وملف compose، وإعدادات Caddy ووحدة التحكم |
| قاعدة بيانات وحدة التحكم | Postgres tzxmesh | الأجهزة، والمفاتيح، والمجموعات، والسياسات، والمسارات، وسجل النشاط |
| قاعدة بيانات الهوية | Postgres tzxmesh_idp | المستخدمون المحليون، وقيم تجزئة كلمات المرور، ومفاتيح التوقيع، والجلسات |
| وحدة تخزين البيانات | server_data | قواعد بيانات تحديد الموقع الجغرافي؛ ويُعاد توليدها إذا فُقدت |
مفتاح التشفير الموجود في
.env يحمي الأسرار داخل قاعدة البيانات. النسخة الاحتياطية لقاعدة البيانات دون ملف .env المرافق لها لا يمكن فك تشفيرها.النسخ الاحتياطي
cd /opt/tzxmesh/app
docker exec tzxmesh-postgres pg_dump -U tzxmesh -d tzxmesh -Fc > tzxmesh.dump
docker exec tzxmesh-postgres pg_dump -U tzxmesh -d tzxmesh_idp -Fc > tzxmesh_idp.dump
tar czf tzxmesh-config.tgz .env owner.hash docker-compose.yml Caddyfile config.yaml
شفّر الملفات الثلاثة قبل أن تغادر الخادم، وانسخها إلى مكان لا يستطيع الخادم الوصول إليه. شغّل ذلك ليليًا عبر cron.
الاستعادة
- شغّل المثبّت على الخادم الجديد بالنطاق نفسه، ثم أوقف الحزمة:
docker compose down. - فُكّ أرشيف الإعدادات فوق
/opt/tzxmesh/app. - شغّل Postgres وحده، واستعِد كلتا النسختين بأمر
pg_restore --no-ownerإلى قاعدتي البيانات الخاصتين بهما، ثم نفّذdocker compose up -d. - وجّه DNS إلى الخادم الجديد. تعيد الأجهزة الاتصال من تلقاء نفسها؛ ولا حاجة إلى إعادة تسجيل أي جهاز.
جرّب الاستعادة مرة واحدة على جهاز اختباري. الاستعادة التي لم تنفّذها قط ليست نسخة احتياطية.
الترقية
cd /opt/tzxmesh/app
docker compose pull
docker compose up -d
تُنفَّذ عمليات ترحيل قاعدة البيانات تلقائيًا عند التشغيل. لتثبيت إصدار معيّن، عدّل وسوم الصور في .env قبل السحب. والرجوع إلى إصدار سابق يتم بالطريقة نفسها مع الوسم السابق.