Syncthing बनाम Nextcloud: VPS के लिए सही विकल्प कैसे चुनें
Syncthing एक peer-to-peer टूल है जबकि Nextcloud एक सर्वर-आधारित प्लेटफॉर्म है। जानें कि आपके VPS के लिए कौन सा बेहतर है और क्यों दोनों ही समाधान बैकअप का विकल्प नहीं हैं।
Syncthing बनाम Nextcloud: वह अंतर जो निर्णय लेने में मदद करता है
Syncthing और Nextcloud के बीच का अंतर एक संरचनात्मक भिन्नता पर आधारित है, और बाकी सब कुछ उसी से तय होता है। Syncthing एक peer-to-peer सिस्टम है। प्रत्येक डिवाइस में पूरा फोल्डर होता है, और कोई भी कॉपी आधिकारिक (authoritative) नहीं होती है। Nextcloud एक सर्वर है। एक मशीन फाइलों को रखती है, उसके सामने यूजर अकाउंट्स होते हैं, और क्लाइंट्स वहां से फाइलों की कॉपी डाउनलोड करते हैं।
यही कारण है कि Syncthing में कोई share link या दस्तावेजों का web view नहीं होता है। इसमें सर्व करने के लिए कोई केंद्रीय कॉपी नहीं होती, इसलिए ब्राउज़र के पास अनुरोध करने के लिए कुछ भी नहीं होता है। Nextcloud ये दोनों सुविधाएं प्रदान करता है, और ऐसा करने के लिए इसे एक PHP runtime, एक database server, एक web server और TLS (transport layer security) के लिए एक reverse proxy की आवश्यकता होती है।
Syncthing तब चुनें जब शामिल सभी डिवाइस आपके हों। Nextcloud तब चुनें जब किसी ब्राउज़र या किसी अन्य व्यक्ति को फाइलों तक पहुँचने की आवश्यकता हो।
प्रत्येक डिज़ाइन में VPS वास्तव में क्या कर रहा है
Nextcloud चलाने वाला एक VPS आपके डेटा का मुख्य स्थान होता है। यदि आप अपने लैपटॉप से स्थानीय कॉपी हटा देते हैं, तो भी फ़ाइल सर्वर पर सुरक्षित रहती है, क्योंकि सर्वर हमेशा से ही मूल स्रोत था।
Syncthing चलाने वाला एक VPS अलग तरह से काम करता है: यह एक हमेशा चालू रहने वाला (always-on) पीयर है। Syncthing डेटा को सीधे उन दो डिवाइस के बीच ट्रांसफर करता है जो एक ही समय पर ऑनलाइन होते हैं। इसलिए, दो लैपटॉप जो कभी एक साथ चालू नहीं होते, वे कभी सिंक नहीं हो सकते, चाहे आप कितनी भी प्रतीक्षा करें। यदि आप एक VPS पर तीसरा पीयर जोड़ते हैं जो कभी बंद नहीं होता, तो यह समस्या समाप्त हो जाती है। लैपटॉप A सुबह 09:00 बजे डेटा पुश करता है, लैपटॉप B रात 22:00 बजे डेटा पुल करता है, और इस बीच VPS उस फ़ोल्डर को अपने पास सुरक्षित रखता है।
यह वास्तव में एक उपयोगी भूमिका है, और यह "Dropbox का विकल्प" होने के दावे से कहीं अधिक सीमित है। Syncthing आपको कभी भी ऐसा लिंक नहीं देगा जिसे आप किसी क्लाइंट को भेज सकें। यदि आपकी आवश्यकता यही है, तो यहाँ रुकें और इसके बजाय self-hosted Dropbox विकल्पों का सारांश पढ़ें।
एक छोटे VPS पर प्रत्येक की लागत
Syncthing एक सिंगल Go binary है। यह एक socket पर listen करता है, आपकी फाइलों का index एक local database में रखता है, और बस यही इसका पूरा stack है। Version 2.0 के बाद से वह index LevelDB के बजाय SQLite है, इसलिए 1.x install से upgrade करने पर पहली बार launch करने पर एक बार का migration चलता है। फाइलों के एक बड़े set पर उस migration में काफी समय लग सकता है। इसे पूरा होने दें। इसके अलावा कुछ भी install करने की आवश्यकता नहीं है, और न ही कुछ और patch करने की जरूरत है।
Nextcloud को और अधिक संसाधनों की आवश्यकता होती है। अगस्त 2026 तक, Nextcloud 35, PHP 8.3 से 8.5 को MariaDB या PostgreSQL के साथ support करता है, जिसे Apache 2.4 या nginx के माध्यम से php-fpm के साथ serve किया जाता है। Admin manual "प्रति process न्यूनतम 512MB RAM" की सिफारिश करता है, और php-fpm एक साथ कई worker processes चलाता है।
1 GB RAM वाले VPS पर, Syncthing आसानी से चलता है जबकि Nextcloud के लिए जगह कम पड़ जाती है। इसका मतलब यह नहीं है कि Nextcloud गलत विकल्प है। इसका मतलब यह है कि यह एक बड़ी जिम्मेदारी है, जिसमें एक के बजाय चार components को update रखना पड़ता है। Docker, TLS और backups को कवर करने वाली Nextcloud on a VPS गाइड में बताया गया container का तरीका इस बोझ को उठाने का सबसे सरल उपाय है।
VPS पर Syncthing इंस्टॉल करें
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 --versionsyncthing --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.servicesystemctl status को active (running) प्रिंट करना चाहिए। कॉन्फ़िगरेशन और इंडेक्स फाइलें /home/youruser/.local/state/syncthing में रहती हैं, और कॉन्फ़िगरेशन फाइल config.xml है। Syncthing 1.27 से पहले किए गए इंस्टॉलेशन इन्हें ~/.config/syncthing में रखते हैं, इसलिए मशीनों के बीच कुछ भी कॉपी करने से पहले दोनों पाथ की जांच कर लें।
इसके बाद पोर्ट्स खोलें। Syncthing सिंक प्रोटोकॉल के लिए 22000/TCP, अपने QUIC ट्रांसपोर्ट के लिए 22000/UDP, और लोकल डिस्कवरी के लिए 21027/UDP का उपयोग करता है। डिस्कवरी ब्रॉडकास्ट और मल्टीकास्ट का उपयोग करती है, जो इंटरनेट के पार नहीं जाते हैं, इसलिए VPS पर आपको केवल पहले दो पोर्ट्स की आवश्यकता है।
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusufw status को दोनों नियमों को सूचीबद्ध करना चाहिए। यदि यह Status: inactive प्रिंट करता है, तो ufw कुछ भी फिल्टर नहीं कर रहा है और केवल आपके प्रदाता का नेटवर्क फायरवॉल ही सक्रिय है। उस पैनल की भी जांच करें, क्योंकि अधिकांश होस्ट पर यह एक अलग नियंत्रण होता है। यदि सर्विस चलने के दौरान कोई रिमोट डिवाइस Disconnected पर अटका हुआ है, तो इसका आमतौर पर मतलब है कि उन दो फायरवॉल में से कोई एक अभी भी बंद है।
Syncthing GUI तक इसे पब्लिश किए बिना पहुँचें
Web GUI (graphical user interface) डिफ़ॉल्ट रूप से 127.0.0.1:8384 पर listen करता है, इसलिए यह केवल सर्वर से ही प्रतिक्रिया देता है। यह डिफ़ॉल्ट सेटिंग सुरक्षात्मक है, क्योंकि GUI में एक API (application programming interface) key होती है जो बॉक्स पर मौजूद हर फोल्डर पाथ को बदल सकती है।
इसे पहले चरण के रूप में दुनिया के लिए न खोलें। डॉक्यूमेंटेशन इस बारे में स्पष्ट है कि नेटवर्क एड्रेस पर बाइंड करने से क्या होता है: "अपने कंप्यूटर का LAN एड्रेस निर्दिष्ट करने से एक्सेस केवल आपके लोकल नेटवर्क के डिवाइस तक सीमित नहीं होगा!" इसके बजाय अपने लैपटॉप से SSH के माध्यम से पोर्ट को फॉरवर्ड करें।
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.exampleजब वह सेशन चालू हो, तो अपने लोकल ब्राउज़र में http://127.0.0.1:8384 खोलें। SSH सेशन के साथ टनल बंद हो जाती है, इसलिए बाद में कुछ भी listen नहीं करता है।
यदि आपको वास्तव में GUI तक सीधे पहुँचने की आवश्यकता है, तो पहले क्रेडेंशियल्स सेट करें। सर्वर पर कोई ब्राउज़र नहीं होता है, इसलिए इसे कमांड लाइन से करें।
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 स्टैंडर्ड इनपुट से पासवर्ड पढ़ता है, जिससे यह आपकी शेल हिस्ट्री में नहीं आता है, और फाइल में लिखे जाने से पहले वैल्यू को हैश कर दिया जाता है। एक बार लॉग इन करने के बाद GUI सेटिंग्स में HTTPS चालू करें।
Syncthing आपकी गलतियों को क्यों दोहराता है
Syncthing FAQ स्वयं बैकअप के प्रश्न का उत्तर देता है: "Syncthing एक बेहतरीन बैकअप एप्लिकेशन नहीं है क्योंकि आपकी फाइलों में किए गए सभी बदलाव (संशोधन, विलोपन, आदि) आपके सभी डिवाइसों पर दोहरा दिए जाएंगे।"
यदि आप अपने लैपटॉप पर गलती से कोई फोल्डर डिलीट कर देते हैं, तो Syncthing बिल्कुल वैसे ही काम करता है जैसा उसे डिज़ाइन किया गया है। यह कुछ ही सेकंड में उस फोल्डर को हर जगह से डिलीट कर देता है। सिंक का अर्थ है सहमति, और सहमति में यह भी शामिल है कि फाइल अब मौजूद नहीं है।
फाइल वर्ज़निंग (file versioning) इसका समाधान है, और जब तक आप इसे चालू नहीं करते, यह बंद रहता है। दस्तावेज़ीकरण के अनुसार, वर्ज़निंग "डिफ़ॉल्ट रूप से 'no file versioning' पर सेट होती है, यानी फाइलों की कोई पुरानी कॉपी नहीं रखी जाती है।" प्रति फोल्डर चार रणनीतियाँ उपलब्ध हैं। Trash Can रिमोट बदलाव के कारण डिलीट या रिप्लेस की गई प्रत्येक फाइल की एक कॉपी रखता है। Simple प्रति फाइल पुरानी फाइलों की एक निश्चित संख्या रखता है। Staggered जैसे-जैसे समय बीतता है, इतिहास को छोटा करता जाता है; यह एक दिन के लिए प्रति घंटे की कॉपी, एक महीने के लिए दैनिक कॉपी, आदि रखता है। External प्रत्येक निर्णय को आपके द्वारा लिखे गए कमांड पर छोड़ देता है। पुरानी कॉपियाँ साझा फोल्डर के अंदर एक .stversions डायरेक्टरी में जाती हैं।
VPS पीयर पर Staggered सेट करें और लैपटॉप पर वर्ज़निंग को बंद रहने दें। इस तरह हमेशा चालू रहने वाला पीयर इतिहास को सुरक्षित रखेगा और लैपटॉप का डेटा कम रहेगा।
Nextcloud इसे बेहतर तरीके से संभालता है, लेकिन फिर भी यह बैकअप नहीं है। डिलीट की गई फाइलें ट्रैश बिन में चली जाती हैं और संपादन को Versions ऐप द्वारा रखा जाता है, लेकिन डिस्क भरते ही दोनों को स्वचालित रूप से हटा दिया जाता है। आपके लैपटॉप पर चलने वाली कोई प्रक्रिया जो फाइलों को एन्क्रिप्ट करती है, उन एन्क्रिप्टेड वर्ज़न्स को सिंक कर देगी, और अच्छी कॉपियाँ अपने निर्धारित समय पर पुरानी होकर हट जाएंगी।
किसी भी टूल के नीचे एक वास्तविक बैकअप की आवश्यकता होती है: एक अलग प्रोग्राम द्वारा लिए गए स्नैपशॉट, जिन्हें ऐसी जगह लिखा जाए जहाँ सिंक क्लाइंट न पहुँच सके, और जिन्हें कम से कम एक बार रिस्टोर करके देखा जाए ताकि आप सुनिश्चित हो सकें कि रिस्टोर काम करता है। restic और BorgBackup की तुलना में बताया गया है कि डेटा डायरेक्टरी के लिए किसका उपयोग करना चाहिए।
दोनों के बीच conflicts में अंतर
जब दो syncs के बीच दोनों तरफ से एक ही file में बदलाव किया जाता है, तो दोनों tools एक conflict file बनाते हैं। अंतर यह है कि इसे कौन देखता है।
Syncthing हारने वाली copy का नाम बदलकर <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext> कर देता है। जिस copy का modification time पुराना होता है, वह हार जाती है। जब समय समान होता है, तो वह device हार जाता है जिसका device ID के पहले 63 bits का मान अधिक होता है। यह मान मनमाना है, लेकिन हर peer पर समान परिणाम देता है। इसके बाद वह हिस्सा आता है जिसके लिए लोग तैयार नहीं होते: ये files "बनने के बाद सामान्य files की तरह मानी जाती हैं, इसलिए इन्हें devices के बीच propagate किया जाता है"। हर peer को conflict copy प्राप्त होती है। इसे साफ करने के लिए एक deletion करना होता है जो sync हो जाता है, लेकिन पहले आप इसे अपनी सभी मशीनों पर देखेंगे।
Nextcloud desktop client <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext> लिखता है, उदाहरण के लिए mydata (conflicted copy 2018-04-10 093612).txt, और डिफ़ॉल्ट रूप से यह उस file को upload नहीं करता है। client manual इसका कारण बताता है: बदलाव करने वाला व्यक्ति ही इसे हल करने के लिए सबसे उपयुक्त है, और अन्य users को conflict दिखाना केवल भ्रम पैदा करता है। यदि आप इसके विपरीत व्यवहार चाहते हैं, तो client के environment में OWNCLOUD_UPLOAD_CONFLICT_FILES=1 set करें।
अतः, Syncthing conflict एक cluster-व्यापी घटना है, जबकि Nextcloud conflict केवल एक desktop तक सीमित रहता है।
Folder types के उपयोग से Syncthing सर्वर पर अधिक सुरक्षित रहता है
Syncthing में तीन प्रकार के folder types होते हैं। VPS पर सही प्रकार का चयन करने से कई प्रकार की दुर्घटनाओं से बचा जा सकता है।
- Send & Receive डिफ़ॉल्ट विकल्प है। इसमें बदलाव दोनों दिशाओं में सिंक होते हैं।
- Send Only विकल्प क्लस्टर से आने वाले सभी बदलावों को अनदेखा कर देता है। इसका उपयोग वहां करें जहां किसी डिवाइस को केवल डेटा पब्लिश करना हो। जब यह सिंक से बाहर हो जाता है, तो GUI में एक लाल "Override Changes" बटन दिखाई देता है, जो स्थानीय स्थिति (local state) को सभी के साथ सिंक कर देता है।
- Receive Only विकल्प क्लस्टर से बदलावों को लागू करता है और स्थानीय स्तर पर किए गए बदलावों को वापस नहीं भेजता। इसका उपयोग उस VPS पर करें जो एक archive के रूप में कार्य कर रहा हो। वहां स्थानीय बदलाव करने पर एक लाल "Revert Local Changes" बटन दिखाई देता है।
VPS पर Staggered versioning के साथ Receive Only folder का उपयोग करने से आपको एक versioned mirror प्राप्त होता है। लैपटॉप पर की गई deletion यहाँ भी लागू होती है, क्योंकि deletion एक वैध क्लस्टर बदलाव है, लेकिन पुरानी कॉपी गायब होने के बजाय .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 उस साथी (peer) के रूप में अपनी उपयोगिता सिद्ध करता है जो कभी सोता नहीं है। ब्राउज़र, लिंक या किसी अन्य व्यक्ति से जुड़ी हर पंक्ति दूसरी दिशा की ओर इशारा करती है।
यदि Nextcloud लगातार बेहतर प्रदर्शन कर रहा है लेकिन उसका footprint आपको चिंतित करता है, तो Seafile और Nextcloud की तुलना अगला लेख है जिसे आपको पढ़ना चाहिए, क्योंकि Seafile एक अलग सिंक इंजन के साथ सर्वर मॉडल को बनाए रखता है।
एक ही VPS पर दोनों को चलाना
ये एक-दूसरे के विकल्प नहीं हैं। अपनी मशीनों के बीच फाइलें ट्रांसफर करने के लिए Syncthing का उपयोग करना और शेयरिंग व कैलेंडर के लिए Nextcloud का उपयोग करना एक सामान्य व्यवस्था है।
यदि आप ऐसा करते हैं, तो एक नियम का पालन करें: Syncthing को कभी भी Nextcloud की data directory की ओर पॉइंट न करें। Nextcloud अपने डेटाबेस में हर फाइल को ट्रैक करता है, इसलिए बाहर से डिस्क पर आने वाली फाइलें तब तक वेब इंटरफेस में दिखाई नहीं देतीं जब तक कि डेटाबेस उन्हें अपडेट न कर ले। Nextcloud इंस्टॉलेशन डायरेक्टरी से:
sudo -u www-data php occ files:scan --allयह कमांड स्कैन की गई फाइलों और फोल्डर्स की संख्या प्रिंट करती है। इसे टाइमर पर चलाना एक अस्थायी समाधान (workaround) है, न कि सही डिज़ाइन। प्रत्येक टूल को अपनी अलग डायरेक्टरी दें। यदि आप अभी भी यह तय कर रहे हैं कि सर्वर पर क्या होना चाहिए, तो 2026 में क्या self-host करें, इसकी गाइड किसी सिंक टूल को चुनने से बेहतर शुरुआती बिंदु है।
FAQ
क्या Syncthing, Dropbox की जगह ले सकता है?
केवल उस हिस्से के लिए जहाँ आपके अपने डिवाइस सिंक में रहते हैं। Syncthing में कोई public share link और user account नहीं होते हैं, और इसका web interface कभी भी file contents नहीं दिखाता है, क्योंकि ब्राउज़र द्वारा अनुरोध करने के लिए कोई केंद्रीय प्रति (central copy) मौजूद नहीं होती है। आधिकारिक Android app को इसके December 2024 release के बाद बंद कर दिया गया है और यह Play Store से हटा दिया गया है, इसलिए अब phone support एक community fork पर निर्भर है। यदि आपको किसी को link भेजने की आवश्यकता है, तो आपको एक server की आवश्यकता होगी, जिसका अर्थ है Nextcloud या उसके जैसा कोई अन्य टूल।
क्या Syncthing एक backup है?
नहीं, और project स्वयं भी यही कहता है। deletions और modifications हर डिवाइस पर फैल जाते हैं, इसलिए एक बार गलती से delete की गई फाइल कुछ ही सेकंड में हर जगह से गायब हो जाती है। प्रति फोल्डर file versioning चालू करने से, विशेष रूप से always-on peer पर Staggered विकल्प चुनने से, आपको .stversions directory के माध्यम से recovery window मिल जाती है। यह किसी अलग टूल द्वारा अलग storage पर लिए गए snapshots का विकल्प नहीं है।
मैं Syncthing web GUI में अपनी फाइलें क्यों नहीं देख सकता?
क्योंकि GUI सिंक स्थिति के लिए एक control panel है, न कि file browser। यह फोल्डर, डिवाइस, transfer progress और conflict counts दिखाता है, और यह कभी भी file contents को सूचीबद्ध या ओपन नहीं करता है। यह peer to peer डिज़ाइन के कारण है: आपकी फाइलें आपके डिवाइस पर रहती हैं, और VPS पर मौजूद GUI केवल उन्हें इधर-उधर ले जाने वाली प्रक्रिया को प्रबंधित करता है।
VPS पर Syncthing को किन ports को open रखने की आवश्यकता है?
sync protocol के लिए 22000/TCP और QUIC transport के लिए 22000/UDP। Port 21027/UDP broadcast और multicast के माध्यम से local discovery का कार्य करता है, जो internet पर काम नहीं करता है, इसलिए इसे public server पर बंद रखें। GUI को 8384 पर 127.0.0.1 से bind रखें और इसे SSH tunnel के माध्यम से एक्सेस करें। अपने provider के network firewall के साथ-साथ ufw की भी जाँच करें, क्योंकि ये अलग-अलग नियंत्रण हैं।
क्या मैं एक ही VPS पर Syncthing और Nextcloud चला सकता हूँ?
हाँ, और 2 GB RAM या उससे अधिक वाले सर्वर पर यह उचित है। उनकी directories को अलग-अलग रखें। Nextcloud अपनी database में फाइलों को index करता है, इसलिए Syncthing जो कुछ भी Nextcloud के storage में लिखता है, वह तब तक web interface में दिखाई नहीं देता जब तक कि occ files:scan न चल जाए। एक ही directory में दो टूल लिखने से conflict फाइलें भी बनती हैं जिनकी अपेक्षा न तो एक करता है और न ही दूसरा।