免费升级PhotoPrism到Essentials
详情可参考博文《Tutorial: Build your own unrestricted PhotoPrism UI》(需要科学查看)
最近想在 OMV 上部署私人云相册,然后就调研到了 PhotoPrism,但是它的免费版还是少了部分功能,尤其是没有管理命令行工具,还有就是我喜爱的地图功能受限了,所以就想着能不能免费升级到 Essentials 版本,然后就找到了上面的博文,按照博文的方法,显然出现了一些问题,我估计是因为 PhotoPrism 的版本更新了,所以对应不上。于是我就自己把源码下载下来看了下,发现新版本有个很简单的方式可以免费升级到 Essentials 版本,就是在源码中添加一个 sponsor
属性即可。
升级步骤如下:
-
下载源码:
-
进入开发环境
git clone https://github.com/photoprism/photoprism.git cd photoprism make docker-build docker compose up -d make terminal make dep
- 运行上述命令后,应该就进入开发容器中了,这时候终端显示类似
photoprism@230425-lunar:/go/src/github.com/photoprism/photoprism
,并且前端的源码目录在frontend/src/
。 - 注意:如果
docker-compose up -d
运行失败,请看错误信息,是否是因为端口冲突,如果是的话建议直接把文件中所有ports
的配置删掉。
- 运行上述命令后,应该就进入开发容器中了,这时候终端显示类似
-
打开配置文件
/go/src/github.com/photoprism/photoprism/frontend/src/common/config.js
, 并且插入sponsor: true,
到类Config.Constructor
的this.values
属性中,如下所示:export default class Config { /** * @param {Storage} storage * @param {object} values */ constructor(storage, values) { # ... this.values = { mode: "test", name: "Test", sponsor: true, }; # ... } }
修改之前的代码如下,可作为对比:
-
编译源码,构建前端资源:
- 构建完毕后,资源被放置在容器的
assets/static/build/
目录中
- 构建完毕后,资源被放置在容器的
-
退出开发容器
-
查看容器
photoprism/photoprism:develop
的ID -
将容器中的资源目录拷贝出来:
docker cp <container-id-of-photoprism:develop>:/go/src/github.com/photoprism/photoprism/assets/static/build /home/username/my_photoprism_ui/build
<container-id-of-photoprism:develop>
是在6
步骤中得到的结果
-
然后把该 资源 替换掉 PhotoPrism 容器中的资源,通过挂载的方式:
services: photoprism: #...省略 volumes: - "/home/username/my_photoprism_ui/build:/opt/photoprism/assets/static/build:ro" #...省略
- 由于只是一个前端资源,因此挂载为只读即可
-
进入到你正式的 PhotoPrism 的
docker-compose.yml
所在目录,然后启动 PhotoPrism 容器: