

Photoview هو معرض صور بسيط وسهل الاستخدام مصنوع للمصورين ويهدف إلى توفير طريقة سهلة وسريعة للتنقل في الدلائل ، مع الآلاف من الصور عالية الدقة.
تقوم بتكوين PhotoView للبحث عن الصور ومقاطع الفيديو داخل دليل على نظام الملفات الخاص بك. يقوم الماسح الضوئي تلقائيًا بتقاط الوسائط الخاصة بك ويبدأ في إنشاء صور مصغرة لجعل التصفح بسرعة فائقة.
عندما يتم فحص وسائل الإعلام الخاصة بك ، فإنها تظهر على الموقع الإلكتروني ، والتي تم تنظيمها بنفس الطريقة التي يتم بها في نظام الملفات.
إذا كانت لديك أسئلة بخصوص الإعداد أو التطوير ، فلا تتردد في الانضمام إلى خادم Discord https://discord.gg/jq392948u9
انتقلنا إلى سجل Docker الجديد https://hub.docker.com/r/photoview/photoview وجميع الصور الجديدة للعلامة master ، وكذلك الإصدارات المستقبلية سيتم نشرها هناك بدلاً من السجل المستخدم مسبقًا. ستظل الصور القديمة متاحة في السجل القديم https://hub.docker.com/r/viktorsratte/photoview ، لذلك إذا كنت تريد استخدام 1 من تلك الصور القديمة ، فأنت بحاجة إلى العودة إلى السجل القديم.
يرجى تحديث ملف docker-compose.yml الخاص بك لاستخدام السجل الجديد لصورة photoview ، كما هو موضح في المثال المقابل لملف compose: https://github.com/photoview/photoview/tree/master/docker-compose٪20example
زيارة https://photos.qpqp.dk/
اسم المستخدم: العرض التوضيحي
كلمة المرور: العرض التوضيحي
هناك الكثير من معارض الصور التي تستضيفها المصدر المفتوح بالفعل. هنا بعض ، فقط لذكر عدد قليل.
فلماذا واحد آخر؟ أحب التقاط الصور ، وأخزنها جميعًا على مرسلي المحلي. هذا أمر رائع لأنني أستطيع تنظيم صوري مباشرة على نظام الملفات ، لذلك من السهل تحريكها أو أخذ نسخ احتياطية. أريد أن أكون قادرًا على التحكم في مكان وكيفية تخزين الصور.
ومع ذلك ، تكمن المشكلة في أن الصور الخام مملة للغاية للتنقل من FileServer ، حتى عبر الشبكة المحلية.
يحمل الخادم الخاص بي الكثير من الصور العائلية القديمة التي أود أن تتمكن عائلتي من الوصول إليها أيضًا. وبعض الصور التي أود أن أكون قادرًا بسهولة على مشاركتها مع أشخاص آخرين دون أن يضطروا إلى الحصول على حساب أولاً.
وبالتالي ، أحتاج إلى حل يمكنه القيام بما يلي:
يمكن لجميع معارض الصور القيام بالكثير مما أحتاج إليه ، ولكن لا يمكن لأي شخص أن يفعل كل شيء.
يصف هذا القسم كيفية الحصول على Photoview وتشغيله على الخادم الخاص بك مع Docker. تأكد من تثبيت Docker و Docker-Cormpose وتشغيله على الخادم الخاص بك. يجب تثبيت
makeأيضًا إذا كنت ترغب في استخدامMakefileالمتوفر ، وهو أمر اختياري (انظر الخطوة 4 لمزيد من التفاصيل). يجب تثبيت7zzفي حالة ، كنت ترغب في استخدامه في نطاق سيناريو النسخ الاحتياطي بدلاً من تنسيق .Tar.xz الافتراضي. اقرأ التعليق فيMakefile، الموجود أعلى قسمbackupلمزيد من التفاصيل.
قم بتنزيل محتوى مجلد docker-compose example إلى المجلد على الخادم الخاص بك ، حيث تتوقع استضافة البيانات الداخلية PhotoView (ملفات قاعدة البيانات وذاكرة التخزين المؤقت).
يرجى ملاحظة أن هذا المجلد يحتوي على نسختين من ملف Docker-Corpose:
docker-compose.example.yml الوظيفي بالكامل ويوصى به لمعظم الحالات التكوينdocker-compose.minimal.example.yml - تكوين الحد الأدنى والبسيط لأولئك الذين يجدون السابق معقدًا للغاية ويصعب فهمه وإدارتهعند تنزيل الملفات ، تحتاج إلى اختيار واحد منها فقط.
أعد تسمية الملفات التي تم تنزيلها وإزالة example من أسمائها (لذلك ، تحتاج إلى الحصول على ملفات .env و docker-compose.yml و Makefile ). إذا اخترت docker-compose.minimal.example.yml على الخطوة السابقة ، فتأكد من إعادة تسميته إلى docker-compose.yml .
افتح هذه الملفات في محرر نصوص وقراءتها. تعديل عند الحاجة وفقًا لتعليقات الوثائق لمطابقة الإعداد الخاص بك بشكل صحيح. هناك تعليقات من نوعين: تلك ، التي تبدأ بـ ## ، هي تفسيرات وأمثلة ، والتي لا ينبغي أن تكون غير محفوظة ؛ تلك ، التي تبدأ بـ # ، هي أجزاء تكوين اختيارية أو بديلة ، والتي قد تكون غير مصممة في ظروف معينة ، موصوفة في التفسيرات المقابلة. من الأفضل أن تمر عبر الملفات بالترتيب التالي: .env ، docker-compose.yml ، و Makefile .
إذا كانت
PGSQL_PASSWORDأوMARIADB_PASSWORDتحتوي على أحرف خاصة (على سبيل@) ، فتأكد من ترميز url.
تأكد من أن المجلد الجذر لمكتبة الوسائط الخاصة بك وجميع الملفات والمجلدات الفرعية قابلة للقراءة وقابلة للبحث من قبل المستخدمين الآخرين: قم بتشغيل الأمر التالي (أو التسلسل المقابل للأوامر من Makefile ):
make readable إذا Permission denied (الأوامر) ، فقم بتشغيله ، فقم بتشغيله تحت المستخدم ، وامتلاك الملفات والمجلدات المقابلة. بدلاً من ذلك ، قم بتشغيلها إضافة sudo قبل الأمر: سيؤدي ذلك إلى تبديل سياق التنفيذ إلى المستخدم root وطلب كلمة مرور الجذر. يجب أن يكون لديك إذن لتشغيل sudo في النظام.
إذا كنت لا ترغب في إعطاء أذونات مطلوبة لمجموعة others لملفاتك ، بدلاً من ذلك ، يمكنك:
photoview مملوكة لهذه المجموعة ؛ ثم قم بتعيين الأذونات المناسبة إلى قسم group .photoview لهذا المستخدم ؛ ثم قم بتعيين الأذونات المناسبة إلى قسم user . إذا قمت بتكوين حوامل أخرى مع ملفات الوسائط من مواقع أخرى على المضيف (مثل HOST_PHOTOVIEW_MEDIA_FAMILY أو أي شيء آخر) ، فأنت بحاجة إلى تشغيل نفس الأوامر ، كما هو الحال في الهدف Makefile readable ، لكل مجلد جذر الوسائط على مضيفك يدويًا: انسخ كل أمر إلى قشرة الخاص بك واستبدال المتغير مع المسار المطلق إلى مجلد جذر الوسائط الإضافي دون وجود تتبع / . قم بتشغيل كلا الأوامر لكل مجلد جذر إضافي.
في حالة عدم وجود make في نظامك أو لا ترغب في استخدامه لأنشطة إدارة Photoview ، يمكنك استخدام نفس الأوامر من Makefile وتشغيلها في قشرتك مباشرة ، أو إنشاء البرامج النصية الخاصة بك. تأكد من تطبيق المتغيرات أو استبدالها من .env أولاً في هذه الحالة. يتم توفير Makefile فقط لراحتك وبساطتك ، ولكن اختياري.
ابدأ الخادم عن طريق تشغيل الأمر التالي (أو التسلسل المقابل للأوامر من Makefile ):
make all إذا لم يتم تغيير نقطة النهاية أو المنفذ في ملف docker-compose.yml ، فيمكن الآن الوصول إلى Photoview على http: // localhost: 8000
إذا تم إعداد كل شيء بشكل صحيح ، فيجب أن يتم تقديم معالج إعداد أولي عند الوصول إلى موقع الويب في المرة الأولى.

