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 من RAM لكل عملية"، ويشغّل php-fpm عدة عمليات عامل في الوقت نفسه.
على VPS بسعة 1 GB من RAM، يعمل Syncthing براحة، بينما يكون Nextcloud محدود الموارد. هذا لا يعني أن Nextcloud هو الخيار الخطأ. بل يعني أنه التزام أكبر، إذ يتعين إبقاء أربعة مكونات محدثة بدلاً من مكوّن واحد. ويُعد مسار الحاويات في دليل Nextcloud على VPS الذي يغطي Docker وTLS والنسخ الاحتياطية الطريقة الأقل إزعاجاً للتعامل مع هذا العبء.
تثبيت 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 GUI دون نشره
تستمع واجهة الويب (واجهة المستخدم الرسومية) على 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 يقرأ كلمة المرور من الإدخال القياسي، ما يبقيها خارج سجل shell، كما تُحوَّل القيمة إلى hash قبل كتابتها في الملف. فعّل 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 يمنع فئة كاملة من الحوادث.
- الإرسال والاستقبال هو النوع الافتراضي. تنتقل التغييرات في الاتجاهين.
- الإرسال فقط يتجاهل كل ما يرسله العنقود. استخدمه عندما يجب على الجهاز النشر فقط. عند خروجه عن المزامنة، تعرض واجهة GUI زرًا أحمر باسم "Override Changes"، ويدفع هذا الزر الحالة المحلية إلى جميع الأجهزة.
- الاستقبال فقط يطبّق التغييرات الواردة من العنقود ولا يرسل التعديلات المحلية إليه مطلقًا. استخدمه على VPS يعمل كأرشيف. تؤدي التعديلات المحلية هناك بدلاً من ذلك إلى ظهور زر أحمر باسم "Revert Local Changes".
يمنحك مجلد من نوع الاستقبال فقط على 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؟
فقط بالنسبة إلى إبقاء أجهزتك أنت متزامنة. لا يوفّر Syncthing روابط مشاركة عامة أو حسابات مستخدمين، ولا تعرض واجهته على الويب محتويات الملفات مطلقاً، لأنه لا توجد نسخة مركزية يمكن للمتصفح طلبها. أُوقف إصدار Android الرسمي بعد إصداره في December 2024، وأزيل من Play Store، لذلك يعتمد دعم الهواتف الآن على fork يديره المجتمع. إذا كنت تحتاج إلى إرسال رابط إلى شخص ما، فأنت تحتاج إلى خادم، وهذا يعني Nextcloud أو شيئاً مشابهاً.
هل يُعد Syncthing نسخة احتياطية؟
لا، والمشروع يوضح ذلك مباشرة. تنتشر عمليات الحذف والتعديل إلى كل جهاز، لذلك يختفي الحذف غير المقصود من كل الأجهزة خلال ثوانٍ. يوفّر تفعيل إصدار الملفات لكل مجلد، وخصوصاً Staggered على نظير يعمل دائماً، فترة لاستعادة الملفات من خلال الدليل .stversions. لكنه لا يحل محل اللقطات التي تنشئها أداة منفصلة على مساحة تخزين منفصلة.
لماذا لا أستطيع رؤية ملفاتي في واجهة الويب الرسومية لـ Syncthing؟
لأن الواجهة الرسومية لوحة تحكم بحالة المزامنة وليست متصفحاً للملفات. فهي تعرض المجلدات والأجهزة وتقدم النقل وعدد التعارضات، ولا تسرد محتويات الملفات أو تفتحها مطلقاً. ينتج ذلك عن تصميم الند للند: توجد ملفاتك على أجهزتك، بينما تدير الواجهة الرسومية على VPS العملية التي تنقلها فيما بينها.
ما المنافذ التي يحتاج Syncthing إلى فتحها على VPS؟
يحتاج إلى 22000/TCP لبروتوكول المزامنة، وإلى 22000/UDP لنقل QUIC. ينقل المنفذ 21027/UDP الاكتشاف المحلي عبر البث والتعدد الإرسال، ولا يعبر الإنترنت، لذلك اتركه مغلقاً على الخادم العام. اترك واجهة GUI على المنفذ 8384 مرتبطة بـ 127.0.0.1، ووصل إليها عبر نفق SSH. افحص جدار الحماية الشبكي لدى مزود الخدمة، وكذلك ufw، لأنهما آليتا تحكم منفصلتان.
هل يمكنني تشغيل Syncthing وNextcloud على VPS نفسه؟
نعم، وهذا مناسب على خادم بسعة 2 GB من RAM أو أكثر. أبقِ دلائلهما منفصلة. يفهرس Nextcloud الملفات في قاعدة بياناته، لذلك تظل أي ملفات يكتبها Syncthing في مساحة تخزين Nextcloud غير ظاهرة في واجهة الويب إلى أن يعمل occ files:scan. كما أن كتابة أداتين في دليل واحد تنشئ ملفات تعارض لا تتوقعها أي منهما.