لماذا تستضيف PhotoPrism ذاتيًا على خادم VPS
بينما يستهدف Immich تجربة السحابة الكاملة مع نسخ احتياطي فوري من الجوال، يركّز PhotoPrism على فهرسة وتنظيم مكتبة صور موجودة مسبقًا، غالبًا ما تكون كبيرة، موضوعة على نظام ملفات. يحلّل مجلداتك، ويصنّف الصور بوسوم (جبل، شاطئ، سيارة)، ويكتشف الوجوه، ويقرأ بيانات EXIF، ويحدّد المواقع الجغرافية للصور. يُنفَّذ كل ذلك محليًا عبر TensorFlow المدمج. استضافته على خادم VPS لها فائدة مزدوجة: تجميع أرشيف الصور المبعثر على قرص يمكن الوصول إليه من أي مكان، والاستفادة من الوسم التلقائي دون إرسال الصور أبدًا إلى خدمة طرف ثالث. يعمل PhotoPrism مع MariaDB لأداء جيد، ويقرأ مباشرةً مجلد originals الذي تملؤه عبر WebDAV أو rsync أو التحميل (mount).
مزايا PhotoPrism المُستضاف ذاتيًا
- وسم تلقائي بذكاء اصطناعي محلي: بحث بالكلمات المفتاحية والأماكن والألوان دون سحابة.
- فهرسة الأرشيف الموجود مسبقًا على القرص، عبر WebDAV أو rsync أو تحميل شبكي.
- اكتشاف المكرّرات والصور المتشابهة لتنظيف مجموعة مكتظّة.
- خرائط تفاعلية مبنية على إحداثيات GPS المستخرجة من بيانات EXIF الوصفية.
- وضع القراءة فقط متاح: يفهرس PhotoPrism دون تعديل ملفاتك الأصلية أبدًا.
- واجهة PWA قابلة للتثبيت، يمكن الوصول إليها من أي متصفّح على شبكتك.
المتطلبات العتادية والبرمجية
يوصي PhotoPrism بما لا يقل عن 4 غيغابايت من RAM الفعلية، يُستخدم جزء منها لعمليات الفهرسة عبر TensorFlow؛ ودون ذلك يصبح التحليل بطيئًا أو يفشل على المكتبات الكبيرة. يكفي 2 vCPU للاستخدام الشخصي، لكن الفهرسة الأولية لأرشيف كبير تستفيد من أنوية إضافية. يجب أن يغطّي التخزين ملفاتك originals إضافةً إلى نحو 30% للصور المصغّرة والذاكرة المؤقتة. على الجانب البرمجي: Docker وdocker compose الإصدار v2، وMariaDB 10.5+ (يُفضَّل بشدة على SQLite للمجموعات الكبيرة)، ونطاق (galerie.yourcompany.com)، ويُفضَّل توفير مساحة swap لامتصاص ذُرَى الفهرسة على خوادم VPS المتواضعة.
نشر PhotoPrism خطوة بخطوة
تجهيز الخادم VPS والأحجام (volumes)
ثبّت Docker، ثم أنشئ مجلدين دائمين: /opt/photoprism/originals لصورك و/opt/photoprism/storage للذاكرة المؤقتة وقاعدة بيانات الفهرس. يبسّط فصل هذين الحجمين عمليات النسخ الاحتياطي.
الإعلان عن PhotoPrism وMariaDB
في docker-compose.yml، أضف خدمة mariadb بحجم مخصّص وخدمة photoprism (الصورة photoprism/photoprism:latest). اربطهما عبر PHOTOPRISM_DATABASE_DRIVER=mysql، ووجّه PHOTOPRISM_ORIGINALS_PATH إلى مجلد صورك.
تحديد المسؤول ووضع الفهرسة
عيّن PHOTOPRISM_ADMIN_PASSWORD، وفعّل PHOTOPRISM_READONLY=true إذا أردته أن يفهرس دون المساس بالملفات الأصلية. ثم شغّل المكدّس بـdocker compose up -d.
الاستيراد وتشغيل الفهرسة الأولى
انسخ صورك إلى مجلد originals عبر rsync أو WebDAV، ثم شغّل التحليل من الواجهة أو عبر سطر الأوامر بـdocker compose exec photoprism photoprism index. هنا يولّد الذكاء الاصطناعي الوسوم والصور المصغّرة.
إضافة وكيل عكسي مع SSL
ضع Caddy أو Traefik أمام PhotoPrism لـgalerie.yourcompany.com، مع توليد شهادة Let's Encrypt تلقائيًا. احرص على تمرير الترويسات (headers) للحفاظ على مخطّط https الصحيح داخل التطبيق.
PhotoPrism أم Immich: أيهما تختار
| المعيار | PhotoPrism | Immich |
|---|---|---|
| الهدف الرئيسي | فهرسة وتنظيم مكتبة صور موجودة مسبقًا | سحابة صور كاملة مع نسخ احتياطي من الجوال |
| تطبيق الجوال | PWA، دون نسخ احتياطي تلقائي أصلي | تطبيقات iOS/Android مع نسخ احتياطي تلقائي |
| قاعدة البيانات | MariaDB أو SQLite | PostgreSQL مع امتداد شعاعي |
| بحث الذكاء الاصطناعي | وسوم TensorFlow حسب المحتوى واللون | بحث دلالي وتعرّف متقدم على الوجوه |
| RAM الموصى بها | 4 غيغابايت | 6 إلى 8 غيغابايت |
| نموذج الملفات | يقرأ مجلد originals، مع وضع قراءة فقط متاح | يدير شجرة الرفع الخاصة به |
| متعدد المستخدمين | محدود، موجَّه لمجموعة واحدة | مكتبات معزولة لكل مستخدم |
| حالة الاستخدام المثلى | أرشفة وتصفّح مجلدات صور كبيرة | استبدال Google Photos في الاستخدام اليومي |
حمّل مجلد originals بوضع القراءة فقط (:ro في حجم Docker) وفعّل PHOTOPRISM_READONLY=true. سيفهرس PhotoPrism ويولّد الوسوم والصور المصغّرة في حجم storage المنفصل، دون أي مخاطرة بتعديل أو حذف ملف أصلي. وبذلك يمكنك التوجيه بأمان إلى أرشيف ثمين، بل ومزامنة هذا المجلد عبر rsync من خادم آخر.