免费升级PhotoPrism到Essentials

详情可参考博文《Tutorial: Build your own unrestricted PhotoPrism UI》(需要科学查看)

最近想在 OMV 上部署私人云相册,然后就调研到了 PhotoPrism,但是它的免费版还是少了部分功能,尤其是没有管理命令行工具,还有就是我喜爱的地图功能受限了,所以就想着能不能免费升级到 Essentials 版本,然后就找到了上面的博文,按照博文的方法,显然出现了一些问题,我估计是因为 PhotoPrism 的版本更新了,所以对应不上。于是我就自己把源码下载下来看了下,发现新版本有个很简单的方式可以免费升级到 Essentials 版本,就是在源码中添加一个 sponsor 属性即可。

升级步骤如下:

  1. 下载源码:

    git clone https://github.com/photoprism/photoprism.git 
    
  2. 进入开发环境

    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 的配置删掉。
  3. 打开配置文件/go/src/github.com/photoprism/photoprism/frontend/src/common/config.js, 并且插入sponsor: true, 到类Config.Constructorthis.values属性中,如下所示:

    export default class Config {
      /**
      * @param {Storage} storage
      * @param {object} values
      */
      constructor(storage, values) {
          # ...
          this.values = {
              mode: "test",
              name: "Test",
              sponsor: true,
          };
          # ...
      }
    }
    

    修改之前的代码如下,可作为对比:

    export default class Config {
      /**
       * @param {Storage} storage
       * @param {object} values
       */
      constructor(storage, values) {
          # ...
          this.values = {
            mode: "test",
            name: "Test",
          };
          # ...
      }
    }
    
  4. 编译源码,构建前端资源:

    make build-js
    
    • 构建完毕后,资源被放置在容器的assets/static/build/目录中
  5. 退出开发容器

    exit
    
  6. 查看容器photoprism/photoprism:develop的ID

    docker ps
    
  7. 将容器中的资源目录拷贝出来:

    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 步骤中得到的结果
  8. 然后把该 资源 替换掉 PhotoPrism 容器中的资源,通过挂载的方式:

    services:
        photoprism:
    
            #...省略
    
            volumes:
                - "/home/username/my_photoprism_ui/build:/opt/photoprism/assets/static/build:ro"
    
            #...省略
    
    • 由于只是一个前端资源,因此挂载为只读即可
  9. 进入到你正式的 PhotoPrism 的 docker-compose.yml 所在目录,然后启动 PhotoPrism 容器:

    docker-compose up -d
    

评论