لماذا تستضيف Syncthing ذاتياً على خادم VPS
Syncthing أداة لامركزية لمزامنة الملفات: كل جهاز يتخاطب مباشرة مع الأجهزة الأخرى، دون خادم مركزي أو نسخة لدى مزوّد. مشكلة النمط الندّي المحض أن أجهزتك ليست مشغّلة دائماً في الوقت نفسه — فحاسوبك المحمول مطفأ حين يريد حاسوبك المكتبي المزامنة. يحلّ خادم VPS هذه المشكلة تماماً: فهو يعمل كعقدة دائمة متاحة على مدار الساعة، حاضرة على الإنترنت بعنوان IP عام ثابت، تتجه إليها جميع أجهزتك. تنتقل الملفات مشفّرة (TLS) ويحتفظ خادم VPS بنسخة مزامَنة تؤدي أيضاً دور نسخة احتياطية خارجية. وخلافاً للاستضافة المشتركة، يتيح خادم VPS فتح منافذ النقل وإبقاء خدمة Syncthing قيد التشغيل الدائم.
فوائد ملموسة لتشغيل Syncthing على خادم VPS
- عقدة ترحيل دائمة: لم تعد أجهزتك بحاجة لأن تكون مشغّلة في وقت واحد كي تتزامن.
- تشفير من الطرف إلى الطرف (TLS) بين جميع العقد، دون منح الثقة لأي سحابة.
- نسخة احتياطية خارجية طبيعية: يحتفظ خادم VPS بنسخة محدّثة من مجلداتك المشتركة.
- إصدارات للملفات (staggered/simple) قابلة للضبط مجلداً مجلداً لاستعادة نسخة سابقة.
- لا كلفة تخزين بالغيغابايت: مساحة قرص خادم VPS وحدها هي ما يهم.
- الاكتشاف عبر عنوان IP ثابت: اتصال مباشر سريع دون الاعتماد على خوادم الاكتشاف العامة.
المتطلبات التقنية
Syncthing مقتصد بشكل لافت في المعالج والذاكرة، لكن القرص هو ما يحدّد حجم الخادم: تحتاج إلى مساحة بقدر حجم البيانات المراد مزامنتها. احسب 1 vCPU و1 غيغابايت من الذاكرة، إضافة إلى التخزين المناسب لمجلداتك (20 أو 50 غيغابايت أو أكثر حسب حاجتك). أما على صعيد الشبكة، فيجب أن يكون منفذان قابلين للوصول: 22000 (TCP/UDP، نقل البيانات) و21027 (UDP، الاكتشاف المحلي، اختياري على خادم VPS بعيد). تعمل واجهة الإدارة على المنفذ 8384 ويجب أن تبقى محمية حتماً. يكفي Docker وDocker Compose؛ ويفيد نطاق فرعي sync.yourdomain.com للوصول إلى الواجهة عبر HTTPS من خلال وسيط عكسي (reverse proxy).
انشر Syncthing خطوة بخطوة
تجهيز الحاوية
على خادم VPS، أنشئ
/opt/syncthingوملفdocker-compose.ymlمبنيّاً على صورةsyncthing/syncthing:latest. اربط وحدة تخزين للإعدادات وأخرى للبيانات، واضبط المتغيّرينPUID/PGIDلصلاحيات الملفات.فتح منافذ النقل
وجّه المنفذ 22000 بـ TCP وUDP إلى الحاوية وافتحه في جدار حماية خادم VPS:
ufw allow 22000. عبر هذا المنفذ تنتقل البيانات بين العقد. لا تنشر المنفذ 8384 على الإنترنت.تشغيل Syncthing واسترجاع المعرّف
ابدأ بـ
docker compose up -d. استرجع معرّف العقدة (Device ID) من السجلات أو عبر الواجهة: فهو البصمة الفريدة التي ستستخدمها لإقران أجهزتك الأخرى.تأمين واجهة الإدارة
اعرض المنفذ 8384 فقط خلف وسيط عكسي HTTPS مزوّد بمصادقة. مع Caddy:
sync.yourdomain.com { reverse_proxy syncthing:8384 }. وحدّد إضافةً إلى ذلك اسم مستخدم/كلمة مرور للواجهة في إعدادات GUI في Syncthing.إقران أجهزتك
على كل جهاز (مكتبي، محمول، هاتف)، أضِف خادم VPS كجهاز جديد عبر معرّفه Device ID، ثم اقبل الطلب المتبادل من جهة الخادم. حدّد مجلداً مشتركاً واختر الوضع (إرسال فقط، أو استقبال فقط، أو ثنائي الاتجاه).
تفعيل الإصدارات
بالنسبة للمجلدات المهمة، فعّل نمط الإصدارات «المتدرّج» (staggered) من جهة خادم VPS: يحتفظ Syncthing هناك بالنسخ المتعاقبة للملفات المعدّلة أو المحذوفة، محوّلاً عقدتك إلى شبكة أمان ضد أخطاء التعامل.
الإعداد المتقدم للمجلدات المشتركة
بمجرد أن يعمل النشر الأساسي، افتح واجهة GUI (عبر sync.yourdomain.com) لضبط كل مجلد بدقة. لكل مجلد مشترك، حدّد النوع: إرسال-استقبال (ثنائي الاتجاه)، إرسال فقط (لا يستطيع الخادم تعديل ملفاتك) أو استقبال فقط (يؤرشف الخادم دون الكتابة فوق). يجب أن يكون حقل Folder ID في الإعداد — المرئي في config.xml تحت /opt/syncthing/config/ — متطابقاً على جميع الأجهزة التي تشترك في نفس المجلد: فهو ما يربط العقد. للتشفير على مستوى التخزين، يدعم Syncthing منذ الإصدار 1.15 وضع Encrypted: لا يرى الخادم بياناتك بنص صريح قط، بل يخزّن فقط كتلاً مشفّرة. فعّله في تبويب Sharing لأي مجلد، خيار Encrypted لجهاز خادم VPS. تُدار قوائم التحكم بالوصول (ACL) جهازاً جهازاً: في كل مجلد، حدّد الأجهزة المخوّلة بالوصول إليه — جهاز غير مدرج لا يتلقى شيئاً حتى لو كان يعرف معرّفك Device ID.
ربط أجهزة متعددة: Android وLaptop وNAS
تبرز قوة خادم VPS كمحور مركزي حين تربط نظاماً بيئياً كاملاً. على Android، ثبّت Syncthing عبر F-Droid (التطبيق الرسمي، مجاني، بلا بيانات تتبع Google) — نسخة Play Store مهملة منذ 2024. افتح Syncthing على الهاتف، انسخ معرّفه Device ID، وأضفه من جهة الخادم عبر «إضافة جهاز». في المقابل، أضف الخادم على الهاتف بمعرّفه Device ID وعنوانه الصريح tcp://IP_VPS:22000 في حقل «العناوين». على Laptop، الإجراء مطابق: ثبّت syncthing عبر مدير الحزم (apt install syncthing أو الثنائي الرسمي)، شغّله بـ systemctl --user enable --now syncthing، وأقرنه بالخادم بالطريقة ذاتها. لجهاز NAS من نوع Synology أو TrueNAS، يتوفر Syncthing كحزمة رسمية أو حاوية Docker — اضبط نفس Device ID ونفس المجلدات المشتركة. عطّل خوادم الترحيل العامة في التفضيلات المتقدمة (relays disabled) وأعلن tcp://IP_VPS:22000 كعنوان ثابت على كل عقدة لاتصالات مباشرة وسريعة.
تأمين واجهة الويب بـ nginx
كشف المنفذ 8384 مباشرة على الإنترنت خطأ جسيم: يمكن لأي شخص محاولة الاتصال. الممارسة الصحيحة هي ربط Syncthing بـ 127.0.0.1:8384 في الإعداد (إعدادات GUI > عنوان الاستماع: 127.0.0.1:8384) ثم استخدام nginx أو Caddy كواجهة HTTPS أمامية. مع nginx، أنشئ vhost في /etc/nginx/sites-available/sync: عرّف كتلة server على المنفذ 443 بشهادة Let's Encrypt، وـ location / مع proxy_pass http://127.0.0.1:8384 والترويسات X-Real-IP وX-Forwarded-For. أضف مصادقة HTTP أساسية (auth_basic, htpasswd) كطبقة إضافية. في config.xml، تأكد من <insecureAdminAccess>false</insecureAdminAccess>. وأخيراً، انسخ /opt/syncthing/config/ احتياطياً بانتظام — يحوي هذا المجلد مفاتيح TLS للعقدة وإعدادات المجلدات ومعرّفات الأجهزة المقترنة: خسارته تعني إعادة ضبط جميع الأجهزة من الصفر.
مراقبة الصحة بـ REST API
يكشف Syncthing واجهة برمجية REST كاملة على http://127.0.0.1:8384/rest/. يوجد رمز API في الواجهة تحت الإعدادات > GUI > مفتاح API. استعلامات مفيدة من الخادم: curl -H 'X-API-Key: مفتاحك' http://127.0.0.1:8384/rest/db/status?folder=معرف_المجلد تُعيد حالة مزامنة مجلد (مفاتيح: globalFiles, localFiles, needFiles, state). الحالة idle تؤكد اكتمال المزامنة؛ syncing تعني مزامنة جارية؛ error تشير إلى مشكلة تستوجب فحص السجلات. لمراقبة بسيطة في الإنتاج، أضف فحصاً يستعلم /rest/noauth/health — هذا المسار لا يتطلب مفتاح API ويُعيد {"status":"OK"} إذا كان Syncthing يعمل.
حل الأخطاء الشائعة
المنفذ 22000 غير متاح. تظهر الأجهزة البعيدة بحالة «غير متصل» رغم تشغيل Syncthing. تحقق من تطبيق ufw allow 22000/tcp وufw allow 22000/udp (ufw status). وتحقق أيضاً أن الـ compose يُعيّن 22000:22000/tcp و22000:22000/udp — إغفال تعيين UDP يحجب الاكتشاف. أكّد بـ nc -zv IP_VPS 22000 من جهاز بعيد. الجهاز غير موجود. إن فشل الاكتشاف التلقائي، أعلن عنوان الخادم يدوياً في إعدادات كل عميل: تبويب الأجهزة > العناوين > tcp://IP_VPS:22000. تعارض الإصدارات. جهازان عدّلا الملف نفسه دون اتصال. ينشئ Syncthing ملفاً باسم .sync-conflict-YYYYMMDD-HHMMSS-DEVICEID بجانب الأصل — هذا مقصود، لا ضياع للبيانات. راجع النسختين واحذف يدوياً التي لا تحتاجها. مساحة القرص غير كافية. يتوقف Syncthing عن المزامنة ويدخل حالة error إن انخفض المتاح دون العتبة المحددة (الافتراضي: 1% من القرص). حرّر مساحة أو وسّع قرص الخادم؛ وتحقق كذلك من أن الإصدارات المتدرّجة لا تحتفظ بسنوات من المراجعات — قيّد مدة الاحتفاظ في إعدادات المجلد.
اضبط عقدة خادم VPS على وضع «الاستقبال فقط» (Receive Only) للمجلدات التي تريد نسخها احتياطياً فقط: بهذا لن يكتب الخادم فوق أجهزتك أبداً، بل يكتفي بأرشفة ما يُرسَل إليه. وبما أنك تملك عنوان IP ثابتاً، عطّل خوادم الاكتشاف العامة وصرّح بعنوان خادم VPS صراحةً (tcp://IP:22000) في إعدادات العقد الأخرى: تُنشأ الاتصالات أسرع ولا تعتمد على أي خدمة خارجية.
Syncthing أم Nextcloud Files أم rclone: متى تختار أيّاً منها
مرّر الجدول أفقيًا
| الأداة | متى تستخدمها |
|---|---|
| Syncthing | مزامنة ندّية بحتة. مثالي إن أردت فقط مزامنة مجلدات بين الأجهزة دون واجهة ويب أو مشاركة روابط. استهلاك أدنى، إعداد بسيط، بلا لغة خادم. |
| Nextcloud Files | حزمة متكاملة (مشاركة روابط، تقويم، جهات اتصال، Office عبر الإنترنت). اختر Nextcloud إن احتجت للتعاون أو مشاركة الملفات مع آخرين. أثقل: PHP وقاعدة بيانات وRedis. |
| rclone | أداة نسخ/مزامنة لأكثر من 70 واجهة خلفية (S3 وB2 وSFTP…). اختر rclone للنسخ الاحتياطي المجدوَل إلى التخزين الكائني أو لنقل البيانات بين السحب، لا للمزامنة الفورية متعددة الأجهزة. |