PhotoPrism לעומת Immich: איזה שרת תמונות לבחור?
השוואה מעשית בין PhotoPrism ל-Immich: דרישות ה-RAM בפועל, אפליקציות הטלפון, מפות ופקודות הגיבוי המדויקות לכל שרת ב-VPS.
PhotoPrism לעומת Immich: התשובה הקצרה
PhotoPrism לעומת Immich היא בחירה בין שתי משימות שונות, ולא בין שתי גרסאות של אותו מוצר. Immich מחליף את Google Photos: אפליקציה בטלפון מגבה את גליל המצלמה באופן אוטומטי, וציר הזמן שמתקבל מוכר לכל מי שעובר מגלריה בטלפון. PhotoPrism מארגן ספריית תמונות שכבר קיימת אצלכם: הוא מוסיף לאינדקס תיקיות של קבצים בדיסק, קורא את המטא-נתונים שלהם, מציג אותם על מפה ומשאיר את הקבצים בדיוק במקומם.
בחרו ב-Immich אם הבעיה היא "הטלפון שלי מלא ואני רוצה להפסיק להשתמש ב-Google Photos". בחרו ב-PhotoPrism אם הבעיה היא "יש לי 400 GB של תמונות בכונן, ואני לא מצליח למצוא בהן דבר". שניהם בקוד פתוח, שניהם פועלים כמכולות Docker ב-VPS רגיל, ושניהם מוסיפים את הספרייה שלכם לאינדקס ומאפשרים לחפש בה בלי לשלוח דבר לצד שלישי.
הפיצול בין הגישות, ומדוע הוא קובע הכול
Immich מנהלת את הקבצים. מציינים בפניה מיקום להעלאות, אפליקציית הטלפון או כלי ההעלאה באינטרנט מעבירים אליה את הקבצים המקוריים, ו-Immich מאחסנת אותם בנתיב משלה ובשמות משלה. מסד הנתונים מכיל את המידע הקובע לגבי אלבומים, פנים וחיפוש. תכנון זה הוא שמאפשר חוויית שימוש טובה בטלפון, משום שהשרת יודע תמיד את המצב המלא של כל נכס.
PhotoPrism קוראת את הקבצים. מחברים אליה תיקיית originals שכבר נמצאת בשליטתכם, ו-PhotoPrism בונה עליה אינדקס. עץ התיקיות נשאר שלכם. אם תסירו את PhotoPrism מחר, התמונות יישארו שם באותן תיקיות ובאותם שמות, ו-PhotoPrism תכתוב לצדן קובצי YAML נלווים שמתארים את המידע שלמדה.
הבדל יחיד זה מסביר את רוב ההבדלים האחרים. ל-Immich יש תמיכה חזקה במכשירים ניידים, משום שהיא שולטת בקליטת הקבצים. ל-PhotoPrism יש יכולות חזקות לארגון ספריית תמונות, משום שהיא אינה מתנגשת במבנה הקיים שלכם. Immich היא הבחירה המתאימה יותר למשפחה שהתמונות שלה נמצאות בטלפונים. PhotoPrism היא הבחירה המתאימה יותר לארכיון שנמצא בדיסק.
דרישות חומרה: Immich דורש יותר
הדרישות המתועדות לזיכרון שונות מאוד זו מזו, וב־VPS קטן זה בדרך כלל הגורם המכריע.
The data behind this chart
[
{
"label": "Immich",
"min_ram_gb": 6,
"recommended_ram_gb": 8
},
{
"label": "PhotoPrism",
"min_ram_gb": 3,
"recommended_ram_gb": 4
}
]Immich מתעד 6 GB של RAM כדרישה מינימלית ו־8 GB כדרישה מומלצת. מצוין גם שמחשב עם 4 GB יכול להפעיל אותו רק כאשר למידת המכונה מושבתת. PhotoPrism מתעד 3 GB של זיכרון פיזי ושתי ליבות CPU, ומציין שכמות ה־RAM צריכה להתאים למספר הליבות.
הפער אמיתי, והוא נובע ממכל ה־machine learning. Immich מפעיל את המודלים שלו בשירות immich-machine-learning נפרד, שטוען לזיכרון את CLIP (contrastive language image pretraining) ואת המודלים לזיהוי פנים. במחשב עם 2 GB, הליבה מסיימת את המכל הזה, והוא מסתיים בקוד 137. כך נראה ב־Docker תהליך שהסתיים בגלל מחסור בזיכרון. המודלים של TensorFlow ב־PhotoPrism קטנים יותר, והמערכת מפחיתה יכולות במקום להפסיק לפעול: במחשבים עם 1 GB או פחות היא משביתה המרת RAW ואת TensorFlow במקום לקרוס.
שני הפרויקטים דורשים swap. התיעוד של PhotoPrism מציין במפורש שיש להקצות לפחות 4 GB של swap בשרת. יש להוסיף אותו לפני התקנת אחד מהם.
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -hfree -h אמור להציג כעת שורת Swap: ובה 4.0Gi. אם הוא מציג 0B, המשמעות היא ש־swapon נכשל, בדרך כלל משום שמערכת הקבצים אינה תומכת ב־fallocate, ו־sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 משמש כחלופה. גם מגבלות הזיכרון של מכלים חשובות כאן, והגדרת מגבלות זיכרון ב־Docker Compose היא הדרך למנוע משירות אחד שצורך משאבים רבים להפיל את השרת כולו.
דרישה נוספת גורמת לבעיות אצל משתמשים רבים. מסד הנתונים של Postgres ב־Immich חייב להימצא במערכת קבצים רגילה של Unix, עם בעלות והרשאות אמיתיות, ובאחסון מקומי. אין להציב אותו בשיתוף רשת. PhotoPrism מציין את אותה דרישה לגבי קובצי מסד הנתונים שלו. אין להפעיל אף אחד מהיישומים כאשר מסד הנתונים שלו נמצא באחסון אובייקטים המחובר כמערכת קבצים.
כיצד להתקין כל אחד מהם
שתי ההתקנות כוללות קובץ compose של הספק ופקודה אחת. הגדירו תחילה את Docker Engine ואת התוסף Compose, כפי שמתואר ב־מדריך שלנו ל־Docker Compose ב־VPS.
Immich מפרסם את קובץ ה־compose שלו ואת קובץ הסביבה לדוגמה בכל גרסה חדשה.
sudo mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.envערכו את .env לפני שתתחילו. UPLOAD_LOCATION הוא המיקום שבו יישמרו הקבצים המקוריים, ויש לשנות את DB_PASSWORD מערך ברירת המחדל באמצעות התווים A-Za-z0-9 בלבד, משום שתווים מיוחדים פוגעים במחרוזת החיבור. לאחר מכן הפעילו אותו.
docker compose up -d
docker compose psממשק האינטרנט זמין בפורט 2283. החשבון הראשון שנרשם דרך הדף הופך לחשבון המנהל. לכן עברו אליו ורשמו את החשבון מיד, במקום להשאיר מופע פתוח חשוף לאינטרנט.
PhotoPrism מופץ עם קובץ compose אחד שכבר כולל את MariaDB.
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlפתחו את compose.yaml ושנו את PHOTOPRISM_ADMIN_PASSWORD לפני ההפעלה הראשונה. התיעוד מציין זאת במפורש: היישום מופעל עם סיסמת הפתיחה שמוגדרת בקובץ, האורך המינימלי הוא 8 תווים, ואסור להשתמש בערך ברירת המחדל בשרת ציבורי. הגדירו באותו זמן את אמצעי האחסון originals לתיקייה שבה נמצאים התמונות שלכם.
docker compose up -d
docker compose logs -f photoprismPhotoPrism זמין בפורט 2342 עם המשתמש admin. אין לחשוף אף אחד מהיישומים ישירות. הציבו לפניו reverse proxy עם TLS (אבטחת שכבת התעבורה), בתצורה דומה לזו המשמשת עבור Nextcloud באירוח עצמי עם Docker, TLS וגיבויים.
איזו מהן מציעה אפליקציה טובה יותר לטלפון
כאן הפער בין שני הפרויקטים הגדול ביותר, וזו הסיבה שרוב האנשים בוחרים בסופו של דבר ב-Immich.
Immich משחררת אפליקציות רשמיות עבור Android ו-iOS. הן מגבות את גלריית התמונות ברקע, כך שתמונות חדשות עוזבות את הטלפון בלי שאיש יצטרך לפתוח דבר. האפליקציה דורשת נקודת קצה מסוג HTTPS, לכן reverse proxy אינו אופציונלי אם בכוונתכם להשתמש בה מחוץ לבית.
ל-PhotoPrism אין אפליקציה מקורית רשמית. הפרויקט מספק progressive web app, שאותה מוסיפים למסך הבית דרך הדפדפן, ומתעד את WebDAV (web distributed authoring and versioning) כשיטה לסנכרון מטלפון. הפרויקט ממליץ להשתמש לשם כך באפליקציה של צד שלישי בשם PhotoSync, המוגדרת מול הספרייה /import/ או /originals/ דרך WebDAV. השיטה פועלת, אך מדובר באפליקציה בתשלום של צד שלישי שמבצעת פעולה ש-Immich מבצעת בתוך הלקוח שלה.
אם גיבוי אוטומטי של תמונות מהטלפון עבור כמה בני משפחה הוא הדרישה, ההחלטה ברורה: Immich.
מה למידת המכונה מספקת בפועל
Immich מבצע חיפוש סמנטי בספרייה באמצעות CLIP. לכן שאילתה כמו "אופניים אדומים בשלג" מוצאת תמונות שאיש מעולם לא הוסיף להן תגיות. הוא גם מזהה פנים, מקבץ אותן ומאתר כפילויות. יצירת האינדקס לייבוא גדול באמצעות CPU נמשכת שעות ופועלת ברקע. זה תקין ואינו מצריך GPU (יחידת עיבוד גרפי).
PhotoPrism מסווג תמונות באמצעות TensorFlow לתוויות, מזהה פנים ומקבץ אותן לאנשים. הוא גם קורא מטא-נתונים של מיקום כדי ליצור מפת מקומות. המפה היא התכונה שבגללה משתמשים נשארים: ספרייה שמאונדקסת לפי המקום שבו התמונות צולמו מספקת דרך שונה לחלוטין לעיין בעשרים שנות תמונות. זיהוי פנים כלול במהדורת Community החינמית. החברויות בתשלום Essentials ו-Plus מוסיפות תכונות כגון שכבות מפה עשירות יותר, תפקידי משתמשים נוספים וממשק לניהול משתמשים. נכון ל-July 2026, המחיר מתחיל בכמה אירו בחודש.
Immich חינמי לחלוטין ואינו כולל מסלול בתשלום. ליבת PhotoPrism חינמית, עם תוספות בתשלום לפי בחירה.
גיבויים קובעים אם תשמרו עליו
שרת תמונות ללא גיבוי עלול לאבד את כל התמונות של המשפחה בעקבות כשל בדיסק אחד בלבד. שתי האפליקציות דורשות שני גיבויים: של מסד הנתונים ושל הקבצים.
עבור Immich, יש לבצע dump של מסד הנתונים ממכל ה-Postgres ולהעתיק את מיקום ההעלאות.
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzלאחר מכן יש לגבות את UPLOAD_LOCATION. התיקיות המכילות נתונים שאי אפשר להחליף הן upload, library ו-profile. ניתן ליצור מחדש את התיקיות thumbs ו-encoded-video, אך הדבר ידרוש שעות של זמן CPU. dump של מסד הנתונים לבדו אינו משחזר דבר, משום שהוא מכיל מטא-נתונים בלבד.
עבור PhotoPrism, לאינדקס יש פקודה ייעודית.
docker compose exec photoprism photoprism backup -i -fפקודה זו כותבת dump של SQL תחת storage/backup/. לאחר מכן יש להעתיק את התיקייה originals ואת התיקייה storage. מכיוון ש-PhotoPrism כותב גם קובצי YAML נלווים המתארים כל תמונה, ניתן לבנות מחדש אינדקס שאבד רק מהקבצים. זהו יתרון משמעותי עבור ארכיון שמתכננים לשמור במשך עשרות שנים.
לא משנה במה תבחרו, יש להעביר את הגיבויים אל מחוץ לשרת לפי לוח זמנים, באמצעות גיבויי restic מוצפנים ומונעי כפילויות לאחסון מרוחק. גיבוי שנמצא באותו דיסק שבו נמצאת ספריית התמונות אינו גיבוי.
במה כדאי להשתמש
הפעילו את Immich אם התמונות שלכם נמצאות בטלפונים, אם יותר מאדם אחד צריך לגבות גליל צילום, ואם ניתן להקצות לשרת 6 GB של RAM או יותר. זהו הפתרון הקרוב ביותר ל-Google Photos שאפשר לארח בעצמכם, והחוויה בנייד היא המוקד שלו. המדריך המפורט שלנו להתקנת Immich שלב אחר שלב מסביר בהרחבה את הפסקות השירות עקב מחסור בזיכרון ואת המלכודות בשדרוגים.
הפעילו את PhotoPrism אם כבר יש לכם ארכיון תמונות בדיסק, אם חשובים לכם מפות ומטא-נתונים ושמירה על מבנה התיקיות שלכם, או אם ל-VPS שלכם יש 4 GB של RAM ואתם מעדיפים ספרייה שפועלת על פני ספרייה שמסתמכת על החלפת זיכרון. זהו כלי האוצרות המתאים יותר, והוא מעמיס פחות על חומרה חלשה.
אפשר גם להפעיל את שניהם. Immich מטפל בייבוא היומי מהטלפון, ופעם בשנה תוכלו למיין את התמונות שבחרתם לשמור בארכיון ולאפשר ל-PhotoPrism לאנדקס אותו. אין ביניהם התנגשות, מכיוון ש-PhotoPrism קורא תיקיות, ואילו Immich מנהל את האחסון שלו.
FAQ
האם PhotoPrism ו-Immich יכולות להשתמש באותה תיקיית תמונות?
לא בבטחה בשני הכיוונים. PhotoPrism קוראת תיקיית originals וכותבת קובצי YAML נלווים לצד התמונות, ואילו Immich מצפה לנהל את התוכן במיקום ההעלאה שלה. אפשר להפנות את PhotoPrism לעותק לקריאה בלבד של תיקיית library של Immich כדי לעיין בתמונות, אך אין לאפשר לשני היישומים לנהל את אותם קבצים, משום שתבנית האחסון של Immich עלולה להעביר או לשנות את שמות הנכסים בזמן ש-PhotoPrism מוסיפה אותם לאינדקס.
האם Immich יציבה מספיק כדי להחזיק את העותק היחיד של התמונות שלי?
לאף יישום באירוח עצמי אסור להחזיק אי-פעם את העותק היחיד של מידע כלשהו. Immich מפיצה לעיתים קרובות שינויים שאינם תואמים לאחור, ו-docker compose pull רשלני עלול למנוע ממסד הנתונים להפעיל את עצמו. לכן יש לנעול את הגרסה ולקרוא את הערות הגרסה לפני השדרוג. יש לשמור את הקבצים המקוריים בגיבוי מחוץ לשרת, וכך הסיכון נשאר קטן.
מדוע קונטיינר למידת המכונה של Immich מופעל מחדש שוב ושוב?
המערכת מפסיקה אותו משום שהוא משתמש ביותר מדי זיכרון. יש להריץ את docker compose ps ולחפש את שירות למידת המכונה שיוצא עם קוד 137, המציין את הפעלת מנגנון הליבה לסיום תהליכים עקב מחסור בזיכרון. יש להוסיף swap, להגדיר לקונטיינר מגבלת זיכרון כדי שיישלט במקום שיופסק, או להשבית לחלוטין את למידת המכונה במכונה עם 4 GB. החיפוש יפסיק לפעול בלעדיה, אך שאר רכיבי Immich ימשיכו לפעול כרגיל.
האם PhotoPrism זקוקה ל-MariaDB, או ש-SQLite יספיק?
SQLite פועל ומתאים לספרייה אישית, אך PhotoPrism מגבילה את עצמה לארבעה workers בעת השימוש בו. בתיעוד מומלץ לעבור ל-MariaDB, משום שהוא מטפל טוב יותר במקביליות גבוהה. קובץ ה-compose שהפרויקט מפיץ כבר כולל את MariaDB, ולכן הנתיב המומלץ הוא גם ברירת המחדל.
כמה שטח דיסק יש להקצות מעבר לגודל הספרייה?
יש להוסיף 10 עד 20 אחוזים לגודל הקבצים המקוריים, עבור כל אחד מהיישומים. כך מכוסים התמונות הממוזערות שנוצרות ותצוגות הווידאו שעוברות המרה. אוסף בנפח 200 GB דורש בערך אמצעי אחסון בנפח 300 GB, לאחר שמביאים בחשבון מקום למסד הנתונים, לעותק הגיבוי המקומי ולגידול עתידי.