Syncthing أم Nextcloud لمزامنة الملفات على VPS؟
يقارن هذا الدليل بين Syncthing الندّي بلا نسخة خادم وNextcloud بحسابات وروابط مشاركة، ويوضح متى يناسب كل خيار VPS ولماذا لا يُعد أيٌّ منهما نسخة احتياطية.
Syncthing مقابل Nextcloud: الفرق الذي يحسم الاختيار
يعود الفرق بين Syncthing وNextcloud إلى اختلاف بنيوي واحد، وتتفرع منه جميع الاختلافات الأخرى. يعمل Syncthing بنظام الند للند. يحتفظ كل جهاز بالمجلد كاملاً، ولا توجد نسخة واحدة تُعدّ المرجع المعتمد. أما Nextcloud فهو خادم. يحتفظ جهاز واحد بالملفات، وتوجد حسابات المستخدمين أمامها، بينما ينزّل العملاء نسخاً منها.
لذلك لا يوفّر Syncthing رابط مشاركة ولا عرضاً لمستنداتك عبر الويب. لا توجد نسخة مركزية يمكن تقديمها، ولذلك لا يوجد ما يمكن للمتصفح طلبه. يوفّر Nextcloud الأمرين، لكنه يحتاج لذلك إلى بيئة تشغيل PHP، وخادم قاعدة بيانات، وخادم ويب، وreverse proxy لتأمين TLS (أمان طبقة النقل).
اختر Syncthing عندما تكون جميع الأجهزة المعنية مملوكة لك. واختر Nextcloud عندما يحتاج متصفح أو شخص آخر إلى الوصول إلى الملفات.
ما الذي ينفّذه VPS فعلياً في كل تصميم
يكون VPS الذي يشغّل Nextcloud موضع تخزين بياناتك. إذا حذفت النسخة المحلية من حاسوبك المحمول، فسيبقى الملف على الخادم، لأن الخادم كان دائماً النسخة الأصلية.
يؤدي VPS الذي يشغّل Syncthing وظيفة مختلفة: فهو نظير يعمل دائماً. ينقل Syncthing البيانات مباشرة بين جهازين متصلين بالإنترنت في الوقت نفسه. لذلك، إذا لم يُشغَّل حاسوبا محمول أبداً في الوقت نفسه، فلن يتمكنا من المزامنة مهما انتظرت. أضف نظيراً ثالثاً على VPS لا يدخل في وضع السكون، فتختفي المشكلة. يدفع الحاسوب المحمول A البيانات عند 09:00، ويسحب الحاسوب المحمول B البيانات عند 22:00، بينما يحتفظ VPS بالمجلد بين الوقتين.
هذا دور مفيد فعلاً، لكنه ادعاء أصغر من «بديل Dropbox». لن يمنحك Syncthing رابطاً ترسله إلى عميل. إذا كان هذا هو متطلبك، فتوقف هنا واقرأ المقارنة بين بدائل Dropbox المستضافة ذاتياً بدلاً من ذلك.
ما تكلفة كل خيار على VPS صغير
Syncthing عبارة عن ملف ثنائي واحد مكتوب بلغة Go. يستمع على socket، ويحافظ على فهرس لملفاتك في قاعدة بيانات محلية، وهذه هي المنظومة كاملة. منذ الإصدار 2.0، أصبح هذا الفهرس يستخدم SQLite بدلاً من LevelDB، ولذلك ينفّذ الترقية من تثبيت بإصدار 1.x عملية ترحيل لمرة واحدة عند التشغيل الأول. وقد تستغرق عملية الترحيل وقتاً طويلاً عند وجود مجموعة كبيرة من المجلدات. اتركها حتى تكتمل. لا تحتاج إلى تثبيت أي شيء آخر، ولا إلى تحديث أي شيء آخر.
يحتاج Nextcloud إلى مكونات أكثر. اعتباراً من أغسطس 2026، يدعم Nextcloud 35 إصدارات PHP من 8.3 إلى 8.5 مع MariaDB أو PostgreSQL خلفه، ويُخدَّم عبر Apache 2.4 أو nginx مع php-fpm. يوصي دليل الإدارة بحد أدنى قدره "512MB من الذاكرة لكل عملية"، ويشغّل php-fpm عدة عمليات worker في الوقت نفسه.
على VPS بسعة 1 GB، يعمل Syncthing براحة، بينما تكون موارد Nextcloud محدودة. هذا لا يعني أن Nextcloud هو الخيار الخاطئ. بل يعني أنه التزام أكبر، إذ يجب إبقاء أربعة مكونات محدثة بدلاً من مكوّن واحد. ويُعد مسار الحاويات في دليل Nextcloud على VPS الذي يغطي Docker وTLS والنسخ الاحتياطية الطريقة الأقل إزعاجاً لتحمّل هذه المتطلبات. تؤدي إضافة تحرير المستندات عبر المتصفح إلى رفع الحد الأدنى للموارد مرة أخرى، وهذا ما يوضحه مقارنة OnlyOffice وCollabora لصندوق بسعة 2 إلى 4 GB.
تثبيت Syncthing على VPS
يأتي Ubuntu مع حزمة syncthing، لكنها متأخرة كثيراً عن الإصدار upstream. استخدم مستودع المشروع نفسه.
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing
syncthing --versionيجب أن يطبع syncthing --version سطراً يبدأ بـ syncthing v2. وظهور v1 هناك يعني أن apt ما زال يفضّل حزمة التوزيعة. ثبّت أولوية مستودع upstream فوقها، ثم أعد التثبيت.
printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.prefشغّله كخدمة نظام تحت حساب مستخدم عادي، لكي يبدأ عند الإقلاع من دون الحاجة إلى تسجيل دخول أي مستخدم.
sudo systemctl enable --now syncthing@youruser.service
systemctl status syncthing@youruser.serviceيجب أن يطبع systemctl status القيمة active (running). تُحفظ ملفات الإعداد والفهرس في /home/youruser/.local/state/syncthing، وملف الإعداد هو config.xml. أما التثبيتات التي أُنشئت قبل Syncthing 1.27 فتحتفظ بها في ~/.config/syncthing بدلاً من ذلك، لذا تحقّق من المسارين قبل نسخ أي شيء بين الأجهزة.
افتح المنافذ بعد ذلك. يستخدم Syncthing المنفذ 22000/TCP لبروتوكول المزامنة، والمنفذ 22000/UDP لنقل QUIC، والمنفذ 21027/UDP للاكتشاف المحلي. يعتمد الاكتشاف على البث والبث المتعدد، وهما لا يعبران الإنترنت، لذلك تحتاج على VPS إلى المنفذين الأولين فقط.
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusيجب أن يسرد ufw status القاعدتين. وإذا طبع Status: inactive، فهذا يعني أن ufw لا يرشّح أي حركة مرور، وأن جدار الشبكة الناري لدى مزود الخدمة هو الجدار الوحيد الفعّال. تحقّق من لوحة المزود أيضاً، لأنها تمثل عنصراً منفصلاً للتحكم لدى معظم المضيفين. وعندما يبقى جهاز بعيد عند Disconnected رغم أن الخدمة قيد التشغيل، فهذا يعني عادةً أن أحد هذين الجدارين ما زال مغلقاً.
الوصول إلى واجهة Syncthing الرسومية دون نشرها
تستمع واجهة الويب الرسومية على 127.0.0.1:8384 افتراضياً، لذلك لا تستجيب إلا من الخادم نفسه. هذا الإعداد الافتراضي وقائي، لأن الواجهة تحمل مفتاح API (واجهة برمجة التطبيقات) يمكنه إعادة كتابة كل مسارات المجلدات على الخادم.
لا تفتحها للعالم كخطوة أولى. توضح الوثائق مباشرة ما يتيحه الربط بعنوان شبكة: "تحديد عنوان LAN الخاص بجهازك لن يقيّد الوصول على الأجهزة الموجودة في شبكتك المحلية فقط!" بدلاً من ذلك، مرّر المنفذ عبر SSH من حاسوبك المحمول.
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.exampleافتح http://127.0.0.1:8384 في المتصفح المحلي أثناء بقاء جلسة SSH مفتوحة. تُغلق القناة مع جلسة SSH، لذلك لا يبقى أي شيء يستمع بعد ذلك.
إذا احتجت إلى إتاحة الواجهة مباشرة، فاضبط بيانات الاعتماد أولاً. لا يوجد متصفح على الخادم، لذا نفّذ ذلك من سطر الأوامر.
sudo systemctl stop syncthing@youruser.service
sudo -H -u youruser syncthing generate --gui-user=admin --gui-password=-
sudo systemctl start syncthing@youruser.serviceيهمّ -H لأن sudo سيحتفظ، بدونه، بالمجلد الرئيسي لـroot، وستحرّر config.xml الخاطئ. تجعل قيمة كلمة المرور المكوّنة من شرطة واحدة syncthing generate يقرأ كلمة المرور من الإدخال القياسي، وبذلك لا تظهر في سجل الصدفة، كما تُحوَّل القيمة إلى تجزئة قبل كتابتها في الملف. فعّل HTTPS من إعدادات الواجهة بعد تسجيل الدخول.
لماذا ينشر Syncthing أخطاءك
تجيب الأسئلة الشائعة في Syncthing عن مسألة النسخ الاحتياطي بنفسها: «ليس Syncthing تطبيقاً جيداً للنسخ الاحتياطي، لأن جميع التغييرات التي تطرأ على ملفاتك (التعديلات والحذف وغير ذلك) ستنتشر إلى جميع أجهزتك».
إذا حذفت مجلداً عن طريق الخطأ من حاسوبك المحمول، فسيعمل Syncthing تماماً وفق تصميمه. سيحذف ذلك المجلد من كل مكان خلال ثوانٍ. تعني المزامنة تحقيق التطابق، ويشمل هذا التطابق الاتفاق على أن الملف لم يعد موجوداً.
إصدارات الملفات هي وسيلة المعالجة، لكنها تكون معطّلة ما لم تفعّلها. توضّح الوثائق أن الإصدارات «تكون افتراضياً بلا إصدارات للملفات، أي لا تُحتفظ بأي نسخ قديمة من الملفات». تتوفر 4 استراتيجيات لكل مجلد. تحتفظ Trash Can بنسخة واحدة من كل ملف حُذف أو استُبدل بسبب تغيير عن بُعد. تحتفظ Simple بعدد محدد من الإصدارات القديمة لكل ملف. تقلل Staggered سجل الإصدارات تدريجياً مع تقادمه؛ فتحفظ نسخاً كل ساعة لمدة يوم، ونسخاً يومية لمدة شهر، وهكذا. أما External فتُسند كل قرار إلى أمر تكتبه أنت. توضع النسخ القديمة في دليل .stversions داخل المجلد المشترك.
اضبط Staggered على نظير VPS، واترك ميزة الإصدارات معطّلة على أجهزة الحاسوب المحمولة. عندئذٍ يحتفظ النظير المتاح دائماً بسجل الإصدارات، بينما تظل أجهزة الحاسوب المحمولة قليلة الاستهلاك للمساحة.
يتعامل Nextcloud مع هذا الأمر بصورة أفضل، لكنه لا يزال ليس نسخة احتياطية. تنتقل الملفات المحذوفة إلى سلة المحذوفات، ويحفظ تطبيق Versions التعديلات، لكن النظام يقلص كليهما تلقائياً مع امتلاء القرص. إذا شغّلت على حاسوبك المحمول عملية تشفّر الملفات، فستزامن تلك الإصدارات المشفّرة، وستُحذف النسخ السليمة تلقائياً وفق جدولها الزمني.
يحتاج أي من الأداتين إلى نسخة احتياطية فعلية تحته: لقطات تنشئها أداة منفصلة وتكتبها في مكان لا يستطيع عميل المزامنة الوصول إليه، ثم تستعيدها مرة واحدة على الأقل للتأكد من نجاح الاستعادة. يوضّح مقارنة restic وBorgBackup أيّاً منهما ينبغي توجيهه إلى دليل البيانات.
كيف تختلف التعارضات بين الأداتين
تنشئ الأداتان ملف تعارض عندما يغيّر الطرفان الملف نفسه بين عمليتي مزامنة. ويكمن الاختلاف في الجهة التي ترى هذا الملف.
تعيد Syncthing تسمية النسخة الخاسرة إلى <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>. تخسر النسخة ذات وقت التعديل الأقدم. وعندما تكون الأوقات متطابقة، يخسر الجهاز الذي يملك قيمة أكبر في أول 63 بت من معرّف الجهاز. هذا الاختيار اعتباطي، لكنه يعطي النتيجة نفسها على جميع الأجهزة النظيرة. ثم تأتي النقطة التي لا يتوقعها كثيرون: «تُعامل هذه الملفات كملفات عادية بعد إنشائها، ولذلك تُنشر بين الأجهزة». يتلقى كل جهاز نظير نسخة التعارض. يؤدي حذفها إلى عملية حذف واحدة تتزامن مع بقية الأجهزة، لكنك ستراها أولاً على جميع أجهزتك.
ينشئ عميل Nextcloud لسطح المكتب الملف <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext>، مثل mydata (conflicted copy 2018-04-10 093612).txt، ولا يرفع هذا الملف افتراضياً. يوضح دليل العميل السبب: الشخص الذي أجرى التغيير هو الأقدر على حل التعارض، وعرض التعارض على المستخدمين الآخرين لا يؤدي إلا إلى إرباكهم. اضبط OWNCLOUD_UPLOAD_CONFLICT_FILES=1 في بيئة العميل إذا أردت السلوك المعاكس.
لذلك يكون تعارض Syncthing حدثاً على مستوى المجموعة كلها، بينما يبقى تعارض Nextcloud على جهاز سطح مكتب واحد.
أنواع المجلدات تجعل Syncthing أكثر أماناً على الخادم
يحتوي Syncthing على ثلاثة أنواع من المجلدات. ويؤدي اختيار النوع المناسب على VPS إلى إزالة فئة كاملة من الحوادث.
- Send & Receive هو الخيار الافتراضي. تنتقل التغييرات في الاتجاهين.
- Send Only يتجاهل كل ما يرسله العنقود. استخدمه عندما يجب أن ينشر الجهاز البيانات فقط. وعندما يخرج عن المزامنة، تعرض واجهة GUI زر "Override Changes" باللون الأحمر، ويدفع هذا الزر الحالة المحلية إلى جميع الأجهزة.
- Receive Only يطبّق التغييرات الواردة من العنقود ولا يرسل التعديلات المحلية إليه مطلقاً. استخدمه على VPS يعمل كأرشيف. وتؤدي التعديلات المحلية هناك بدلاً من ذلك إلى ظهور زر "Revert Local Changes" باللون الأحمر.
يوفّر مجلد Receive Only على VPS، مع تفعيل Staggered versioning، نسخة مطابقة ذات إصدارات. ويظل الحذف على جهاز محمول مطبّقاً، لأن الحذف تغيير مشروع في العنقود، لكن النسخة القديمة تنتقل إلى .stversions بدلاً من اختفائها.
أي خيار تختار
تغطي الصفوف 7 أدناه الأسباب التي تدفع الأشخاص فعلياً إلى طرح هذا السؤال.
The data behind this chart
[
{
"label": "Keep two of my own laptops in sync",
"pick": "Syncthing",
"notes": "No accounts to manage. The VPS is the peer that is always awake."
},
{
"label": "Send a download link to a client",
"pick": "Nextcloud",
"notes": "Syncthing has no public link sharing at all."
},
{
"label": "Open a file from a borrowed browser",
"pick": "Nextcloud",
"notes": "The Syncthing GUI shows sync state, never file contents."
},
{
"label": "Sync 200 GB between machines I own",
"pick": "Syncthing",
"notes": "Peers transfer directly. The VPS copy is optional."
},
{
"label": "Phone photo upload with a store app",
"pick": "Nextcloud",
"notes": "The official Syncthing Android app ended in December 2024."
},
{
"label": "Calendar and contacts alongside files",
"pick": "Nextcloud",
"notes": "Syncthing syncs files. That is the entire feature set."
},
{
"label": "1 GB VPS with nothing else to spare",
"pick": "Syncthing",
"notes": "One Go binary against PHP plus a database plus a web server."
}
]انظر إلى الصف الأول. تشير مزامنة جهازي كمبيوتر محمول تملكهما إلى Syncthing، وهذه هي الحالة التي يثبت فيها VPS قيمته باعتباره النظير الذي لا يتوقف عن العمل. أما كل صف يتضمن متصفحاً أو رابطاً أو شخصاً آخر فيشير إلى الخيار الآخر.
إذا ظل Nextcloud يتفوق، لكنك قلق بشأن حجمه، فاقرأ مقارنة Seafile وNextcloud بعد ذلك، لأن Seafile يحافظ على نموذج الخادم مع استخدام محرك مزامنة مختلف تحته.
تشغيلهما معاً على VPS واحد
ليستا خدمتين متعارضتين. يُعد استخدام Syncthing لنقل الملفات بين أجهزتك، مع تولّي Nextcloud مشاركة الملفات والتقويمات، ترتيباً شائعاً.
إذا استخدمتهما معاً، فهناك قاعدة واحدة: لا توجّه Syncthing أبداً إلى دليل بيانات Nextcloud. يتتبع Nextcloud كل ملف في قاعدة بياناته، لذلك تظل الملفات التي تظهر على القرص من خارج Nextcloud غير مرئية في واجهة الويب إلى أن تلحق قاعدة البيانات بالتغييرات. من دليل تثبيت Nextcloud:
sudo -u www-data php occ files:scan --allيطبع هذا الأمر عدد الملفات والمجلدات التي فحصها. تشغيله وفق مؤقت حلٌّ التفافي، وليس تصميماً سليماً. امنح كل أداة دليلاً خاصاً بها. إذا كنت لا تزال تقرر ما الذي يستحق الاستضافة على الخادم أصلاً، فسيكون الدليل الخاص بما يستحق الاستضافة الذاتية في 2026 نقطة بداية أفضل من اختيار أداة مزامنة أولاً.
FAQ
هل يمكن أن يحل Syncthing محل Dropbox؟
يحل محل Dropbox فقط فيما يتعلق بمزامنة أجهزتك أنت. لا يوفّر Syncthing روابط مشاركة عامة أو حسابات مستخدمين، ولا تعرض واجهته على الويب محتويات الملفات مطلقاً، لأنه لا توجد نسخة مركزية يمكن للمتصفح طلبها. أُوقف تطبيق Android الرسمي بعد إصداره في December 2024، وأُزيل من Play Store، لذلك يعتمد دعم الهواتف الآن على fork يديره المجتمع. إذا احتجت إلى إرسال رابط إلى شخص ما، فستحتاج إلى خادم، وهذا يعني استخدام Nextcloud أو حل مشابه.
هل يُعد Syncthing نسخة احتياطية؟
لا، والمشروع يوضح ذلك مباشرة. تنتشر عمليات الحذف والتعديل إلى كل جهاز، لذلك يختفي الحذف غير المقصود من جميع الأجهزة خلال ثوانٍ. يؤدي تفعيل إصدار الملفات لكل مجلد، ولا سيما Staggered على جهاز نظير يعمل دائماً، إلى توفير فترة لاستعادة الملفات من خلال المجلد .stversions. لكنه لا يحل محل snapshots ينشئها tool منفصل على مساحة تخزين منفصلة.
لماذا لا أستطيع رؤية ملفاتي في واجهة Syncthing على الويب؟
لأن الواجهة هي لوحة تحكم بحالة المزامنة، وليست متصفح ملفات. تعرض المجلدات والأجهزة وتقدم النقل وعدد التعارضات، ولا تسرد محتويات الملفات أو تفتحها مطلقاً. وينتج ذلك عن تصميم الند للند: توجد ملفاتك على أجهزتك، بينما تدير الواجهة على VPS العملية التي تنقلها.
ما المنافذ التي يحتاج Syncthing إلى فتحها على VPS؟
يحتاج إلى 22000/TCP لبروتوكول المزامنة، وإلى 22000/UDP لنقل QUIC. يحمل المنفذ 21027/UDP اكتشاف الأجهزة المحلية عبر broadcast وmulticast، ولا يعبر الإنترنت، لذلك اتركه مغلقاً على الخادم العام. اترك GUI على المنفذ 8384 مرتبطاً بـ 127.0.0.1، ووصل إليها عبر نفق SSH. تحقّق من جدار الحماية الشبكي لدى المزوّد، وكذلك من ufw، لأنهما آليتا تحكم منفصلتان.
هل يمكنني تشغيل Syncthing وNextcloud على VPS نفسه؟
نعم، وهذا مناسب على خادم يحتوي على 2 GB من RAM أو أكثر. أبقِ مجلداتهما منفصلة. يفهرس Nextcloud الملفات في قاعدة بياناته، لذلك تظل أي ملفات يكتبها Syncthing داخل مساحة تخزين Nextcloud غير ظاهرة في واجهة الويب إلى أن يعمل occ files:scan. كما يؤدي استخدام toolين للكتابة إلى المجلد نفسه إلى إنشاء ملفات تعارض لا يتوقعها أي منهما.