利用photoprism搭建私有云相册

一、背景

之前通过icloudpd已经实现了iPhone照片自动备份到NAS上,接下来该如何对NAS上存储的大量照片进行分类规整,并且可以随时随地很方便的查询与查看呢?
这次给大家介绍一个非常优秀的非常优秀的项目photoprism,它官方宣传语是:Browse Your Life in Pictures(用照片浏览你的生活)。使用了一段时间,类似google相册,功能基本比较全了,AI人脸识别与分类,打标签,日期,地图查看模式,业务体验还是比较满意的。
至于隐私问题,大家可以放心,这是github上一个开源的项目,所有人都可以查看它的源代码,所以不存在任何后门的问题,部署在自己的设备上,也更加安心。
我的部署方案依然是在软路由OpenWrt下,使用docker容器部署。
官网:https://docs.photoprism.app
GitHub源码:https://github.com/photoprism/photoprism添加链接描述

二、准备工作

2.1 硬件环境准备

官方推荐程序运行在具有 2 个内核、3 GB 物理内存、1 个和 64 位操作系统的服务器上。且交换空间不少于4GB。
但我的环境就是J4125物理机上PVE虚拟出来的OpenWrt,分配了4核,3G内存。

2.2 软件环境

OpenWrt(宿主系统)、docker、docker-compose

2.3 yml准备

下载官网提供的模板:
https://dl.photoprism.app/docker/docker-compose.yml
根据需要自行修改里面的参数,私有部署的话,初始和数据库密码可以用默认的,或者改成你自己的认为安全的密码,但PHOTOPRISM_DATABASE_PASSWORD值MYSQL_PASSWORD一定要相同。
重点是修改volumes挂载参数,冒号前面是你的宿主系统绝对目录,冒号后面是photoprism镜像中的目录,例如我的挂载配置如下:

  - "/mnt/sdb1/back_photos:/photoprism/originals" 	#读取目录,例如你的照片存储在/mnt/sdb1/back_photos,就像我这这样一模一样的写,如果是别的目录,冒号前面就改成你实际的存储照片的目录
  - "/mnt/sda5/storage:/photoprism/storage"		#缩略图生成目录,这个一定要放到ssd硬盘并且一定要有足够大的存储空间,当照片多的时候,这个目录会非常大,实测5000张照片,大概占用9G左右
  - "/mnt/sda5/database:/var/lib/mysql" 	#数据库目录,建议跟前面storage存储在同一个目录下

三、正式操作

3.1 将yml文件上传至服务器

将- "/mnt/sda5/database:/var/lib/mysql"上传至OpenWrt系统,我放到了/mnt/sdb5目录下。

3.2 运行docker-compose

使用cd /mnt/sda5命令进入存放yml文件的目录,然后使用如下命令运行docker-compose,此命令会自动拉取,并启动镜像:

docker-compose up -d

3.3 解决首次启动报错

看报错是网络错误,这是因为容器默认生成的网卡名,在宿主机的docker0网卡中没有写入相关的连接信息,需要运行/etc/init.d/dockerd restart,重新启动docker后,网络就可以连接成功,再运行docker-compose up -d

root@OpenWrt:~# docker-compose up -d
[+] Running 20/20
 _ photoprism Pulled                                                              180.8s
   _ f7a1c6dad281 Pull complete                                                    14.9s
   _ b377614b0f06 Pull complete                                                    15.0s
   _ 0c2c940e9554 Pull complete                                                    15.1s
   _ e9b5c0bf6a18 Pull complete                                                   138.1s
   _ ac1a42218ddd Pull complete                                                   138.2s
   _ 282a9f48d157 Pull complete                                                   153.8s
   _ 5f5b0580fa21 Pull complete                                                   154.2s
 _ mariadb Pulled                                                                 123.5s
   _ e0b25ef51634 Pull complete                                                    26.3s
   _ 8aa3f605beb6 Pull complete                                                    26.4s
   _ c43298fa9eba Pull complete                                                    29.9s
   _ f565e2a61005 Pull complete                                                    34.8s
   _ 3b5a73a7467f Pull complete                                                    37.0s
   _ d219b4dd5889 Pull complete                                                    42.3s
   _ 008719f0a8ad Pull complete                                                    44.4s
   _ aaeae3f278f1 Pull complete                                                    46.7s
   _ 70478b6487c6 Pull complete                                                    96.0s
   _ 3737f687ab8c Pull complete                                                    96.2s
   _ 380823a8f0a6 Pull complete                                                    96.2s
[+] Running 0/0
 _ Network root_default  Error                                                      0.0s
failed to create network root_default: Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-033ca13fda8b -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))
root@OpenWrt:~# /etc/init.d/dockerd restart
root@OpenWrt:~# ls
docker-compose.yml  icloudpddjz_config  icloudpdxdx_config
root@OpenWrt:~# docker-compose up -d
[+] Running 3/3
 _ Network root_default         Created                                             0.1s
 _ Container root-mariadb-1     Started                                             0.9s
 _ Container root-photoprism-1  Started                                             1.6s

启动后,打开ip:2342,使用默认的admin/insecure登录,登录后,在setting中可以修改成中文。
在这里插入图片描述

3.4 更新到开发预览版(可选)

我发现使用latest镜像有个问题,就是遇到文件夹是中文目录的时候,如果文件夹名字过长,会无法读取到这个文件夹下的照片,这对使用影响是非常大的,通过git issues查询得知,开发预览版修复了这个问题。
更新到开发预览版的官方描述方法如下:
You can test upcoming features and improvements by changing the image from photoprism/photoprism:latest to photoprism/photoprism:preview in your docker-compose.yml. Then pull the most recent image and restart your instance.
释意:
你可以通过在docker-compose.yml文件中,把镜像从latest修改成preview,然后pull,再重启你的实例,来测试新的功能特性。

3.5 建立索引

登录到photoprism后,系统是不会自动建立索引的,需要在界面"库"功能中,手动启动索引,或在后台运行索引命令。
在这里插入图片描述

四、常用命令

需要注意的是,docker-compose命令必须在docker-compose.yml文件所在目录下运行,否则无法执行。

启动服务 docker-compose up -d
停止服务 docker-compose stop
下载更新 docker-compose pull
卸载 docker-compose rm -s -v
查看日志 docker-compose logs --tail=100 -f
显示配置值 docker-compose exec photoprism photoprism config
重复失败的迁移 docker-compose exec photoprism photoprism migrations run --failed
重置数据库 docker-compose exec photoprism photoprism reset
备份数据库 docker-compose exec photoprism photoprism backup -a -i
恢复数据库 docker-compose exec photoprism photoprism restore -a -i
更改管理员密码 docker-compose exec photoprism photoprism passwd
显示用户管理命令 docker-compose exec photoprism photoprism users help
显示面部识别命令 docker-compose exec photoprism photoprism faces help
索引面 docker-compose exec photoprism photoprism faces index
重置人物和面孔 docker-compose exec photoprism photoprism faces reset -f
将视频转码为AVC docker-compose exec photoprism photoprism convert
重新生成缩略图 docker-compose exec photoprism photoprism thumbs -f
更新索引 docker-compose exec photoprism photoprism index --cleanup
导入文件 docker-compose exec photoprism photoprism import [path]

重新扫描所有原件,包括已编入索引和未更改的文件。在重大升级之后,这可能是必要的。docker-compose exec photoprism photoprism index -f

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值