VPS वर file sync साठी Syncthing की Nextcloud?
Syncthing मध्ये server copy नसते, तर Nextcloud मध्ये accounts आणि share links असतात. तुमच्या VPS साठी योग्य पर्याय निवडा, आणि दोन्ही backup का नाहीत ते जाणून घ्या.
Syncthing विरुद्ध Nextcloud: निवड ठरवणारा फरक
Syncthing आणि Nextcloud यांतील फरक एका संरचनात्मक मुद्द्यावर अवलंबून आहे. बाकी सर्व परिणाम त्यातूनच ठरतात. Syncthing हे peer-to-peer आहे. प्रत्येक device मध्ये संपूर्ण folder असतो. कोणतीही copy अधिकृत मानली जात नाही. Nextcloud हा server आहे. एका machine वर files असतात. त्यांच्या आधी user accounts असतात. Clients त्या files च्या copies डाउनलोड करतात.
म्हणूनच Syncthing मध्ये share link किंवा documents पाहण्यासाठी web view नसतो. सेवा देण्यासाठी केंद्रीय copy नसल्यामुळे browser कडे मागण्यासाठी काहीही नसते. Nextcloud मध्ये या दोन्ही सुविधा असतात. त्यासाठी PHP runtime, database server, web server आणि TLS (transport layer security) साठी reverse proxy आवश्यक असतो.
संबंधित प्रत्येक device तुमच्या मालकीचा असेल, तर Syncthing निवडा. Browser किंवा दुसऱ्या व्यक्तीला files पर्यंत पोहोचणे आवश्यक असेल, तर Nextcloud निवडा.
प्रत्येक रचनेत VPS प्रत्यक्षात काय करत आहे
Nextcloud चालणारा VPS हा तुमच्या डेटाचे मुख्य स्थान असतो. तुमच्या laptop वरील स्थानिक प्रत हटवली, तरी फाइल server वर राहते, कारण server ही मूळ प्रत ठेवणारी जागा असते.
Syncthing चालणारा VPS वेगळे काम करतो: तो कायम ऑनलाइन असलेला peer असतो. एकाच वेळी ऑनलाइन असलेल्या दोन devices मध्ये Syncthing थेट डेटा transfer करतो. त्यामुळे कधीही एकाच वेळी सुरू नसलेले दोन laptops कितीही वेळ प्रतीक्षा केली, तरी कधीही sync होऊ शकत नाहीत. कधीही sleep mode मध्ये न जाणारा तिसरा peer VPS वर जोडल्यास ही समस्या दूर होते. Laptop A 09:00 वाजता डेटा push करतो, laptop B 22:00 वाजता तो pull करतो आणि त्या दरम्यान VPS folder ठेवतो.
ही खरोखर उपयुक्त भूमिका आहे. मात्र, "Dropbox replacement" असा दावा करण्यापेक्षा ती मर्यादित आहे. Syncthing तुम्हाला client ला पाठवण्यासाठी link कधीही देणार नाही. हीच तुमची आवश्यकता असल्यास, इथे थांबा आणि त्याऐवजी self-hosted Dropbox पर्यायांचा आढावा वाचा.
लहान VPS वर प्रत्येकाची किंमत
Syncthing ही एकच Go binary आहे. ती एका socket वर ऐकते, तुमच्या फाइल्सची index स्थानिक database मध्ये ठेवते आणि एवढाच संपूर्ण stack असतो. Version 2.0 पासून ही index LevelDB ऐवजी SQLite वापरते. त्यामुळे 1.x install वरून upgrade केल्यास पहिल्यांदा सुरू करताना एकदाच migration चालते. मोठ्या folder set वर या migration ला बराच वेळ लागू शकतो. ती पूर्ण होऊ द्या. आणखी काही install करण्याची गरज नाही आणि आणखी काही patch करण्याचीही गरज नाही.
Nextcloud ला अधिक घटकांची गरज असते. August 2026 पर्यंत Nextcloud 35, PHP 8.3 ते 8.5 ला MariaDB किंवा PostgreSQL सह support करते आणि ते Apache 2.4 किंवा php-fpm सह nginx द्वारे serve केले जाते. Admin manual मध्ये "प्रत्येक process साठी किमान 512MB RAM" ची शिफारस आहे. php-fpm एकाच वेळी अनेक worker processes चालवते.
1 GB VPS वर Syncthing आरामात चालते, तर Nextcloud साठी उपलब्ध क्षमता कमी पडते. त्यामुळे Nextcloud चुकीचा पर्याय ठरत नाही. मात्र तो मोठी जबाबदारी ठरतो, कारण एकाऐवजी चार components अद्ययावत ठेवावे लागतात. Docker, TLS आणि backups समाविष्ट असलेल्या VPS वरील Nextcloud मार्गदर्शकातील container पद्धत हा भार सांभाळण्याचा सर्वात सोपा मार्ग आहे. त्यावर browser based document editing जोडल्यास आवश्यक किमान क्षमता आणखी वाढते. 2 ते 4 GB क्षमतेच्या box साठी OnlyOffice आणि Collabora यांची तुलना याच मुद्द्याचे स्पष्टीकरण देते.
VPS वर Syncthing स्थापित करा
Ubuntu मध्ये syncthing पॅकेज उपलब्ध असते; परंतु ते upstream आवृत्तीपेक्षा बरेच जुने असते. प्रकल्पाचे स्वतःचे repository वापरा.
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 च्या output मध्ये syncthing v2 ने सुरू होणारी ओळ दिसली पाहिजे. तेथे v1 दिसत असल्यास apt अजूनही distribution package ला प्राधान्य देत आहे. upstream repository ला त्यापेक्षा अधिक प्राधान्य देण्यासाठी pin करा आणि पुन्हा स्थापित करा.
printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.prefते system service म्हणून सामान्य user account अंतर्गत चालवा. त्यामुळे कोणीही login केलेले नसतानाही ते boot वेळी सुरू होईल.
sudo systemctl enable --now syncthing@youruser.service
systemctl status syncthing@youruser.servicesystemctl status च्या output मध्ये active (running) दिसले पाहिजे. Configuration आणि index files /home/youruser/.local/state/syncthing मध्ये साठवल्या जातात आणि config file config.xml आहे. Syncthing 1.27 पूर्वी तयार केलेल्या installations मध्ये त्या त्याऐवजी ~/.config/syncthing मध्ये असतात. त्यामुळे machines दरम्यान काहीही copy करण्यापूर्वी दोन्ही paths तपासा.
यानंतर ports उघडा. Syncthing sync protocol साठी 22000/TCP, QUIC transport साठी 22000/UDP आणि local discovery साठी 21027/UDP वापरते. Discovery साठी broadcast आणि multicast वापरले जातात. ते internet पार करू शकत नाहीत. त्यामुळे VPS वर फक्त पहिले दोन ports आवश्यक आहेत.
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusufw status मध्ये दोन्ही rules दिसल्या पाहिजेत. त्यात Status: inactive दिसत असल्यास ufw कोणतेही filtering करत नाही आणि फक्त तुमच्या provider चा network firewall कार्यरत आहे. तो panel देखील तपासा, कारण बहुतेक hosts वर तो स्वतंत्र control असतो. Service चालू असताना remote device Disconnected वर अडकत असल्यास, सामान्यतः या दोन firewalls पैकी एक अजूनही बंद असतो.
Syncthing GUI प्रकाशित न करता त्यात प्रवेश मिळवा
वेब GUI (graphical user interface) defaultनुसार 127.0.0.1:8384 वर listening करते. त्यामुळे ती फक्त server वरूनच प्रतिसाद देते. हा default सुरक्षित आहे, कारण GUI मध्ये API (application programming interface) key असते. या key मुळे server वरील प्रत्येक folder path पुन्हा लिहिता येतो.
पहिल्याच टप्प्यात ते सर्वांसाठी खुले करू नका. Network address वर binding केल्याने काय मिळते, हे documentation स्पष्टपणे सांगते: "तुमच्या computer चा LAN address निर्दिष्ट केल्याने access फक्त तुमच्या local network मधील devices पर्यंत मर्यादित होत नाही!" त्याऐवजी तुमच्या laptop वरून SSH द्वारे port forward करा.
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.exampleSSH session सुरू असताना तुमच्या local browser मध्ये http://127.0.0.1:8384 उघडा. SSH session बंद झाल्यावर tunnel देखील बंद होतो. त्यामुळे नंतर काहीही listening अवस्थेत राहत नाही.
GUI ला थेट उपलब्ध करून देण्याची गरज असल्यास प्रथम credentials सेट करा. Server वर browser नाही. त्यामुळे हे command line वरून करा.
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 चे home directory ठेवते आणि तुम्ही चुकीचे config.xml संपादित करता. Password value म्हणून single dash दिल्यास syncthing generate standard input मधून password वाचते. त्यामुळे password तुमच्या shell history मध्ये साठत नाही. File मध्ये लिहिण्यापूर्वी value hash केली जाते. Login करता आल्यानंतर GUI settings मध्ये HTTPS सुरू करा.
Syncthing तुमच्या चुका का प्रसारित करते
Syncthing चे FAQ स्वतःच backup संबंधी प्रश्नाचे उत्तर देते: "Syncthing हे उत्तम backup application नाही, कारण तुमच्या files मधील सर्व बदल (modifications, deletions इत्यादी) तुमच्या सर्व devices वर प्रसारित केले जातात."
तुमच्या laptop वर एखादा folder चुकून delete केल्यास Syncthing त्याच्या रचनेनुसारच काम करते. तो folder काही सेकंदांत सर्व ठिकाणांहून delete केला जातो. Sync म्हणजे एकमत, आणि एखादी file अस्तित्वात नाही यावरचे एकमतही त्यात समाविष्ट असते.
यावरचा उपाय म्हणजे file versioning. ते तुम्ही सुरू करेपर्यंत बंद असते. Documentation मध्ये स्पष्ट केले आहे की versioning ची default स्थिती "'no file versioning' असते; म्हणजे files च्या जुन्या copies ठेवलेल्या जात नाहीत." प्रत्येक folder साठी चार strategies उपलब्ध आहेत. Trash Can remote change मुळे delete किंवा replace झालेल्या प्रत्येक file ची एक copy ठेवते. Simple प्रत्येक file साठी जुन्या versions ची निश्चित संख्या ठेवते. Staggered इतिहास जुना होत जाईल तसा तो कमी ठेवते: एका दिवसासाठी hourly copies, एका महिन्यासाठी daily copies आणि पुढे त्याच पद्धतीने. External प्रत्येक निर्णय तुम्ही लिहिलेल्या command कडे सोपवते. जुन्या copies shared folder मधील .stversions directory मध्ये ठेवल्या जातात.
VPS peer वर Staggered सेट करा आणि laptops वर versioning बंद ठेवा. नेहमी सुरू असलेला peer मग इतिहास ठेवतो आणि laptops वर अनावश्यक data साठत नाही.
Nextcloud हे अधिक चांगल्या प्रकारे हाताळते, पण तेही backup नाही. Delete केलेल्या files trash bin मध्ये जातात आणि edits Versions app द्वारे जतन केल्या जातात. मात्र disk भरत गेल्यावर दोन्ही आपोआप कमी केले जातात. तुमच्या laptop वरील एखादी process files encrypt करत असल्यास, त्या encrypted versions sync होऊन वर पाठवल्या जातील आणि चांगल्या copies त्यांच्या स्वतंत्र वेळापत्रकानुसार आपोआप हटवल्या जातील.
कोणतेही tool वापरले तरी त्याखाली खरा backup आवश्यक आहे: स्वतंत्र program ने घेतलेले snapshots, sync client ला पोहोचता येणार नाही अशा ठिकाणी लिहिलेले snapshots, आणि restore प्रक्रिया किमान एकदा करून पाहिलेली असावी, जेणेकरून restore कार्यरत आहे याची खात्री होईल. restic आणि BorgBackup यांची तुलना data directory साठी कोणते tool वापरायचे हे स्पष्ट करते.
दोन्ही साधनांमधील संघर्ष कसे वेगळे आहेत
Sync दरम्यान दोन्ही बाजूंनी एकाच फाइलमध्ये बदल केल्यास दोन्ही साधने conflict file तयार करतात. फरक एवढाच आहे की ती फाइल कोणाला दिसते.
Syncthing ज्या प्रतिचा बदल स्वीकारला जात नाही, तिचे नाव बदलून <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext> असे करते. ज्याची modification time जुनी असते ती प्रत स्वीकारली जात नाही. वेळा समान असल्यास, device ID च्या पहिल्या 63 bits मधील मोठी value असलेले device निवडले जाते. हा निर्णय मनमानी असला, तरी प्रत्येक peer वर तोच परिणाम मिळतो. यानंतर महत्त्वाचा मुद्दा असा आहे: त्या फाइल्स “तयार झाल्यानंतर normal files म्हणून हाताळल्या जातात आणि devices दरम्यान propagate केल्या जातात”. प्रत्येक peer ला conflict copy मिळते. ती हटवण्यासाठी एक deletion पुरेसे असते आणि ते सर्वत्र sync होते. मात्र त्यापूर्वी ती फाइल तुमच्या सर्व machines वर दिसेल.
Nextcloud desktop client <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext> लिहितो; उदाहरणार्थ, mydata (conflicted copy 2018-04-10 093612).txt. Default ने तो ही फाइल upload करत नाही. Client manual मध्ये याचे कारण दिले आहे: बदल करणारी व्यक्तीच conflict सोडवण्यासाठी सर्वात योग्य असते. इतर users ना conflict दाखवल्यास केवळ गोंधळ निर्माण होतो. याच्या उलट वर्तन हवे असल्यास client च्या environment मध्ये OWNCLOUD_UPLOAD_CONFLICT_FILES=1 सेट करा.
म्हणून Syncthing मधील conflict ही संपूर्ण cluster वरील घटना असते, तर Nextcloud मधील conflict एका desktop पर्यंत मर्यादित राहतो.
Syncthing मधील folder प्रकार सर्व्हरवरील सुरक्षितता वाढवतात
Syncthing मध्ये तीन folder प्रकार आहेत. VPS वर योग्य प्रकार निवडल्याने अनेक प्रकारच्या चुका टाळता येतात.
- Send & Receive हा default प्रकार आहे. बदल दोन्ही दिशांनी लागू होतात.
- Send Only प्रकार cluster कडून येणारे सर्व बदल दुर्लक्षित करतो. एखाद्या device ने फक्त डेटा प्रकाशित करावा असेल, तेथे हा प्रकार वापरा. तो sync बाहेर गेल्यास GUI मध्ये लाल "Override Changes" बटण दिसते. हे बटण स्थानिक स्थिती सर्व devices वर लागू करते.
- Receive Only प्रकार cluster मधील बदल लागू करतो आणि स्थानिक संपादने परत पाठवत नाही. Archive म्हणून काम करणाऱ्या VPS वर हा प्रकार वापरा. तेथे स्थानिक संपादने केल्यास त्याऐवजी लाल "Revert Local Changes" बटण दिसते.
VPS वरील Receive Only folder साठी Staggered versioning सुरू केल्यास versioned mirror तयार होतो. Laptop वरील deletion तरीही लागू होते, कारण deletion हा cluster मधील वैध बदल आहे. मात्र जुनी प्रत नष्ट न होता .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."
}
]पहिली ओळ पाहा. तुमच्या स्वतःच्या दोन laptops मधील डेटा समक्रमित ठेवणे Syncthing कडे निर्देश करते. अशा परिस्थितीत कधीही बंद न होणारा peer म्हणून VPS उपयुक्त ठरतो. Browser, link किंवा इतर व्यक्तीशी संबंधित प्रत्येक ओळ दुसऱ्या पर्यायाकडे निर्देश करते.
Nextcloud वारंवार योग्य पर्याय ठरत असेल, पण त्याचा footprint चिंतेचा विषय असेल, तर Seafile आणि Nextcloud ची तुलना पुढे वाचा. Seafile मध्ये server model कायम राहते, पण त्यामध्ये वेगळे sync engine वापरले जाते.
एका VPS वर दोन्ही चालवणे
ही दोन्ही साधने परस्परविरोधी नाहीत. स्वतःच्या मशीनमधील फाइल्स हलवण्यासाठी Syncthing आणि sharing तसेच calendars साठी Nextcloud वापरणे ही सामान्य रचना आहे.
तुम्ही ही रचना वापरत असल्यास एक नियम पाळा: Syncthing ला Nextcloud च्या data directory कडे कधीही निर्देशित करू नका. Nextcloud प्रत्येक फाइलची नोंद त्याच्या database मध्ये ठेवते. त्यामुळे बाहेरून disk वर आलेल्या फाइल्स database अद्ययावत होईपर्यंत web interface मध्ये दिसत नाहीत. Nextcloud installation directory मधून:
sudo -u www-data php occ files:scan --allही command स्कॅन केलेल्या files आणि folders ची संख्या दाखवते. ती ठरावीक वेळाने चालवणे हा तात्पुरता उपाय आहे; योग्य रचना नाही. प्रत्येक tool साठी स्वतंत्र directory द्या. या मशीनवर नेमके काय ठेवायचे याचा तुम्ही अजून निर्णय घेत असाल, तर आधी sync tool निवडण्यापेक्षा 2026 मध्ये काय self-host करावे यावरील मार्गदर्शक हा अधिक चांगला प्रारंभबिंदू आहे.
FAQ
Syncthing, Dropbox ची जागा घेऊ शकते का?
तुमची स्वतःची उपकरणे समक्रमित ठेवण्यापुरतीच. Syncthing मध्ये सार्वजनिक share links किंवा user accounts नाहीत. त्याच्या web interface मध्ये file contents कधीही दिसत नाहीत, कारण browser ने मागवता येईल अशी केंद्रीय प्रत अस्तित्वात नसते. अधिकृत Android app December 2024 च्या release नंतर बंद करण्यात आले आणि Play Store मधून काढून टाकण्यात आले. त्यामुळे आता फोनसाठीचे support community fork वर अवलंबून आहे. एखाद्याला link पाठवायची असल्यास server आवश्यक आहे. यासाठी Nextcloud किंवा त्यासारखे काहीतरी वापरावे लागेल.
Syncthing backup आहे का?
नाही. प्रकल्पाच्या दस्तऐवजातही हे स्पष्टपणे सांगितले आहे. Deletions आणि modifications प्रत्येक device वर propagate होतात. त्यामुळे चुकून केलेली deletion काही सेकंदांत सर्वत्र नाहीशी होते. प्रत्येक folder साठी file versioning सुरू केल्यास, विशेषतः नेहमी सुरू असलेल्या peer वर Staggered वापरल्यास, .stversions directory द्वारे recovery window मिळते. तरीही हे separate tool ने separate storage वर घेतलेल्या snapshots चा पर्याय नाही.
Syncthing web GUI मध्ये माझ्या files का दिसत नाहीत?
कारण GUI हे sync state साठीचे control panel आहे; ते file browser नाही. त्यात folders, devices, transfer progress आणि conflict counts दिसतात. ते file contents कधीही list किंवा open करत नाही. हे peer to peer design मुळे होते. तुमच्या files तुमच्या devices वर असतात आणि VPS वरील GUI त्या files हलवणारी प्रक्रिया फक्त manage करते.
VPS वर Syncthing साठी कोणते ports उघडे ठेवावे लागतात?
Sync protocol साठी 22000/TCP आणि QUIC transport साठी 22000/UDP आवश्यक आहेत. Port 21027/UDP broadcast आणि multicast द्वारे local discovery वाहून नेतो. हा traffic internet वरून जात नाही. त्यामुळे public server वर तो बंद ठेवा. GUI ला 8384 वर 127.0.0.1 ला bind ठेवा आणि SSH tunnel द्वारे त्याचा वापर करा. तुमच्या provider चा network firewall तसेच ufw तपासा, कारण हे स्वतंत्र controls आहेत.
Syncthing आणि Nextcloud एकाच VPS वर चालवता येतात का?
होय. 2 GB RAM किंवा त्याहून अधिक असलेल्या server वर हे योग्य आहे. त्यांच्या directories स्वतंत्र ठेवा. Nextcloud files ची index त्याच्या database मध्ये तयार करते. त्यामुळे Syncthing ने Nextcloud च्या storage मध्ये लिहिलेली कोणतीही file web interface मध्ये occ files:scan चालत नाही तोपर्यंत दिसणार नाही. एकाच directory मध्ये दोन tools ने लिहिल्यास conflict files देखील तयार होतात. या files ची अपेक्षा दोन्ही tools करत नाहीत.