Syncthing או Nextcloud ל-VPS: איך לבחור נכון?
מתלבטים בין Syncthing ל-Nextcloud עבור ה-VPS שלכם? גלו את ההבדלים בארכיטקטורת ה-P2P מול השרת המרכזי, מתי נדרש PHP ומסד נתונים, ומדוע אף אחד מהם אינו פתרון גיבוי.
Syncthing מול Nextcloud: ההבדל המכריע
ההבדל בין Syncthing לבין Nextcloud מסתכם בהבדל מבני אחד, וכל השאר נובע ממנו. Syncthing מבוססת על ארכיטקטורת peer to peer. כל מכשיר מחזיק את התיקייה בשלמותה, ואף עותק אינו נחשב לגרסה ה"סמכותית" היחידה. Nextcloud היא שרת. מכונה אחת מחזיקה את הקבצים, חשבונות משתמשים מנהלים את הגישה אליהם, והלקוחות מושכים עותקים למכשירים שלהם.
זו הסיבה של-Syncthing אין קישורי שיתוף או תצוגת דפדפן למסמכים. אין עותק מרכזי שיכול להגיש את הקבצים, ולכן אין למה שהדפדפן יפנה. Nextcloud מציעה את שתי האפשרויות, וכדי לעשות זאת היא זקוקה ל-runtime של PHP, לשרת מסד נתונים, לשרת אינטרנט ול-reverse proxy עבור TLS (אבטחת שכבת התעבורה).
בחרו ב-Syncthing כאשר כל המכשירים המעורבים שייכים לכם. בחרו ב-Nextcloud כאשר יש צורך בגישה לקבצים דרך דפדפן או על ידי אדם אחר.
מה ה-VPS עושה בפועל בכל תצורה
VPS שמריץ Nextcloud הוא הבית של הנתונים שלכם. אם תמחקו את העותק המקומי במחשב הנייד, הקובץ עדיין יישאר בשרת, כיוון שהשרת תמיד היה המקור.
VPS שמריץ Syncthing מבצע תפקיד שונה: הוא משמש כעמית (peer) שזמין תמיד. Syncthing מעביר נתונים ישירות בין שני התקנים שנמצאים אונליין באותו רגע. לכן, שני מחשבים ניידים שלעולם אינם דולקים בו-זמנית לעולם לא יסתנכרנו, לא משנה כמה זמן תמתינו. הוספת עמית שלישי על גבי VPS שלעולם אינו נכנס למצב שינה פותרת את הבעיה. מחשב נייד A מעלה נתונים ב-09:00, מחשב נייד B מושך אותם ב-22:00, וה-VPS מחזיק את התיקייה ביניהם.
זהו תפקיד שימושי באמת, והוא מהווה דרישה צנועה יותר מאשר "תחליף ל-Dropbox". Syncthing לעולם לא יספק לכם קישור לשליחה ללקוח. אם זו הדרישה שלכם, עצרו כאן וקראו במקום זאת את סקירת החלופות ל-Dropbox באירוח עצמי.
עלות כל אחד מהם בשרת VPS קטן
Syncthing הוא קובץ בינארי יחיד בשפת Go. הוא מאזין ב-socket, שומר אינדקס של הקבצים בבסיס נתונים מקומי, וזה כל ה-stack. החל מגרסה 2.0, האינדקס מבוסס על SQLite במקום LevelDB, לכן שדרוג מהתקנת 1.x מפעיל תהליך הגירה חד-פעמי בהפעלה הראשונה. בסט תיקיות גדול, ההגירה הזו עלולה להימשך זמן רב. יש לתת לה להסתיים. אין צורך בהתקנת רכיבים נוספים או בביצוע תיקונים (patching).
Nextcloud דורש יותר. נכון לאוגוסט 2026, Nextcloud 35 תומך ב-PHP 8.3 עד 8.5 עם MariaDB או PostgreSQL ברקע, ומוגש על ידי Apache 2.4 או nginx עם php-fpm. המדריך למנהל מערכת ממליץ על "מינימום של 512MB RAM לכל תהליך", ו-php-fpm מריץ כמה תהליכי עבודה (worker processes) במקביל.
בשרת VPS עם 1 GB RAM, Syncthing פועל בנוחות בעוד ש-Nextcloud נמצא בקושי. זה לא הופך את Nextcloud לבחירה שגויה. זה הופך אותו למחויבות גדולה יותר, עם ארבעה רכיבים שיש לעדכן במקום אחד. נתיב ה-container ב-מדריך Nextcloud על VPS המכסה Docker, TLS וגיבויים הוא הדרך הפחות מכאיבה לשאת בנטל הזה. הוספת עריכת מסמכים מבוססת דפדפן מעלה את רף הדרישות פעם נוספת, וזה מה ש-השוואת OnlyOffice ו-Collabora מפרטת עבור שרת עם 2 עד 4 GB RAM.
התקנת Syncthing על ה-VPS
הפצת Ubuntu כוללת חבילת syncthing, אך היא מפגרת משמעותית אחרי הגרסה הרשמית. השתמשו במאגר (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 --versionהפקודה syncthing --version אמורה להדפיס שורה המתחילה ב-syncthing v2. אם מופיע שם v1, המשמעות היא ש-apt עדיין מעדיף את חבילת ההפצה. בצעו Pinning למאגר הרשמי כדי לתת לו עדיפות והתקינו שוב.
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. התקנות שבוצעו לפני גרסה 1.27 של Syncthing שומרות אותם ב-~/.config/syncthing, לכן בדקו את שני הנתיבים לפני העתקת נתונים בין מכונות.
לאחר מכן, פתחו את הפורטים. Syncthing משתמש ב-22000/TCP עבור פרוטוקול הסנכרון, ב-22000/UDP עבור תעבורת QUIC, וב-21027/UDP עבור גילוי מקומי (local discovery). גילוי מקומי משתמש ב-broadcast ו-multicast, שאינם עוברים דרך האינטרנט, לכן ב-VPS עליכם לפתוח רק את שני הראשונים.
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusהפקודה ufw status אמורה להציג את שני החוקים. אם היא מדפיסה Status: inactive, המשמעות היא ש-ufw אינו מסנן דבר וכי ה-firewall של ספק השרת הוא היחיד שפעיל. בדקו גם את לוח הבקרה של ספק השרת, שכן ברוב המקרים מדובר במנגנון נפרד. מכשיר מרוחק שנתקע במצב Disconnected בזמן שהשירות רץ, מעיד בדרך כלל על כך שאחד משני ה-firewalls הללו עדיין חסום.
גישה לממשק הגרפי של Syncthing ללא חשיפתו לרשת
ממשק הניהול הגרפי (GUI) מאזין כברירת מחדל ל-127.0.0.1:8384, ולכן הוא מגיב רק לבקשות שמגיעות מהשרת עצמו. הגדרה זו מספקת הגנה, שכן הממשק כולל מפתח API המאפשר לשנות את נתיבי כל התיקיות במערכת.
אל תחשפו את הממשק לאינטרנט כצעד ראשון. התיעוד מבהיר היטב את המשמעות של קישור לכתובת רשת: "ציון כתובת ה-LAN של המחשב לא תגביל את הגישה למכשירים ברשת המקומית בלבד!". במקום זאת, בצעו העברת פורטים (port forwarding) באמצעות SSH מהמחשב האישי שלכם.
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.exampleפתחו את http://127.0.0.1:8384 בדפדפן המקומי שלכם בזמן שהסשן פעיל. המנהרה נסגרת עם סיום סשן ה-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 לקרוא את הסיסמה מהקלט הסטנדרטי (stdin), מה שמונע את שמירתה בהיסטוריית הפקודות של ה-shell, והערך עובר גיבוב (hashing) לפני כתיבתו לקובץ. הפעילו HTTPS בהגדרות הממשק ברגע שתצליחו להתחבר.
מדוע Syncthing מפיץ את הטעויות שלכם
ה-FAQ של Syncthing עונה על שאלת הגיבוי בעצמו: "Syncthing אינו יישום גיבוי אידיאלי, כיוון שכל שינוי בקבצים שלכם (עריכות, מחיקות וכו') יופץ לכל המכשירים שלכם."
אם תמחקו תיקייה בטעות מהמחשב הנייד, Syncthing יפעל בדיוק כפי שתוכנן. הוא ימחק את התיקייה הזו בכל מקום, בתוך שניות. סנכרון משמעו הסכמה, והסכמה כוללת גם הסכמה לכך שקובץ איננו עוד.
גרסאות קבצים (File versioning) הן פתרון ההקלה, אך הן כבויות אלא אם תפעילו אותן. התיעוד מציין כי ברירת המחדל של גרסאות היא "no file versioning", כלומר לא נשמרים עותקים ישנים של קבצים. קיימות ארבע אסטרטגיות לכל תיקייה. Trash Can שומר עותק אחד של כל קובץ שנמחק או הוחלף עקב שינוי מרחוק. Simple שומר מספר מוגדר של גרסאות ישנות לכל קובץ. Staggered מדלל את ההיסטוריה ככל שהיא מתיישנת, ושומר עותקים שעתיים ליום אחד, עותקים יומיים לחודש, וכן הלאה. External מעביר את ההחלטה לפקודה שתכתבו בעצמכם. עותקים ישנים נכנסים לספריית .stversions בתוך התיקייה המשותפת.
הגדירו Staggered בשרת ה-VPS והשאירו את המחשבים הניידים ללא גרסאות. כך השרת שפועל תמיד נושא את ההיסטוריה, והמחשבים הניידים נשארים רזים.
Nextcloud מטפל בכך טוב יותר, אך עדיין אינו מהווה גיבוי. קבצים שנמחקו עוברים לסל מחזור, ועריכות נשמרות על ידי אפליקציית Versions, אך שניהם מצומצמים אוטומטית ככל שהדיסק מתמלא. תהליך במחשב הנייד שמצפין קבצים יסנכרן את הגרסאות המוצפנות הללו למעלה, והעותקים התקינים יוסרו לפי לוח הזמנים שלהם.
כל אחד מהכלים הללו זקוק לגיבוי אמיתי מתחתיו: snapshots שמתבצעים על ידי תוכנית נפרדת, שנכתבים למקום שאליו לקוח הסנכרון אינו יכול להגיע, וששוחזרו לפחות פעם אחת כדי לוודא שהשחזור עובד. השוואת restic ו-BorgBackup מכסה באיזה מהם כדאי להשתמש עבור ספריית הנתונים.
ההבדלים בטיפול בהתנגשויות בין שני הכלים
שני הכלים יוצרים קובץ התנגשות כאשר שני צדדים משנים את אותו הקובץ בין סנכרונים. ההבדל טמון בשאלה מי רואה את ההתנגשות.
Syncthing משנה את שמו של העותק המפסיד ל-<filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>. העותק בעל זמן השינוי המוקדם יותר הוא המפסיד. כאשר זמני השינוי זהים, המכשיר בעל הערך הגבוה יותר ב-63 הביטים הראשונים של מזהה המכשיר (device ID) שלו מפסיד; מדובר בבחירה שרירותית, אך היא עקבית בכל הצמתים. לאחר מכן מגיע החלק שמשתמשים רבים אינם מוכנים אליו: קבצים אלו "מטופלים כקבצים רגילים לאחר יצירתם, ולכן הם מופצים בין מכשירים". כל צומת מקבל את עותק ההתנגשות. ניקוי ההתנגשות דורש מחיקה אחת שמסתנכרנת החוצה, אך תחילה תראו את הקובץ בכל המחשבים שלכם.
לקוח שולחן העבודה של 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 מתעלם מכל מה שה-cluster שולח. השתמשו בו במקום שבו התקן אמור רק לפרסם מידע. כאשר התיקייה יוצאת מסנכרון, ה-GUI מציג כפתור אדום בשם "Override Changes", אשר דוחף את המצב המקומי לכל שאר ההתקנים.
- Receive Only מחיל שינויים מה-cluster ולעולם לא שולח עריכות מקומיות בחזרה. השתמשו בו ב-VPS שמתפקד כארכיון. עריכות מקומיות שם יגרמו להופעת כפתור אדום בשם "Revert Local Changes".
תיקיית Receive Only ב-VPS עם הגדרת Staggered versioning מופעלת מעניקה לכם מראה (mirror) עם גרסאות. מחיקה במחשב נייד עדיין תתבצע, כיוון שמחיקה היא שינוי לגיטימי ב-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."
}
]עיינו בשורה הראשונה. סנכרון בין שני מחשבים ניידים שבבעלותכם מצביע על Syncthing, וזהו המקרה שבו שרת VPS מצדיק את קיומו כצומת שתמיד זמין. כל שורה הכוללת דפדפן, קישור או אדם אחר מצביעה על הכיוון ההפוך.
אם Nextcloud ממשיך לנצח אך טביעת הרגל שלו מדאיגה אתכם, השוואה בין Seafile לבין Nextcloud היא הדבר הבא שכדאי לקרוא, כיוון ש-Seafile שומר על מודל השרת עם מנוע סנכרון שונה בבסיסו.
הרצת שניהם על אותו VPS
הם אינם מוציאים זה את זה. שימוש ב-Syncthing להעברת קבצים בין המכונות האישיות שלך בזמן ש-Nextcloud מטפל בשיתוף וביומנים הוא סידור נפוץ.
כלל אחד אם אתה עושה זאת: לעולם אל תפנה את Syncthing לספריית הנתונים של Nextcloud. Nextcloud עוקב אחר כל קובץ במסד הנתונים שלו, לכן קבצים שמופיעים בדיסק ממקור חיצוני נשארים בלתי נראים בממשק האינטרנט עד שעדכון מסד הנתונים יסתיים. מתוך ספריית ההתקנה של Nextcloud:
sudo -u www-data php occ files:scan --allהפקודה הזו מדפיסה את מספר הקבצים והתיקיות שנסרקו. הרצתה לפי טיימר היא פתרון עוקף, לא תכנון נכון. תן לכל כלי ספרייה משלו. אם אתה עדיין מחליט מה בכלל צריך להיות על השרת, המדריך למה לארח עצמאית ב-2026 הוא נקודת התחלה טובה יותר מאשר בחירת כלי סנכרון תחילה.
FAQ
האם Syncthing יכול להחליף את Dropbox?
רק עבור החלק שבו המכשירים האישיים שלך נשארים מסונכרנים. ל-Syncthing אין קישורי שיתוף ציבוריים ואין חשבונות משתמש, וממשק האינטרנט שלו לעולם לא מציג את תוכן הקבצים, כיוון שאין עותק מרכזי שדפדפן יכול לבקש. האפליקציה הרשמית ל-Android הופסקה לאחר השחרור של דצמבר 2024 והוסרה מ-Play Store, לכן התמיכה בטלפונים תלויה כעת בגרסת קהילה (fork). אם עליך לשלוח למישהו קישור, עליך להשתמש בשרת, מה שאומר Nextcloud או פתרון דומה.
האם Syncthing הוא כלי לגיבוי?
לא, והפרויקט מצהיר על כך במפורש. מחיקות ושינויים מופצים לכל המכשירים, כך שמחיקה בשוגג נעלמת מכל מקום בתוך שניות. הפעלת גרסאות קבצים (file versioning) לכל תיקייה, ובמיוחד מצב Staggered על עמית (peer) שפועל תמיד, מעניקה לך חלון שחזור דרך ספריית ה-.stversions. זה אינו תחליף ל-snapshots שמבוצעים על ידי כלי נפרד לאחסון נפרד.
מדוע איני יכול לראות את הקבצים שלי ב-GUI של Syncthing?
מכיוון שה-GUI הוא לוח בקרה למצב הסנכרון, ולא סייר קבצים. הוא מציג תיקיות, מכשירים, התקדמות העברה ומספר התנגשויות, והוא לעולם לא מפרט או פותח את תוכן הקבצים. זה נובע מהתכנון של peer to peer: הקבצים שלך נמצאים על המכשירים שלך, וה-GUI ב-VPS רק מנהל את התהליך שמעביר אותם.
אילו פורטים Syncthing צריך לפתוח ב-VPS?
פורט 22000/TCP עבור פרוטוקול הסנכרון ופורט 22000/UDP עבור תעבורת QUIC. פורט 21027/UDP משמש לגילוי מקומי (local discovery) באמצעות broadcast ו-multicast, שאינם עוברים דרך האינטרנט, לכן יש להשאיר אותו סגור בשרת ציבורי. השאר את ה-GUI בפורט 8384 כשהוא מאזין ל-127.0.0.1 וגש אליו דרך מנהרת SSH. בדוק את ה-firewall של ספק השרת וגם את ufw, כיוון שמדובר בבקרות נפרדות.
האם ניתן להריץ את Syncthing ו-Nextcloud על אותו VPS?
כן, וזה סביר בשרת עם 2 GB של RAM או יותר. שמור על הספריות שלהם נפרדות. Nextcloud מאנדקס קבצים בבסיס הנתונים שלו, לכן כל מה ש-Syncthing כותב לתוך האחסון של Nextcloud יישאר בלתי נראה בממשק האינטרנט עד להרצת occ files:scan. שני כלים שכותבים לאותה ספרייה גם יוצרים קובצי התנגשות שאף אחד מהם לא מצפה להם.