חלופות ל-Dropbox בניהול עצמי: השוואת פתרונות
מחפשים תחליף ל-Dropbox? נשווה בין Nextcloud, Seafile, Syncthing ואחסון אובייקטים. ננתח עלויות VPS, טופולוגיית סנכרון ונסביר מדוע סנכרון אינו מהווה גיבוי לנתונים שלכם.
איזו חלופה ל-Dropbox בניהול עצמי כדאי להריץ?
ארבע חלופות ל-Dropbox בניהול עצמי ראויות לתשומת לבכם: Nextcloud, Seafile, Syncthing, ואחסון אובייקטים (object storage) עם לקוח מעליו. הן אינן ניתנות להחלפה. Nextcloud מתאים למשק בית או לצוות קטן שבו אנשים אחרים צריכים לקבל קבצים. Seafile מתאים לאדם או לצוות שמסנכרן מספר גדול מאוד של קבצים קטנים, כאשר מהירות הסנכרון חשובה יותר מאשר האופן שבו הנתונים נראים על הדיסק. Syncthing מתאים לאדם שמסנכרן את המכשירים של עצמו, כאשר אין צורך לשלוח קישור לאף גורם חיצוני. אחסון אובייקטים מתאים לארכיון: בתים זולים שפותחים לעיתים רחוקות.
בחרו לפי אופן פעולת הסנכרון לפני שאתם משווים תכונות. רשימות התכונות נראות כולן אותו הדבר. הטופולוגיה, כלומר המכונה שמחזיקה את העותק שכל שאר המכונות מסכימות איתו, היא זו שתקבע אם תהיו מרוצים גם בעוד שישה חודשים.
טופולוגיית סנכרון: שרת מרכזי או עמיתים ללא שרת
קיימים שני תכנונים אפשריים, ורוב ההחלטות בהמשך נגזרות מהבחירה ביניהם.
שרת מרכזי (Server of record). Nextcloud, Seafile ואחסון אובייקטים פועלים בשיטה זו. מכונה אחת, בדרך כלל VPS (שרת וירטואלי פרטי), מחזיקה בעותק הסמכותי. כל מכשיר מתקשר עם אותה מכונה. המחשב הנייד שלכם יכול להיות כבוי במשך חודש, וכשיחזור לפעילות, הוא יתעדכן בעצמו. טלפון עם 6 GB פנויים יכול להחזיק תת-קבוצה של הנתונים, בעוד השרת מחזיק את הכל. דפדפן יכול לגשת לקבצים, וזו הסיבה שניתן ליצור קישורי שיתוף.
עמיתים ללא שרת (Peers with no server). Syncthing פועל בשיטה זו. מכשירים מוצאים זה את זה ומחליפים רשימות קבצים ישירות דרך חיבור מוצפן. אין עותק סמכותי: קובץ קיים רק במכשירים שמחזיקים אותו ולא בשום מקום אחר. שני מכשירים חייבים להיות מחוברים בו-זמנית כדי ששינוי יעבור ביניהם. אין URL שאפשר לתת לאף אחד, מכיוון שאין מכונה שמגישה דף אינטרנט.
ארבע השלכות נובעות מכך, ואלו הן הנקודות שאנשים נתקלים בהן בשלב מאוחר:
- שליחת קובץ לאדם שלא יתקין תוכנה מחייבת שרת מרכזי. קישור הוא URL, ו-URL דורש תהליך שמאזין בפורט.
- גישה לקבצים ממכונה שאינכם שולטים בה, למשל מחשב נייד מהעבודה, מחייבת שרת מרכזי.
- מכשיר שהיה כבוי במשך שבועות מתעדכן מהשרת ברגע שהוא מתעורר. בהגדרת עמיתים (peer), הוא יתעדכן רק כאשר מכשיר אחר שמחזיק את הנתונים נמצא גם הוא אונליין. זו הסיבה שמשתמשי Syncthing רבים מריצים מופע אחד על גבי VPS כעמית שפועל תמיד.
- צריכת האחסון מצטברת אחרת. שרת מרכזי מחזיק עותק מלא אחד, בתוספת מה שכל מכשיר שומר מקומית. ארבעה עמיתים שמשתפים תיקייה אחת מחזיקים ארבעה עותקים מלאים, מכיוון שכל עמית שומר את התיקייה כולה.
Nextcloud: משתמשים, קבוצות וקישורים ציבוריים
Nextcloud הוא יישום אינטרנט מבוסס PHP. הוא מאחסן את הקבצים שלך כקבצים רגילים תחת ספריית נתונים ועוקב אחריהם בתוך מסד נתונים. ניתן לשתף תיקייה עם משתמש, עם קבוצה, או כקישור ציבורי המוגן בסיסמה ובתאריך תפוגה. היסטוריית גרסאות מופעלת כברירת מחדל, וקבצים שנמחקו מועברים תחילה לסל מחזור. לקוחות שולחן עבודה זמינים עבור Linux, macOS ו-Windows, והאפליקציות ל-iOS ו-Android הן רשמיות. אם הסיבה לעזיבת Dropbox היא הצורך של אנשים אחרים לקבל ממך קבצים, זו התשובה הכנה.
המחיר הוא ריבוי רכיבים. התקנה רגילה מריצה שרת אינטרנט, PHP-FPM (מנהל תהליכי ה-PHP), מסד נתונים כגון MariaDB או PostgreSQL, ו-Redis עבור נעילת קבצים. משימת רקע רצה כל חמש דקות מתוך cron או טיימר של systemd. בשרת VPS עם 1 GB זיכרון היישום יעלה, אך העלאה גדולה או פקודת תחזוקה ארוכה מסוג occ ייתקלו ב-out-of-memory killer. התייחסו ל-2 GB כמינימום עבור קומץ משתמשים, וצפו לצורך ב-4 GB ברגע שתפעילו אפליקציות נוספות. מחיר נוסף הוא שדרוגים: אפליקציות מחנות האפליקציות בנויות עבור גרסת ליבה ספציפית, לכן יש לוודא שהאפליקציות שאתם מסתמכים עליהן תומכות בגרסה הראשית הבאה לפני ביצוע השדרוג.
Nextcloud מאט כאשר חשבון אחד מחזיק מאות אלפי קבצים קטנים, כיוון שכל קובץ הוא שורה בטבלת מטמון הקבצים וקובץ אמיתי על הדיסק, ולקוח שולחן העבודה סורק אותם אחד אחד. בקנה מידה ביתי בעיה זו אינה מתעוררת. גודל השרת, TLS (אבטחת שכבת תעבורה) וגיבויים מכוסים ב-התקנת Nextcloud מבוססת Docker עם TLS וגיבויים, שזה המקום אליו כדאי לפנות ברגע שהחלטתם.
אזהרה אחת בנוגע להיקף השימוש: Nextcloud ינהל גם את היומן, אנשי הקשר, ההערות וספריית התמונות שלכם, וכל אפליקציה שתפעילו מוסיפה עבודת רקע ועוד גורם שעלול לחסום שדרוג. אם תמונות הן הבעיה האמיתית, כלי ייעודי יטפל בהן טוב יותר: ראו Immich כתחליף עצמאי ל-Google Photos. אם מסמכים וויקי הם הבעיה האמיתית, בדקו את חלופות Notion לאירוח עצמי במקום להעמיס אפליקציות על שרת הקבצים שלכם.
Seafile: מותאם למספר רב מאוד של קבצים קטנים
Seafile מפצל כל קובץ לבלוקים ומאחסן אותם במאגר אובייקטים פנימי הממוען לפי hash של התוכן, רעיון דומה לזה שבו משתמש git עבור האובייקטים שלו. יחידת הסנכרון והשיתוף היא ספרייה (library) ולא עץ תיקיות. מכיוון שהלקוח מעלה בלוקים ו־commit אחד במקום בקשה אחת לכל קובץ, סנכרון של תיקייה המכילה 100,000 קבצים קטנים מסתיים מהר הרבה יותר מאשר בפרוטוקול המבוסס על קובץ בודד. בלוקים זהים נשמרים פעם אחת בלבד, כך שעותק שני של קובץ גדול כמעט אינו תופס נפח נוסף.
המחיר הוא שהקבצים שלכם בשרת מפסיקים להיות קבצים במובן המקובל. אם תפתחו את תיקיית האחסון, תמצאו קובצי אובייקטים עם שמות הקסדצימליים. שליפת נתונים החוצה מחייבת שימוש בלקוח של Seafile, או בכלי הייצוא וה־fsck המובנים של Seafile. גיבויים עדיין עובדים, שכן האובייקטים הללו הם קבצים רגילים, אך לא ניתן לשחזר גיליון אלקטרוני בודד באמצעות cp. החליטו כעת אם זה מקובל עליכם, שכן זהו המאפיין שאנשים מתחרטים עליו מאוחר יותר.
Seafile מפיצה גרסת קהילה (community edition) וגרסה מקצועית בתשלום (professional edition), וההבדלים ביניהן משתנים בין גרסאות, לכן קראו את התנאים העדכניים באתר שלהם לפני שאתם מתכננים עבודה צוותית סביב תכונה ספציפית. קיימים לקוחות רשמיים לשולחן העבודה ולמובייל. ספריות מוצפנות עוברות הצפנה בצד הלקוח, כך שהשרת מאחסן טקסט מוצפן שאין לו אפשרות לקרוא. אם תאבדו את סיסמת הגישה, הספרייה לא תהיה קריאה, גם לא עבורכם. פתיחת ספרייה מוצפנת בדפדפן משמעותה מסירת סיסמת הגישה לסשן ה־web, לכן הגרסה החזקה ביותר של הבטחה זו תקפה בלקוחות שולחן העבודה והמובייל בלבד.
עלות המשאבים קרובה לזו של Nextcloud. אתם מריצים מסד נתונים, מטמון זיכרון (memory cache) ושני תהליכי יישום, לכן 2 GB הוא שוב רף המינימום הסביר.
Syncthing: אין צורך בהתחברות
Syncthing הוא קובץ בינארי יחיד שנכתב ב-Go. הוא מנטר תיקיות, מאתר עמיתים דרך שרת גילוי או ממסר (relay), ומסנכרן נתונים ישירות בין התקנים. אין בו חשבונות משתמש ואין דף התחברות עבור האנשים שאיתם אתם מסנכרנים. אתם מבצעים צימוד בין שני התקנים באמצעות מזהה (ID) ומאשרים את התיקייה בכל צד. זהו השירות שדורש את מינימום העבודה להפעלה מבין כל האפשרויות כאן, כיוון שיש מעט מאוד רכיבים להריץ.
מה שאתם מוותרים עליו הוא כל עמודת השיתוף. הערך שלה הוא Device pairing only, no links. לא ניתן להעביר קישור ללקוח, לרואה חשבון או לקרוב משפחה. פער נוסף הוא המובייל: Android app, no official iOS. ה-FAQ של הפרויקט מצהיר על כך ישירות: "אין לצוות Syncthing הנוכחי תוכניות לתמוך רשמית ב-iOS בעתיד הנראה לעין", כיוון ש-iOS מגבילה תהליכי רקע במידה שמקשה על סנכרון אמין. משתמשי iOS נותרים עם אפליקציות צד-שלישי.
צריכת המשאבים נמוכה, עם נקודה אחת שכדאי להכיר. Syncthing שומר רשומה באינדקס עבור כל קובץ שהוא מסנכרן, לכן צריכת הזיכרון וזמן הסריקה הראשוני גדלים בהתאם למספר הקבצים ולא בהתאם לנפח הכולל. חישוב ה-hash של תיקייה גדולה בפעם הראשונה ינצל את ה-CPU למשך זמן מה, ולאחר מכן יתייצב. בתוכנית ה-VPS הקטנה ביותר הוא פועל בנוחות.
קונפליקטים מטופלים על ידי שמירת שני העותקים. כאשר שני התקנים משנים את אותו קובץ בזמן שהם אינם יכולים לראות זה את זה, Syncthing משנה את השם של עותק אחד ושומר אותו לצד השני, כך שתמצאו קבצים כמו notes.sync-conflict-20260802-141530-K7MB3QT.md. שום דבר לא הולך לאיבוד. שום דבר גם לא ממוזג אוטומטית, ואתם פותרים את הקונפליקט ידנית.
אחסון אובייקטים עם לקוח: בייטים זולים, לא תיקיית סנכרון
אחסון אובייקטים משמעו bucket תואם S3 (שירות אחסון פשוט), בין אם הוא מאוחסן עצמית באמצעות MinIO או מושכר מספק. הגישה אליו מתבצעת באמצעות כלי: rclone משורת הפקודה, או לקוח שולחן עבודה שמציג את ה-bucket ככונן. שיתוף מתבצע באמצעות presigned URL, קישור שאתם מייצרים הנושא זמן תפוגה משלו. ניהול גרסאות הוא הגדרה ברמת ה-bucket: Bucket versioning, off by default, לכן הפעילו אותו בעת יצירת ה-bucket, שכן הוא אינו חל על אובייקטים שהעליתם קודם לכן.
התייחסות ל-bucket כאל תיקיית סנכרון היא המקום שבו דברים משתבשים. כברירת מחדל, שום דבר לא עוקב אחר ספריית ה-Documents שלכם. rclone bisync מבצע סנכרון דו-כיווני, והתיעוד של rclone עצמו מבהיר את רמת הזהירות הנדרשת. מה שאחסון אובייקטים עושה היטב הוא לשמש כשכבת תשתית: יעד לגיבוי, או שכבת האחסון מאחורי יישום. אחסון אובייקטים תואם S3 מאוחסן עצמית עם MinIO מכסה את הצד של השרת.
עלות המשאבים כאן אינה שגרתית. MinIO הוא קובץ בינארי יחיד וצריכת המשאבים שלו במצב המתנה נמוכה. העלות שאתם משלמים בפועל היא עבור הדיסק, וב-VPS המשמעות היא נפח אחסון (block volume) המושכר לפי גיגה-בייט, בתוספת רוחב הפס שאתם מנצלים להעברת אובייקטים פנימה והחוצה. אף אחד מאלה לא מופיע ב-free -h, לכן קראו את מה העלות האמיתית של VPS לחודש לפני שאתם קובעים את גודל הארכיון.
השוואה בין שיתוף, לקוחות ניידים וניהול גרסאות
The data behind this chart
[
{
"tool": "Nextcloud",
"sharing": "Public links, users and groups",
"mobile": "Official iOS and Android apps",
"versioning": "On by default, plus trash"
},
{
"tool": "Seafile",
"sharing": "Public links with password and expiry",
"mobile": "Official iOS and Android apps",
"versioning": "Library history and snapshots"
},
{
"tool": "Syncthing",
"sharing": "Device pairing only, no links",
"mobile": "Android app, no official iOS",
"versioning": "Optional per folder, off by default"
},
{
"tool": "Object storage",
"sharing": "Presigned URLs you generate",
"mobile": "Third party clients only",
"versioning": "Bucket versioning, off by default"
}
]כל 4 האפשרויות מתחלקות לאורך ציר אחד. שלוש מהן מאפשרות להעביר קובץ לאדם זר שברשותו דפדפן בלבד. אחת מהן מתקשרת אך ורק עם מכשירים שבבעלותך. רכיב ניהול הגרסאות של Seafile, Library history and snapshots, ראוי לציון מיוחד: ההיסטוריה נשמרת ברמת ה-library, לכן מחיקת library מוחקת גם את ההיסטוריה שלה.
חילוץ הנתונים שלכם
עלות היציאה היא נמוכה לבדיקה כעת, אך יקרה לגילוי בשלב מאוחר יותר; לכן, בדקו אותה לפני שתתחייבו.
Nextcloud מאחסן קבצים אמיתיים בתיקיות אמיתיות, כך ש־tar של תיקיית הנתונים יספק לכם את המסמכים שלכם גם אם היישום לעולם לא יעלה שוב. Syncthing מבצע פעולה דומה בכל צומת (peer), וזהו מנגנון היציאה החזק ביותר כאן: הקבצים פשוט נמצאים על כל מכשיר. אחסון האובייקטים של Seafile דורש את Seafile או את כלי הייצוא שלו כדי להרכיב מחדש את הבלוקים לקבצים. אחסון אובייקטים (Object storage) דורש את rclone או כלי מקביל, וזהו עניין של פקודה אחת בלבד.
סנכרון אינו גיבוי, וזהו הפער שבו אנשים מאבדים נתונים
כל כלי המוזכר כאן מעתיק שינויים בין מכונות. מחיקה היא שינוי. אם תמחקו תיקייה במחשב הנייד שלכם, הלקוח ידווח על כך לשרת, השרת יבצע את הפעולה, וכל מכשיר אחר ימחק את התיקייה גם הוא. תוכנות כופר משתמשות באותו נתיב: הן מצפינות קבצים מקומית, הלקוח מזהה קבצים שעברו שינוי, ומעלה את הגרסאות המוצפנות. הסנכרון פעל כשורה. הנתונים שלכם עדיין אבדו.
סלי מחזור והיסטוריית גרסאות מרככים את הבעיה. עם זאת, להם יש תאריך תפוגה, ניתן לרוקן אותם באמצעות אותו חשבון שביצע את הטעות, והם מאוחסנים על אותו כונן שבו נמצא העותק הפעיל. כשל בכונן יגרום לאובדן הקבצים וההיסטוריה שלהם יחד.
גיבוי הוא עותק נפרד, על חומרה נפרדת, שמתבצע לפי לוח זמנים, ושביצעתם ממנו שחזור לפחות פעם אחת. גבו את מסד הנתונים באותו סבב שבו אתם מגבים את הקבצים. שחזור של ספריית הנתונים של Nextcloud ללא מסד הנתונים שלה יותיר אתכם עם מופע שלא יודע שהקבצים הללו קיימים, וביצוע occ files:scan לאחר מכן ישחזר את הקבצים אך יגרום לאובדן השיתופים והיסטוריית הגרסאות שהיו שמורים בטבלאות אלו. גיבויי restic מתוזמנים משרת VPS מכסה את הגרסה המוצפנת והמנוכה מכפילויות של תהליך זה, כולל כיצד לבצע בדיקת שחזור במקום להניח שהוא יצליח.
מה אני הייתי בוחר
עבור רוב הקוראים כאן, הבחירה היא Nextcloud. מה שאנשים מפספסים לאחר המעבר מ-Dropbox הוא היכולת לשלוח קישור לאדם שלעולם לא יתקין דבר, ופתיחת קובץ בטלפון נייד. Nextcloud מבצעת את שתי הפעולות הללו באמצעות לקוחות רשמיים וללא שכבת תשלום, ו-2 GB של RAM הם מחיר הוגן עבור זה. אני מחזיק בשני חריגים לכלל זה. אם התיקייה שייכת אך ורק לכם ונמצאת רק על חומרה שבבעלותכם, הריצו את Syncthing ותיהנו מכך שאין שרת לתחזק ואין התחברות לאתר לאבטח. אם אתם מסנכרנים תיקיית עבודה עם מאות אלפי קבצים, הריצו את Seafile וקבלו את האחסון האטום (opaque) בתמורה למהירות. אחסון אובייקטים (Object storage) צריך לשמש כיעד הגיבוי מתחת לכל פתרון שתבחרו, ולא ככלי הסנכרון שמוצב בחזית.
FAQ
האם Syncthing משמש כגיבוי למחשב הנייד שלי?
לא. Syncthing מעתיק שינויים בין התקנים, ומחיקה היא שינוי לכל דבר; לכן, קובץ שתמחק בטעות ייעלם מכל ההתקנים המקושרים בתוך שניות. מנגנון גרסאות קבצים לפי תיקייה מסייע בכך, אך הוא כבוי כברירת מחדל עד שתפעיל אותו עבור כל תיקייה. שמור גיבוי אמיתי על חומרה נפרדת, בצע אותו לפי לוח זמנים, ובצע שחזור לפחות פעם אחת כדי לוודא שהתהליך תקין.
האם ניתן להריץ את Nextcloud ואת Syncthing על אותו VPS?
כן, הם מאזינים לפורטים שונים ואינם מתנגשים. אל תפנה תיקיית Syncthing ישירות אל ספריית הנתונים של Nextcloud. Nextcloud עוקב אחר כל קובץ בבסיס נתונים, לכן קבצים שמופיעים על הדיסק מתחתיו יישארו בלתי נראים עד שתריץ את occ files:scan, וקבצים שיוסרו מתחתיו ישאירו רשומות בבסיס הנתונים שמצביעות על מקום ריק. הקצה ל-Syncthing ספרייה משלו, או חבר את הספרייה הזו ל-Nextcloud כ-external storage כדי ש-Nextcloud ידע לסרוק אותה.
איזה מהם מאפשר לי לשתף קישור עם מישהו שאין לו חשבון?
Nextcloud ו-Seafile מאפשרים שניהם יצירת קישורים ציבוריים, עם אפשרות להגדרת סיסמה ותאריך תפוגה. אחסון אובייקטים (Object storage) מספק לך URL חתום מראש שמפסיק לעבוד מעצמו לאחר הזמן שהגדרת. ל-Syncthing אין פתרון לכך. מודל השיתוף שלו מבוסס על צימוד התקנים, לכן הצד השני חייב להתקין את Syncthing, לספק לך מזהה התקן (device ID) ולאשר את התיקייה.
כמה שטח דיסק השרת צריך?
עבור שרת אחסון מרכזי, תכנן לפי הגודל המלא של הנתונים המשותפים, בתוספת מקום להיסטוריית גרסאות וסל מחזור, וכן מרווח עבודה להעלאות פעילות. היסטוריית גרסאות היא המרכיב שאנשים נוטים להמעיט בערכו: שמירה של כל גרסה לקובץ בגודל 2 GB שמשתנה מדי יום תופסת נפח במהירות, לכן הגדר מדיניות שמירה (retention policy) מוקדם ככל האפשר. אחסון הנתונים על כרך (volume) נפרד מונע מהצמיחה הזו להשפיע על מערכת הקבצים של ה-root, שכן דיסק מלא יעצור את השרת כולו ולא רק העלאה אחת.