

Photoview เป็นแกลเลอรี่ภาพถ่ายที่เรียบง่ายและใช้งานง่ายซึ่งสร้างขึ้นสำหรับช่างภาพและมีจุดมุ่งหมายเพื่อให้วิธีที่ง่ายและรวดเร็วในการนำทางไดเรกทอรีด้วยภาพถ่ายความละเอียดสูงนับพัน
คุณกำหนดค่า photoview เพื่อค้นหาภาพถ่ายและวิดีโอภายในไดเรกทอรีในระบบไฟล์ของคุณ สแกนเนอร์จะรับสื่อของคุณโดยอัตโนมัติและเริ่มสร้างภาพขนาดย่อเพื่อให้การเรียกดูเร็วสุด ๆ
เมื่อสื่อของคุณได้รับการสแกนพวกเขาจะปรากฏบนเว็บไซต์จัดระเบียบในลักษณะเดียวกับในระบบไฟล์
หากคุณมีคำถามเกี่ยวกับการตั้งค่าหรือการพัฒนาอย่าลังเลที่จะเข้าร่วม Discord Server https://discord.gg/jq392948u9
เราย้ายไปที่รีจิสทรี Docker ใหม่ https://hub.docker.com/r/photoview/photoview และรูปภาพใหม่ทั้งหมดสำหรับแท็ก master รวมถึงการเผยแพร่ในอนาคตจะถูกเผยแพร่ที่นั่นแทนที่จะเป็นรีจิสทรีที่ใช้ก่อนหน้านี้ ภาพเก่าจะยังคงสามารถเข้าถึงได้ในรีจิสทรีเก่า https://hub.docker.com/r/viktorstrate/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-compose ที่ติดตั้งและทำงานบนเซิร์ฟเวอร์ของคุณ
makeควรติดตั้งเช่นกันหากคุณต้องการใช้Makefileที่ให้มาซึ่งเป็นทางเลือก (ดูขั้นตอนที่ 4 สำหรับรายละเอียดเพิ่มเติม) ควรติดตั้ง7zzในกรณีที่คุณต้องการใช้ในขอบเขตของสถานการณ์การสำรองข้อมูลแทนรูปแบบ. tar.xz เริ่มต้น อ่านความคิดเห็นในMakefileซึ่งอยู่ด้านบนของส่วนbackupสำหรับรายละเอียดเพิ่มเติม
ดาวน์โหลดเนื้อหาของโฟลเดอร์ docker-compose example ไปยังโฟลเดอร์บนเซิร์ฟเวอร์ของคุณซึ่งคุณคาดว่าจะโฮสต์ข้อมูลภายใน Photoview (ฐานข้อมูลและไฟล์แคช)
โปรดทราบว่าโฟลเดอร์นี้มีไฟล์ Docker-compose 2 เวอร์ชัน:
docker-compose.example.yml ฟังก์ชั่นเต็มและแนะนำสำหรับกรณีส่วนใหญ่ configdocker-compose.minimal.example.yml - การกำหนดค่าที่เรียบง่ายและเรียบง่ายสำหรับผู้ที่พบว่าก่อนหน้านี้ซับซ้อนและยากที่จะเข้าใจและจัดการเมื่อดาวน์โหลดไฟล์คุณต้องเลือกเพียงหนึ่งไฟล์เท่านั้น
เปลี่ยนชื่อไฟล์ที่ดาวน์โหลดและลบ example จากชื่อของพวกเขา (ดังนั้นคุณต้องมี .env , docker-compose.yml และไฟล์ Makefile ) หากคุณเลือก docker-compose.minimal.example.yml ในขั้นตอนก่อนหน้าตรวจสอบให้แน่ใจว่าได้เปลี่ยนชื่อเป็น docker-compose.yml
เปิดไฟล์เหล่านี้ในตัวแก้ไขข้อความและอ่าน แก้ไขเมื่อจำเป็นตามความคิดเห็นของเอกสารเพื่อให้ตรงกับการตั้งค่าของคุณอย่างถูกต้อง มีความคิดเห็นของ 2 ประเภท: ผู้ที่เริ่มต้นด้วย ## เป็นคำอธิบายและตัวอย่างซึ่งไม่ควรไม่รู้สึก ผู้ที่เริ่มต้นด้วย # เป็นชิ้นส่วนการกำหนดค่าทางเลือกหรือทางเลือกซึ่งอาจไม่มีการทำความเข้าใจในบางสถานการณ์ตามที่อธิบายไว้ในคำอธิบายที่สอดคล้องกัน มันจะดีกว่าที่จะผ่านไฟล์ในลำดับถัดไป: .env , docker-compose.yml และ Makefile
หาก
PGSQL_PASSWORDของคุณหรือMARIADB_PASSWORDมีอักขระพิเศษ (เช่น@) ตรวจสอบให้แน่ใจว่าได้ทำการเข้ารหัส URL
ตรวจสอบให้แน่ใจว่าโฟลเดอร์รูทของไลบรารีสื่อของคุณและไฟล์และโฟลเดอร์ย่อยทั้งหมดสามารถอ่านได้และสามารถค้นหาได้โดยผู้ใช้รายอื่น: เรียกใช้คำสั่งถัดไป (หรือลำดับของคำสั่งที่สอดคล้องกันจาก Makefile ):
make readable หากคำสั่งส่งคืน Permission denied ข้อผิดพลาดให้เรียกใช้ภายใต้ผู้ใช้ให้เป็นเจ้าของไฟล์และโฟลเดอร์ที่เกี่ยวข้อง อีกทางเลือกหนึ่งเรียกใช้การเพิ่ม sudo ก่อนคำสั่ง: สิ่งนี้จะเปลี่ยนบริบทการดำเนินการเป็น root ผู้ใช้และขอรหัสผ่านรูท คุณต้องได้รับอนุญาตให้เรียกใช้ sudo ในระบบ
หากคุณไม่ต้องการให้สิทธิ์ที่จำเป็นแก่กลุ่ม others สำหรับไฟล์ของคุณหรือคุณสามารถ:
photoview ที่เป็นเจ้าของโดยกลุ่มนี้ จากนั้นตั้งค่าการอนุญาตที่เหมาะสมไปยังส่วน groupphotoview เป็นผู้ใช้รายนี้ จากนั้นตั้งค่าสิทธิ์ที่เหมาะสมไปยังส่วน user หากคุณกำหนดค่าการเมาท์อื่น ๆ ด้วยไฟล์สื่อจากสถานที่อื่น ๆ บนโฮสต์ (เช่น host_photoview_media_family หรือสิ่งอื่นใด) คุณต้องเรียกใช้คำสั่งเดียวกันเช่นเดียวกับในเป้าหมาย readable Makefile สำหรับโฟลเดอร์รูทสื่อแต่ละรายการบนโฮสต์ของคุณด้วยตนเอง / คัดลอกแต่ละคำสั่งลงในเชลล์ของคุณ เรียกใช้คำสั่งทั้งสองสำหรับโฟลเดอร์รูทเพิ่มเติมแต่ละโฟลเดอร์
ในกรณีที่คุณไม่ได้ make ตั้งในระบบของคุณหรือไม่ต้องการใช้สำหรับกิจกรรมการจัดการแสงคุณสามารถใช้คำสั่งเดียวกันจาก Makefile และเรียกใช้ในเชลล์ของคุณโดยตรงหรือสร้างสคริปต์ของคุณเอง ตรวจสอบให้แน่ใจว่าใช้หรือแทนที่ตัวแปรจาก .env ของคุณก่อนในกรณีนี้ Makefile มีไว้เพื่อความสะดวกและความเรียบง่ายของคุณ แต่เป็นทางเลือก
เริ่มต้นเซิร์ฟเวอร์โดยเรียกใช้คำสั่งต่อไปนี้ (หรือลำดับคำสั่งที่สอดคล้องกันจาก Makefile ):
make all หากปลายทางหรือพอร์ตไม่ได้มีการเปลี่ยนแปลงในไฟล์ docker-compose.yml ตอนนี้ photoview สามารถเข้าถึงได้ที่ http: // localhost: 8000
หากทุกอย่างถูกตั้งค่าอย่างถูกต้องคุณควรนำเสนอด้วยตัวช่วยสร้างการตั้งค่าเริ่มต้นเมื่อเข้าถึงเว็บไซต์เป็นครั้งแรก

