本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:sewer
创作立场声明:分享如何通过docker安装带人脸识别功能的nextcloud环境
目录
前言
群晖升完7.0.1后非intel核显cpu的机子暂时人脸识别就不行了,无意中知道nextcloud也有类似功能就想着玩一下,为了方便安装人脸识别库选择的是iamklaus的nextcloud:latest镜像,本来如果和一般的docker镜像拉下来就直接可以用也就没有这篇文章了,但是没想到这个镜像所包含的22.2.0.2版本有很大的bug,有些写法并不兼容php8,直到22.2.1才修复,因为写作时已经发布了22.2.2.0版本所以后面就以最新版为例,除这个问题之外插件也有一些需要操作的命令不在镜像介绍页面里,总结遇到的各种坑之后我还重装了很多次来精炼安装步骤,如果大家“网络没有问题”应该可以一次搞定。
PS:其实也可以拉其他已经更新了新版的镜像然后自行安装人脸插件环境,但是因为前者已经让我花了不少时间(就像Z女一样让对方感觉好像能搞定才会不停的付出)所以就留给感兴趣的人去试了。
前提
1. nextcloud app必须使用https环境,不想折腾的就不要看了,想折腾的参考
2. 假设你已经知道ssh等基本操作命令,会设置反向代理,端口转发,docker容器参数等,建议提前设置好https的端口转发和反向代理
安装步骤
1. 按照官方镜像hub.docker.com设置mysql/redis(只是临时装着看看应该可以跳过但是遇到问题可能不太方便查看,MYSQL_HOST如果端口不是3306要加上,MYSQL_PASSWORD填root密码就行,MYSQL_USER直接填root就行实际并不会真的用root,MYSQL_DATABASE数据库名称自定就行,REDIS_HOST如果redis端口不是默认值需要再加一个REDIS_HOST_PORT)以及挂载目录到/var/www/html,配置好端口并修改环境变量PHP_MEMORY_LIMIT=2G,容器名称nextcloud,端口啥的自选,启动容器
2. 打开局域网地址填写用户名密码进行安装,报错mysql连接不上不用管(前提是不是真的连不上),再填写一遍点一次安装,下载download.nextcloud.com并上传到挂载目录后ssh到群晖执行:
sudo docker exec -it nextcloud bash
进入到容器后执行:
echo PHP_MEMORY_LIMIT=2G > /etc/environment
echo "alias ll=ls -l" >> /etc/environment
source /etc/environment
rm -rf /usr/src/nextcloud/
unzip nextcloud-22.2.2.zip
chown nobody.nogroup -R nextcloud
mv nextcloud /usr/src/
3. 等待安装完成后修改config/config.php添加https域名到trustdomains
trusted_domains =>
array (
0 => 192.168.1.141:80080,
1 => xxx.v6.navy:8008,
),
像这样把你的https域名和端口加上去
4. 上传覆盖后执行chown www-data.root config/config.php,停止容器,编辑环境变量加上OVERWRITEPROTOCOL=https后启动,这之后可以用https域名访问,手机app也可以正常使用(查看容器日志,确认upgrade字样的操作结束,进入到启动apache之类的步骤)
5. 再次进入容器,执行
mv facerecognition/ custom_apps/
chown www-data.www-data -R custom_apps/facerecognition/
6. 点右上角头像进入应用页面 -> 已禁用的应用,找到facerecognition点启用,之后点右上角头像进入设置页面就可以看到面部识别,先点上面个人栏的面部识别,勾上分析我的图像后点击管理栏的面部识别
7. 继续在容器内执行 su -s /bin/bash -c "/var/www/html/occ face:setup -m 1" www-data,成功后刷新页面就可以看到下端配置信息里会显示Current model: 1,把上面三个参数随便拖动一下点一下右边的保存,然后手机app登录进入photos目录,选择从其他应用上传(这样才能看到缩略图,毕竟免费软件很多功能不完善),这时候页面就可以看到当前状态:队列中有xx张图片
面部识别设置
8. 后台默认30分钟处理一次人脸(别看日志里经常出现crond,但是配置的就是30分钟),所以最好一次多传几十张带人脸的,分析完后回到上面个人栏的面部识别里,如果成功会多出一个识别发现的人按钮,点击进行设置即可
面部识别个人
其他
1. 为了方便复制所以命令都是文字,那种连起来的命令可以直接复制然后粘贴执行,记得最后要按一下回车,所以如果“网络好”那就其实很快就装完了,不好那么有些步骤会无法完成
2. 手机app登录的时候有时候会莫名其妙的的需要登两次,然后还会提示检测到多次尝试登录,解决方案是清空mysql你填写的数据库里oc_bruteforce_attempts表里所有数据
3. 需要较多的图片才能触发分群功能,1000张已被处理的图片或者95%的图片已被处理,真正执行人脸识别的日志是这样的,没有出现这种1到10步的日志其实并没有执行
识别日志