قم بمشاركة صور وألبومات Immich الخاصة بك بطريقة آمنة دون الكشف عن مثيل Immich الخاص بك للعامة.
يستغرق الإعداد أقل من دقيقة، ولن تحتاج أبدًا إلى لمسه مرة أخرى حيث تظل جميع مشاركاتك مُدارة داخل Immich.
حول هذا المشروع
التثبيت باستخدام Docker
كيفية استخدامه
كيف يعمل
تكوين إضافي
استكشاف الأخطاء وإصلاحها
طلبات الميزات
يعد Immich برنامجًا رائعًا، ولكن نظرًا لأنه يحتوي على جميع صورك الخاصة، فمن الأفضل إبقائه مغلقًا بالكامل. يمثل هذا مشكلة عندما تريد مشاركة صورة أو معرض مع شخص ما.
يوفر Immich Public Proxy حاجزًا أمنيًا بين الجمهور وImmich، ولا يسمح به إلا من خلال الطلبات التي قمت بمشاركتها بشكل عام.
إنه عديم الجنسية ولا يعرف شيئًا عن مثيل Immich الخاص بك. لا يتطلب الأمر مفتاح API مما يقلل من سطح الهجوم بشكل أكبر. الأشياء الوحيدة التي يستطيع الوكيل الوصول إليها هي الصور التي جعلتها متاحة للعامة في Immich.
شاهد المعرض التجريبي المباشر الذي يتم تقديمه مباشرة من مثيل Immich الخاص بي.
يدعم مشاركة الصور ومقاطع الفيديو.
يدعم المشاركات المحمية بكلمة مرور.
في حالة مشاركة صورة واحدة، سيفتح الرابط بشكل افتراضي ملف الصورة مباشرة بحيث يمكنك تضمينه في أي مكان تريده كصورة عادية. (هذا قابل للتكوين.)
تتم جميع الاستخدامات من خلال Immich - لن تحتاج إلى لمس هذا التطبيق بعد التكوين الأولي.
/share/
للعامة فقط؟ لعرض ألبوم مشترك في Immich، تحتاج إلى الوصول إلى المسار /api/
. إذا كنت تشارك معرضًا مع الجمهور، فستحتاج إلى جعل هذا المسار عامًا. أي ثغرة أمنية حالية أو مستقبلية لديها القدرة على اختراق مثيل Imich الخاص بك.
بالنسبة لي، الإعداد المثالي هو تأمين Immich بشكل خاص خلف mTLS أو VPN، والسماح فقط بالوصول العام إلى Immich Public Proxy. فيما يلي مثال لإعداد لتأمين Immich خلف mTLS باستخدام Caddy.
قم بتنزيل ملف docker-compose.yml.
قم بتحديث قيمة IMMICH_URL
في ملف إنشاء عامل الإرساء الخاص بك للإشارة إلى عنوان URL المحلي الخاص بك لـ Immich. لا ينبغي أن يكون هذا عنوان URL عامًا.
ابدأ حاوية الإرساء. يمكنك اختبار أنه يعمل من خلال زيارة https://your-proxy-url.com/healthcheck
. تحقق من إخراج وحدة التحكم في الحاوية بحثًا عن أي رسائل خطأ.
عامل الإرساء يؤلف -d
قم بتعيين "النطاق الخارجي" في إعدادات خادم Immich الخاص بك ليكون أي نطاق تستخدمه لخدمة وكيل Immich العام بشكل عام:
الآن كلما قمت بمشاركة صورة أو معرض من خلال Immich، فإنه سيقوم تلقائيًا بإنشاء المسار العام الصحيح لك.
هام : إذا كنت تستخدم Cloudflare، فيرجى التأكد من ضبط المسار /share/video/*
على Bypass Cache، وإلا فقد تواجه مشكلات في تشغيل الفيديو. راجع استكشاف الأخطاء وإصلاحها لمزيد من المعلومات.
نظرًا لأن جميع مسارات IPP موجودة ضمن /share/...
، فيمكنك تشغيل Immich Public Proxy وImmich على نفس النطاق.
راجع التعليمات هنا: التشغيل على مجال واحد.
بخلاف التكوين الأولي أعلاه، تتم إدارة كل شيء آخر من خلال Immich.
يمكنك مشاركة الصور/مقاطع الفيديو الخاصة بك كالمعتاد من خلال Immich. نظرًا لأنك قمت بتعيين المجال الخارجي في إعدادات Immich ليكون عنوان URL لتطبيق الوكيل الخاص بك، فإن الروابط التي ينشئها Immich سيكون لها عنوان URL الصحيح تلقائيًا:
عندما يتلقى الوكيل طلبًا، سيأتي كرابط مثل هذا:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
الجزء بعد /share/
هو المعرف العام للرابط المشترك الخاص بـ Immich (يسمى key
في المستندات).
يأخذ Immich Public Proxy هذا المفتاح ويقوم باستدعاء واجهة برمجة التطبيقات (API) لمثيل Immich الخاص بك عبر شبكتك المحلية، للسؤال عن الصور أو مقاطع الفيديو التي تتم مشاركتها في عنوان URL الخاص بالمشاركة.
إذا كان عنوان URL صالحًا للمشاركة، فإن الوكيل يجلب تلك الأصول فقط عبر واجهة برمجة التطبيقات المحلية ويعيدها إلى الزائر كصورة فردية أو معرض.
إذا انتهت صلاحية الرابط المشترك أو تم وضع أي من الأصول في سلة مهملات Immich، فلن يقوم بإرجاعها.
يتم التحقق من صحة جميع البيانات الواردة وتطهيرها، وأي شيء غير متوقع يتم إسقاطه ببساطة برقم 404.
هناك بعض خيارات التكوين الإضافية التي يمكنك تغييرها، على سبيل المثال طريقة إعداد المعرض.
قم بعمل نسخة من config.json في نفس المجلد مثل docker-compose.yml
.
قم بتمرير التكوين إلى حاوية الإرساء الخاصة بك عن طريق إضافة وحدة تخزين مثل هذا:
مجلدات: - ./config.json:/app/config.json:ro
أعد تشغيل الحاوية الخاصة بك ويجب أن يكون التكوين المخصص نشطًا.
خيار | وصف |
---|---|
responseHeaders | قم بتغيير الرؤوس المرسلة مع استجابات الويب الخاصة بك. افتراضيًا، يتم إضافة cache-control وCORS. |
downloadOriginalPhoto | اضبط على false إذا كنت تريد أن يتمكن الأشخاص فقط من تنزيل صورة ذات جودة "معاينة"، بدلاً من صورتك الأصلية. |
showGalleryTitle | إظهار عنوان على صفحة المعرض. |
allowDownloadAll | السماح للزائرين بتحميل جميع الملفات بصيغة ZIP. |
يتم إنشاء المعرض باستخدام lightGallery. يمكنك العثور على جميع إعدادات lightGallery هنا: https://www.lightgalleryjs.com/docs/settings/
على سبيل المثال، لتعطيل زر تنزيل الصور، يمكنك تحرير قسم lightGallery
وتغيير download
إلى false
:
{ "lightGallery": { "عناصر التحكم": صحيح، "تنزيل": خطأ، "إعدادات الهاتف المحمول": { "عناصر التحكم": خطأ، "showCloseIcon": صحيح، "تنزيل": خطأ } } }
إذا كنت تستخدم Cloudflare وتواجه مشكلات تتعلق بعدم تشغيل مقاطع الفيديو بشكل جيد، فتأكد من تعيين مسارات /share/video/
لتجاوز ذاكرة التخزين المؤقت. لقد واجهت هذه المشكلة بنفسي، ووجدت بعض النصائح المفيدة هنا.
يمكنك إضافة طلبات الميزات هنا، ولكن هدفي من هذا المشروع هو إبقائه بسيطًا قدر الإمكان.
نظرًا لحساسية البيانات الموجودة في Immich، أريد أن يتمكن أي شخص لديه القليل من المعرفة بالبرمجة من قراءة قاعدة التعليمات البرمجية هذه وفهم كل ما تفعله بشكل كامل.
الأشياء التي لا تؤخذ في الاعتبار لهذا المشروع هي:
أي شيء يقوم بتعديل Immich أو ملفاته بأي شكل من الأشكال. إذا كانت تتطلب مفتاح API أو وصولاً مميزًا، فلن يتم اعتبارها ميزة جديدة.
تحميل الصور (انظر أعلاه).