أدخل اسم مستخدم وكلمة مرور جديدة.
لمسار الصورة ، أدخل المسار داخل حاوية Docker حيث توجد صورك. يمكن تعيين ذلك من ملف docker-compose.yml ضمن photoview -> volumes . الموقع الافتراضي هو /photos .
سيتم إنشاء مستخدم مسؤول جديد ، مع إمكانية الوصول إلى الصور الموجودة في المسار المتوفر ضمن الإعداد الأولي.
يجب مسح الصور قبل ظهورها ، يمكنك بدء فحص يدويًا ، من خلال التنقل إلى Settings والنقر فوق Scan All
نقترح تأمين مثيل Photoview قبل تعريضه خارج شبكتك المحلية: على الرغم من أنه يوفر وصولًا للقراءة فقط إلى معرض الوسائط الخاص بك ولديه وظائف مصادقة المستخدم الأساسية ، فإنه لا يكفي حماية وسائل الإعلام الخاصة بك من الجهات الفاعلة الضارة على الإنترنت.
قد تكون الطرق الممكنة لتأمين خدمة مستضافة ذاتيًا (على سبيل المثال لا الحصر):
يعتمد إعداد وتكوين كل هذه الحماية ويتطلب الكثير من المعلومات حول شبكتك المحلية والخدمات التي تستضيفها ذاتيا. بناءً على هذه المعلومات ، قد تختلف تدفق التكوين والعمارة الناتجة عن الحالات. لهذا السبب في نطاق هذا المشروع ، لا يمكننا إلا أن نوفر لك هذه القائمة عالية المستوى من الطرق الممكنة لحماية خدمات الويب. ستحتاج إلى التحقيق فيها ، والعثور على أفضل مجموعة وتكوين لحالتك ، وتحمل مسؤولية تكوين كل شيء بطريقة صحيحة ومتسقة. لا يمكننا أن نوفر لك دعمًا لمثل هذه الإعدادات المضمنة للغاية ، لأن الكثير من الأشياء قد تعمل بشكل مختلف بسبب قيود الأمن.
من الممكن تشغيل FFMPEG مع ترميز الترميز تسريع الأجهزة ، من خلال تحديد PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION . يجب أن تكون القيمة واحدة من qsv ، vaapi ، nvenc .
لقد تحققنا فقط من تسارع الأجهزة مع qsv على رقاقة Intel. للسماح لها بالعمل ، يجب أن تقوم بتخطيط أجهزة /dev/dri وتعيين env PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv . انظر [docker-corm.example.yml] (.
إذا قمت بالتحقق من تسريع الأجهزة الأخرى تعمل بشكل جيد ، فأخبرنا بذلك.
؟ أولاً ، شكرًا على اهتمامك بالمساهمة! ؟
هذا المشروع هو نتيجة للعمل الشاق ، ومن الرائع أن نراكم مهتمًا بالمساهمة. المساهمات ليست فقط عن الكود - يمكنك المساعدة بعدة طرق!
قبل أن تبدأ ، يرجى أخذ لحظة لقراءة دليلنا المساهمة. ويتضمن معلومات عن مدونة قواعد السلوك الخاصة بنا ، وعملية تقديم طلبات السحب ، والمزيد.
تذكر أن كل مساهمة تهم. لنجعل هذا المشروع أفضل معًا! ؟
بيئة تنمية Docker سهلة الإعداد. إنه يتطلب فقط Docker و Docker Compans Plugin محليًا. يتم تثبيت جميع التبعيات في حاوية ولكن ليس في المضيف.
كما أن لديها بعض أوجه القصور. في MacOS ، يعمل Docker في Linux VM. الإخطار FS لا يعمل بشكل جيد في هذه الحالة. لا يمكنك استخدام reflex أو nodemon لإعادة تشغيل الخوادم عند تغيير الكود. المترجم يعمل بطيئًا جدًا أيضًا.
نوصي باستخدام بيئة تطوير Docker. إذا لم تنجح بيئة Docker بشكل جيد ، مثل MacOS ، فيرجى استخدام بيئة التطوير المحلية.
قد يستغرق الأمر وقتًا طويلاً لبناء التبعيات عند إطلاق الخوادم لأول مرة.
$ docker compose -f dev-compose.yaml build # Build images for development
$ docker compose -f dev-compose.yaml up # Launch API and UI serversيمكن الآن الوصول إلى ملعب GraphQL في LocalHost: 4001. يمكن الآن الوصول إلى الموقع في LocalHost: 1234. سيتم إعادة تشغيل كلا الخادمين بعد تغيير الكود.
بشكل افتراضي ، يستخدم SQLite3 كقاعدة بيانات. لتشغيل الخوادم باستخدام قاعدة بيانات أخرى ، يرجى تحديث قيمة PHOTOVIEW_DATABASE_DRIVER في ملف dev-compose.yaml وتشغيله:
$ docker compose -f dev-compose.yaml --profile mysql up # Run with mysql database
or
$ docker compose -f dev-compose.yaml --profile postgres up # Run with postgresql databaseإذا كنت لا ترغب في الاعتماد على Docker Compose ولكن فقط Docker ، فيمكنك تشغيل الخادم على النحو التالي.
قد يستغرق الأمر وقتًا طويلاً لبناء التبعيات عند إطلاق الخوادم لأول مرة.
$ docker build --target api -t photoview/api . # Build image for development
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file api/example.env photoview/api
reflex -g ' *.go ' -s -- go run . # Monitor source code and (re)launch API serverيمكن الآن الوصول إلى ملعب GraphQL في LocalHost: 4001.
ملحوظة
يعمل الخادم على شبكة المضيف كعلم --network host . من السهل التواصل بين API Server وخادم واجهة المستخدم. إذا كنت لا ترغب في القيام بذلك ، فيرجى التحقق من شبكة Docker لإنشاء شبكة جديدة لتشغيل الخوادم.
قد يستغرق الأمر وقتًا طويلاً لبناء التبعيات عند إطلاق الخوادم لأول مرة.
$ docker build --target ui -t photoview/ui . # Build image for development
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file ui/example.env photoview/ui
npm install # Install dependencies
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file ui/example.env photoview/ui
npm run mon # Monitor source code and (re)launch UI serverيمكن الآن الوصول إلى الموقع في LocalHost: 1234.
ملحوظة
يعمل الخادم على شبكة المضيف كعلم --network host . من السهل التواصل بين API Server وخادم واجهة المستخدم. إذا كنت لا ترغب في القيام بذلك ، فيرجى التحقق من شبكة Docker لإنشاء شبكة جديدة لتشغيل الخوادم.
في Linux ، نوصي باستخدام Docker Compose أو Docker كبيئة تنمية محلية.
لا يمكننا الاستمرار في التحقق من الأوامر أدناه في كل بيئة. قد يحتاج الناس إلى حل التبعيات بمفردهم.
golang > = 1.22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas ، أوصى باستخدام libatlas-base في دبيان.liblapackreflex : أداة مراقبة التعليمات البرمجية المصدر ، تقوم تلقائيًا بإعادة بناء الخادم وإعادة تشغيله ، ويمتد من الرمز في التطوير.sqlite : SQLite DBMS ، مفيدة للتفاعل مع SQLite DB من Photoview مباشرة إذا كنت تستخدمه في بيئة التطوير الخاصة بك.node = 18في Debian/Ubuntu ، قم بتثبيت التبعيات:
$ sudo apt update # Update the package list
$ sudo apt install golang g++ libc-dev libheif-dev libdlib-dev libjpeg-dev libblas-dev libatlas-base-dev liblapack-dev # For API requirement
$ sudo apt install reflex sqlite3 # For API optional toolsفي MacOS ، تثبيت التبعيات:
$ brew update # Update the package list
$ brew install golang gcc pkg-config libheif dlib jpeg # For API
$ brew install reflex sqlite3 # For API optional tools يرجى اتباع إرشادات مدير الحزمة إذا كنت لا تستخدم apt أو homebrew .
node ، أوصي باستخدام NVM. اتبع التثبيت والتحديث لتثبيت nvm محليًا ، ثم:
$ nvm install 18
$ nvm use 18 يمكنك تثبيت node مع مدير الحزمة الأخرى إذا أردت.
/api/example.env إلى .envPHOTOVIEW_SQLITE_PATH إذا كنت لا تريد وضع ملف sqlite تحت /apiPHOTOVIEW_DATABASE_DRIVER مع برنامج التشغيل الخاص بكإذا كانت
PGSQL_PASSWORDأوMARIADB_PASSWORDتحتوي على أحرف خاصة (على سبيل@) ، فتأكد من ترميز url.
/ui/example.env إلى .envثم قم بتشغيل الأوامر التالية:
# Optional: Set the compiler environment in Debian/Ubuntu
$ source ./scripts/set_compiler_env.sh
# Set the compiler environment with `homebrew`
$ export CPLUS_INCLUDE_PATH= " $( brew --prefix ) /opt/jpeg/include: $( brew --prefix ) /opt/dlib/include "
$ export LD_LIBRARY_PATH= " $( brew --prefix ) /opt/jpeg/lib: $( brew --prefix ) /opt/dlib/lib "
$ export LIBRARY_PATH= " $( brew --prefix ) /opt/jpeg/lib: $( brew --prefix ) /opt/dlib/lib "
# Start API server
$ cd ./api
$ go run .إذا كنت ترغب في إعادة ترجمة الخادم تلقائيًا عند تغيير الرمز:
# Start API server
$ cd ./api
$ reflex -g ' *.go ' -s -- go run .يمكن الآن الوصول إلى ملعب GraphQL في LocalHost: 4001.
في نافذة طرفية جديدة ، قم بتشغيل الأوامر التالية:
cd ./ui
npm install
npm startإذا كنت ترغب في إعادة ترجمة الخادم تلقائيًا عند تغيير الرمز:
$ cd ./ui
$ npm run monيمكن الآن الوصول إلى الموقع في LocalHost: 1234.
ericerkz | @روبن موسر | revorge | deexno | fkrauss | jupblb |