

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 |