ป้อนชื่อผู้ใช้และรหัสผ่านใหม่
สำหรับเส้นทางภาพถ่ายให้ป้อนเส้นทางภายในคอนเทนเนอร์ Docker ที่ภาพถ่ายของคุณอยู่ สามารถตั้งค่าได้จากไฟล์ docker-compose.yml ภายใต้ photoview -> volumes ตำแหน่งเริ่มต้นคือ /photos
ผู้ใช้ผู้ดูแลระบบใหม่จะถูกสร้างขึ้นพร้อมกับการเข้าถึงภาพถ่ายที่อยู่ในเส้นทางที่ให้ไว้ภายใต้การตั้งค่าเริ่มต้น
ภาพถ่ายจะต้องสแกนก่อนที่จะปรากฏขึ้นคุณสามารถเริ่มการสแกนด้วยตนเองโดยการนำทางไปยัง Settings และคลิกที่ Scan All
เราขอแนะนำการรักษาความปลอดภัยอินสแตนซ์ของแสงก่อนที่จะเปิดเผยนอกเครือข่ายท้องถิ่นของคุณ: แม้ในขณะที่ให้การเข้าถึงแกลเลอรีสื่อของคุณอย่างเดียวและมีฟังก์ชั่นการตรวจสอบความถูกต้องของผู้ใช้ขั้นพื้นฐาน แต่ก็ไม่เพียงพอที่จะปกป้องสื่อส่วนตัวของคุณจากนักแสดงที่เป็นอันตรายบนอินเทอร์เน็ต
วิธีที่เป็นไปได้ในการรักษาความปลอดภัยบริการที่โฮสต์ด้วยตนเองอาจเป็น (แต่ไม่ จำกัด เพียง):
การตั้งค่าและการกำหนดค่าการป้องกันทั้งหมดเหล่านี้ขึ้นอยู่กับและต้องการข้อมูลมากมายเกี่ยวกับเครือข่ายท้องถิ่นของคุณและบริการที่โฮสต์ตนเอง จากข้อมูลนี้โฟลว์การกำหนดค่าและสถาปัตยกรรมบริการที่เกิดขึ้นอาจแตกต่างกันมากระหว่างกรณี นั่นคือเหตุผลว่าทำไมในขอบเขตของโครงการนี้เราสามารถให้รายชื่อวิธีการป้องกันเว็บเซิร์ฟเวอร์ระดับสูงแก่คุณได้เท่านั้น คุณจะต้องตรวจสอบพวกเขาค้นหาชุดค่าผสมและการกำหนดค่าที่ดีที่สุดสำหรับกรณีของคุณและรับผิดชอบในการกำหนดค่าทุกอย่างในวิธีที่ถูกต้องและสอดคล้องกัน เราไม่สามารถให้การสนับสนุนคุณสำหรับการตั้งค่าที่มีความปลอดภัยสูงเนื่องจากหลายสิ่งหลายอย่างอาจทำงานแตกต่างกันเนื่องจากข้อ จำกัด ด้านความปลอดภัย
เป็นไปได้ที่จะเรียกใช้ FFMPEG ด้วยตัวแปลงสัญญาณกระตุ้นการเร่งความเร็วของฮาร์ดแวร์โดยกำหนด PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION ค่าควรเป็นหนึ่งใน qsv , vaapi , nvenc
เราตรวจสอบการเร่งความเร็วของฮาร์ดแวร์ด้วย qsv บนชิป Intel เท่านั้น ในการให้มันทำงานได้ต้องแมป /dev/dri และตั้งค่า ENV PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv ดู [Docker-compose.example.yml] (./ docker-compose ตัวอย่าง/docker-compose.example.yml)
หากคุณตรวจสอบการเร่งความเร็วฮาร์ดแวร์อื่น ๆ ที่ทำงานได้ดีแจ้งให้เราทราบ
- ก่อนอื่นขอบคุณที่คุณสนใจในการบริจาค! -
โครงการนี้เป็นผลมาจากการทำงานหนักและเป็นเรื่องดีที่ได้เห็นคุณสนใจที่จะมีส่วนร่วม การมีส่วนร่วมไม่ได้เกี่ยวกับรหัสเท่านั้น - คุณสามารถช่วยได้หลายวิธี!
ก่อนที่คุณจะเริ่มโปรดใช้เวลาสักครู่เพื่ออ่านคู่มือการสนับสนุนของเรา มันมีข้อมูลเกี่ยวกับจรรยาบรรณของเรากระบวนการในการส่งคำขอดึงและอื่น ๆ
จำไว้ว่าการบริจาคทุกครั้งมีค่า มาทำให้โครงการนี้ดีขึ้นด้วยกัน! -
สภาพแวดล้อมการพัฒนา Docker นั้นง่ายต่อการตั้งค่า ต้องใช้ปลั๊กอินนักเทียบท่าและนักเทียบท่าในเครื่องเท่านั้น การพึ่งพาทั้งหมดได้รับการติดตั้งในคอนเทนเนอร์ แต่ไม่ได้อยู่ในโฮสต์
นอกจากนี้ยังมีข้อบกพร่องบางอย่าง ใน 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 และเซิร์ฟเวอร์ UI หากคุณไม่ต้องการทำเช่นนั้นโปรดตรวจสอบเครือข่าย 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 และเซิร์ฟเวอร์ UI หากคุณไม่ต้องการทำเช่นนั้นโปรดตรวจสอบเครือข่าย Docker เพื่อสร้างเครือข่ายใหม่เพื่อเรียกใช้เซิร์ฟเวอร์
ใน Linux เราขอแนะนำให้ใช้ Docker Compose หรือ Docker เป็นสภาพแวดล้อมการพัฒนาในท้องถิ่น
เราไม่สามารถตรวจสอบคำสั่งด้านล่างในแต่ละสภาพแวดล้อมได้ ผู้คนอาจต้องแก้ปัญหาการพึ่งพาด้วยตนเอง
golang > = 1.22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas แนะนำโดยใช้ libatlas-base ใน Debianliblapackreflex : เครื่องมือตรวจสอบซอร์สโค้ดซึ่งสร้างใหม่และรีสตาร์ทเซิร์ฟเวอร์โดยอัตโนมัติโดยทำงานจากรหัสในการพัฒนา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 | @Robin-Moser | @revorge | @deexno | @fkrauss | @jupblb |