

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圖像,如撰寫文件的相應示例所示:https://github.com/photoview/photoview/photoview/photoview/tree/master/master/docker-compose%20Example
訪問https://photos.qpqp.dk/
用戶名:演示
密碼:演示
已經存在許多開源的自托照片庫。這是一些,只是提到一些。
那為什麼要再一個呢?我喜歡拍照,然後將所有照片存儲在本地文件服務器上。這很棒,因為我可以直接在文件系統上組織照片,因此很容易移動它們或備份。我希望能夠控制照片的存儲位置以及如何存儲。
但是,問題在於,即使在本地網絡上,原始圖像也非常乏味,可以從文件服務器導航。
我的服務器擁有許多我希望家人也可以訪問的舊家庭圖片。我想輕鬆地與其他人分享的一些圖片,而他們不必先製作帳戶的麻煩。
因此,我需要一個可以執行以下操作的解決方案:
所有的照片庫都可以做很多我需要的事情,但是沒有一個人能做所有的事情。
本節介紹瞭如何使用Docker在服務器上啟動並運行光值。確保您在服務器上安裝並運行了Docker和Docker-Compose。如果您想使用提供的
Makefile,也應安裝make,這是可選的(有關更多詳細信息,請參見步驟4)。7zz應該安裝,以防萬一,您想在備份方案的範圍中使用它,而不是默認的.tar.xz格式。在backup部分頂部的Makefile中閱讀評論以獲取更多詳細信息。
將docker-compose example文件夾的內容下載到服務器上的文件夾,您希望在其中託管PhotoView內部數據(數據庫和緩存文件)。
請注意,此文件夾包含2個Docker-Compose文件的版本:
docker-compose.example.yml全功能和建議大多數情況configdocker-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包含特殊字符(例如@),請確保將其編碼。
確保您的媒體庫的根文件夾以及所有用戶都可以讀取且可以搜索所有文件和子文件夾:運行下一個命令(或從Makefile中相應的命令序列):
make readable如果命令返回Permission denied錯誤,請在用戶下運行它們,並擁有相應的文件和文件夾。另外,請運行它們在命令之前添加sudo :這將把執行上下文切換為root用戶並詢問root密碼。您必須有權在系統中運行sudo 。
如果您不想將所需的權限授予others文件,則可以:您可以:
photoview服務卷中製作;然後將適當的權限設置為group部分。photoview服務卷中所有文件和文件夾的所有權轉換給該用戶;然後將適當的權限設置為user部分。如果您配置了來自主機上其他位置的媒體文件(例如host_photoview_media_family或其他任何東西)的其他媒體文件,則需要按照Makefile readable目標進行運行相同的命令,對於主機上的每個媒體根文件夾中的每個命令:將每個命令複製到shell上,將每個命令複製到shell,並將可變量替換為無需登錄媒體root folder / trailling traill / trail off trail ot trail ot traill / traill off / forter / obles trail other。為每個其他根文件夾運行兩個命令。
如果您沒有在系統中make或不想將其用於光伏管理活動,則可以使用Makefile中的相同命令並直接在外殼中運行它們,或者創建自己的腳本。在這種情況下,請確保首先使用或替換.env的變量。 Makefile僅出於您的便利性和簡單性而提供,但是可選的。
通過運行以下命令(或從Makefile的相應命令序列)啟動服務器:
make all如果端點或端口尚未在docker-compose.yml文件中更改,則可以通過http:// localhost訪問photoview:8000
如果所有內容都正確設置,則首次訪問網站時,應向您提供初始設置嚮導。

輸入新的用戶名和密碼。
對於照片路徑,輸入照片所在的Docker容器內的路徑。可以從photoview > volumes下的docker-compose.yml文件設置。默認位置是/photos 。
將創建一個新的管理用戶,並訪問位於初始設置下提供的路徑上的照片。
這些照片將必須在出現之前掃描,您可以通過導航到Settings並單擊掃描Scan All
我們建議在將PhotoView實例揭露在本地網絡之外之前:即使它提供了對您的媒體庫的讀取訪問並具有基本的用戶身份驗證功能,但這還不足以保護您的私人媒體免受Internet上的惡意演員的侵害。
確保自我託管服務的可能方法可能是(但不限於):
設置和配置所有這些保護措施取決於並需要有關您本地網絡和自託管服務的大量信息。基於此信息,配置流量和結果服務體系結構之間的架構可能會有很大差異。這就是為什麼在這個項目的範圍內,我們只能為您提供這種可能的網絡服務保護方法的高級列表。您需要調查它們,為您的情況找到最佳的組合和配置,並承擔以正確和一致的方式配置所有內容的責任。我們無法為您提供這種高度安全的設置的支持,因為由於安全限制,很多事情可能會有所不同。
可以通過定義PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION使用編解碼器來運行FFMPEG。該值應該是qsv , vaapi , nvenc之一。
我們僅在Intel芯片上使用qsv驗證了硬件加速度。為了讓它起作用,它必須映射/dev/dri設備並設置一個env PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv 。請參閱[docker-compose.example.yml](./ docker-compose example/docker-compose.example.yml)。
如果您驗證其他硬件加速度運行良好,請告訴我們。
?首先,感謝您對貢獻的興趣! ?
該項目是努力工作的結果,很高興看到您有興趣做出貢獻。貢獻不僅與代碼有關 - 您可以在許多方面提供幫助!
在開始之前,請花一點時間閱讀我們的貢獻指南。它包括有關我們的行為守則,提交拉請請求的過程等等的信息。
請記住,每個貢獻都很重要。讓我們一起使這個項目更好! ?
Docker開發環境很容易設置。它僅需要Docker和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現在可以在Localhost:4001訪問GraphQL操場。現在可以在Localhost訪問該網站:1234。更改代碼後,這兩個服務器都將重新啟動。
默認情況下,它將SQLite3用作數據庫。要使用其他數據庫運行服務器,請在dev-compose.yaml文件中更新PHOTOVIEW_DATABASE_DRIVER value並運行:
$ 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撰寫,而只是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現在可以在Localhost:4001訪問GraphQL操場。
筆記
該服務器以--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 ,建議在Debian中使用libatlas-base 。liblapackreflex :源代碼監視工具,該工具會自動重建並重新啟動從開發代碼運行的服務器。sqlite :SQLITE DBMS,如果您在開發環境中使用它,可直接與PhotoView的SQLite DB進行交互。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至.env/api PHOTOVIEW_SQLITE_PATHPHOTOVIEW_DATABASE_DRIVER如果您的
PGSQL_PASSWORD或MARIADB_PASSWORD包含特殊字符(例如@),請確保將其編碼。
/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 .現在可以在Localhost:4001訪問GraphQL操場。
在新的終端窗口中,運行以下命令:
cd ./ui
npm install
npm start如果要在代碼更改時自動重新編譯服務器:
$ cd ./ui
$ npm run mon現在可以在Localhost訪問該網站:1234。
@ericerkz | @Robin-Moser | @revorge | @deexno | @fkrauss | @jupblb |