分类目录: 移动互联

安装 FileRun,HomeNAS 秒变网盘

HomeNAS上面虽然可以使用SFTP、WebDAV和NAS等协议分享文件,但是在易用性上面还是不如网盘的短连接+简单密码的方式好用。一直想找一个类似网盘的HTTP短连接分享的系统。EMBY的分享按钮似乎不能正常工作,更别谈使用带密码校验的功能了。之前Windows系统的Everything,只支持单个账户登录。

集中搜索了一下类网盘的解决方案,发现NextCloud、H5AI和FileRun都有类似功能,首先安装了NextCloud,发现其只能管理新上传的文件,所有文件必须进入了NextCloud的数据库才能被管理起来,NextCloud提供了命令行工具,扫描指定目录的所有文件和目录加入到其数据库中,但是每次目录有变化都需要重新扫描,不是太友好。直接放弃。

H5AI就没有尝试,主要发现该软件多年未更新。

最后FileRun,从软件的主页上面就看到了不需要导入文件的介绍:

FIleRun

使用docker镜像安装,网上其他资料都是介绍的使用docker-compose安装的,这里我本机已经有mysql的容器在运行了,因此直接使用docker run启动FileRun容器:

docker run -d \
--name filerun \
-p 8080:80 \
-v /opt/filerun/html:/var/www/html \
-v /media:/user-files \
-e FR_DB_HOST=yourdbhostip \
-e FR_DB_PORT=3306 \
-e FR_DB_NAME=filerun \
-e FR_DB_USER=filerun \
-e FR_DB_PASS='yourdbpasswrod' \
-e APACHE_RUN_USER=www-data \
-e APACHE_RUN_USER_ID=33 \
-e APACHE_RUN_GROUP=www-data \
-e APACHE_RUN_GROUP_ID=33 \
afian/filerun

其中/media是HomeNAS希望被管理的文件的根目录。使用superuser:superuser登录后,修改默认密码,完美呈现出media目录的所有文件。所有的文件相关操作均可在FileRun的WEB客户端上面操作。也能使用链接分享文件或者目录。访问分享链接的客户能在页面上一键打包下载所有文件,也能单个下载某个文件。

image

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:WEB网络 | 标签: , , , , |

使用Emby + Picard管理音乐

最近把NAS上面累积下来的音乐都整理了一下,用emby建了一个音乐集。emby自带musicbrainz的插件,能从这个强大的音乐库中搜索MP3的元数据信息。然后从多个维度对音乐进行分类呈现。但是有个问题,很多MP3经过各个二道贩子编辑后,关键元数据信息都跟音乐本身没有任何关联了,因此自动搜索出来的元数据匹配存在一些问题,甚至有的MP3文件经过转码后,只剩下音乐本身,tag元数据全部丢失。只能人工填写,一两千个文件,逐一搜索排查可想而知难度有多大。找到了picard这个工具,可以自行匹配,然后没有匹配的再人工搜索,这样极大提高了准确率。比emby自动但是做了的错误的匹配要好的多。经过picard处理后的音乐文件再导入到emby中,就能准确识别歌手,专辑等信息,进而补充下载专辑唱片封面图等。

难得的是,picard在Win、Linux和Mac平台都能使用。对于Ubuntu 20,使用官方给出的命令很快就能安装成功:

sudo add-apt-repository ppa:musicbrainz-developers/stable
sudo apt-get update
sudo apt install picard

软件界面截图:
picard

导入/emby的效果:
emby

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:数码硬件, 软件应用, 软件技术 | 标签: , , , |

基于Dlib、Flask和Sqlite的人脸检测和识别服务

这个十一原定的计划取消了,没有做好备份计划,也就不打算出远门了,关在家里,把一直都想做的一个本地化的人脸识别服务整了一下。提供人脸分析的开源服务似乎很多年都没有大的变化了,一直都是Dlib和OpenCV,对比了一下,Dlib更容易使用。一直没有正经写过Python代码,翻出N年前买的Python编程书,边翻书Google、边写代码。基本的代码流程比较简单,Dlib官方也有例子,很容易运行起来,但是要服务化,要做人脸比对,并且是增量的人脸比对和识别,并不容易。说做就做,最终整个服务形成如下架构。

架构图:
image

代码和部署使用方法在如下git工程:https://git.codefine.site:3000/Shentar/facerec

首先需要将探测的过的“人脸”存储起来,然后能输入一张人脸返回与该人脸近似的所有人脸,这样客户端好做人脸归集。很快做好了一个初步的框架:使用Flask提供REST接口接收照片,在响应中返回人脸的特征标识,使用SHA256对人脸68点位的描述向量进行HASH,返回给客户端。同时将HASH值和实际的token存储到Sqlite。第一天大概就完工了这个功能。

运行起来,发现单纯的Flask不能并发,第二个请求会报错,一次只能接受和处理一个请求。于是又按照网上的经验,使用Gunicorn和Gevent来做多线程的方案,因为习惯了单进程多线程的方式,多线程访问Sqlite需要加锁,按照通用的做法,使用一个队列来管理Sqlite实例。继续验证,发现多线程并不能加速Detect的效率,貌似Dlib不支持多线程加速。调整为多进程,四个CPU都能运用起来。

1d2dd2b5bcde40b6a563996821d84843

终于找到了一个能将这个3.2GHZ的四核CPU跑满的业务了 ^_^

Architecture: x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              2
Core(s) per socket:              2
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           94
Model name:                      Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz

人脸检测的效果还不错,错误率的话,自己家用是够了。特别是在侧脸检测上面,比较准确。在人脸比对方面,错误率就要高一些了,反复验证,发现0.36的比对阀值比较合适。侧脸虽然检测率高,但是在比对上面,只用通用的拟合范数,结果会表现为差异很大。因此这里应该是需要有定制化的比对实现,只做部分比对。这块需要深入到人脸检测技术内部,去分析128D的特征值向量的每一个值,短时间内没办法去研究透了。

由于采用了多进程,因此没法共用一个Sqlite运行时实例,强行并发读写访问会导致数据库错乱,不得不又做了一个服务来封装Sqlite,多个检测进程输出的人脸特征值都发给该服务来顺序存储,同时也返回给客户端。两个服务之间同样采用REST接口交互。

准备大规模上量,将jAlbum目前使用的线上人脸识别服务切换到这个本地服务上面,又发现检测时长非常高,一张4M的图片,大概需要几秒的时间,并且还有些非常小的区块被检测到了。对于检测慢的问题,考虑降低输入的照片的像素,图片减小后,长宽的像素点都相应减少了,但是人脸的特征点并不会损失太多。因此先对图片进行降低像素和尺寸,识别完成后,对识别到的人脸在照片上的位置也要相应做缩放,对比了一下,原始大小检测和缩放后检测,再对结果做相反的缩放,最终结果误差不大,但是这样能极大提速。对于非人脸和质量不高的人脸被检测到的问题,做了一些粗浅的限制,人脸长宽必须大于100的阀值才认为是正常的人脸。Dlib应该有正统的输出人脸的质量的参数,查了很久,没有找到合适的方法,就只能先这样吧。在比对方面,还有一些重要的概念,没有弄明白,如人脸对齐、年龄、性别检测等,不清楚我的代码里面是否已经有调用已经做了这块。

具体的处理代码:

data = np.frombuffer(data, np.uint8) 
if data is None: 
    raise Exception('image is required.') 

zoom_ratio = 1 
if data.size > 6 * 1024 * 1024: 
    img = cv2.imdecode(data, cv2.IMREAD_REDUCED_COLOR_4) 
    zoom_ratio = 4 
elif data.size > 4 * 1024 * 124: 
    img = cv2.imdecode(data, cv2.IMREAD_REDUCED_COLOR_2) 
    zoom_ratio = 2 
else: 
    img = cv2.imdecode(data, cv2.IMREAD_COLOR) 

faces = [] 
dets = detector(img, 1)

总的来说,开源项目,适合做一下Demo,如果要尽善尽美,那么就要深入到源码,有针对性的去优化检测和比对模型。作为个人的实验和家用还是很不错的。至少在快速编程和服务化这方面。

| 1 分2 分3 分4 分5 分 (5.00- 2票) Loading ... Loading ... | 同时归档在:WEB网络, 数码硬件, 架构设计, 软件应用 | 标签: , , , , , |

docker本地安装tiny tiny rss记录

# 启动mariadb 10.0.38
docker run --name mariadb -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD='password' \
-d mariadb:10.0.38

# 安装docker php 5.6
docker run -p 9000:9000 --name php \
-v /opt/codefine.site/:/opt/codefine.site/ \
-v /opt/codefine:/opt/codefine \
-v /media/c2/php//conf:/usr/local/etc/php \
-v /media/c2/php/logs:/phplogs \
-v /opt/phpmyadmin:/opt/phpmyadmin  \
-d php6:latest

# 安装php插件。借助于内部家里的内部梯子。懒得设置debian镜像。
export http_proxy=http://22.22.22.14:10080
apt update
apt install libxml2-dev
apt install libxml2
apt install libcurl3
apt install libcurl4-gnutls-dev
ln -s x86_64-linux-gnu/curl curl
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev

docker-php-ext-configure gd --with-freetype --with-jpeg
docker-php-ext-install -j$(nproc) gd
docker-php-ext-install mysql
docker-php-ext-install mysqli
docker-php-ext-install intl
docker-php-ext-install pdo
docker-php-ext-install pdo_mysql
docker-php-ext-install fileinfo
docker-php-ext-install xml
docker-php-ext-install mbstring
docker-php-ext-install json
docker-php-ext-install opcache

docker-php-ext-enable intl
docker-php-ext-enable pdo
docker-php-ext-enable pdo_mysql
docker-php-ext-enable fileinfo
docker-php-ext-enable xml
docker-php-ext-enable mbstring
docker-php-ext-enable json
docker-php-ext-enable opcache
docker-php-ext-enable mysql
docker-php-ext-enable mysqli
docker-php-ext-enable gd

# 生成新的镜像。
docker save -o php.tar php
docker load -i php.tar
# 重新run一个新的container。

# nginx
cat /etc/nginx/sites-enabled/ttrss
server {
	listen 12345 ssl;
	root /opt/codefine.site/;
	index index.php index.html index.htm;
	server_name photo.codefine.site;
	ssl_certificate     /path/of/server/file.pem;
	ssl_certificate_key /path/of/server/key/file.pem;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass   127.0.0.1:9000;
	}
}
| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:软件应用, 软件技术 | 标签: , , , |

Home NAS上可以运行哪些有趣的服务?

一、jAlbum

“自研”的相册管理程序,介绍和部署方法参考《jAlbum——Java WEB版相片管理系统 》。

二、代码托管服务器

国内访问github总是非常慢,所以把代码托管到HomeNas上面。使用gogs

三、文件备份工具

接收各个终端上面备份的视频、照片文件。使用sync搭建,目前墙内无法访问该工具的官方网站。现在有开源免费的替代方案:Syncthing

四、Everything

everything本来是一个Windows系统的本地文件搜索工具,以其高效而著称,在IT从业人员中使用非常广泛。其开放WEB访问方式,支持远程搜索和下载文件,远程办公时访问HomeServer上面的文件非常方便。遗憾的是,至今其都不支持HTTPS方式访问,并且用于认证的用户密码机制非常原始。可能是作者为了保持该软件的健壮和简单,不愿意加入更多的小众化功能。

五、Emby Server

媒体管理平台,支持各大平台部署Server端,支持众多的终端部署客户端应用。免费版本的客户端限制较多。当然网上也流传着各种破解方法。 在HomeServer上面部署Emby主要用于管理电视剧、小孩子看的动画片、无损音乐和超清电影,没有广告干扰的娱乐时光还是很惬意的:) 其中电影自动搜索字幕比较有用。但是对于非电影文件,按照电影去搜索元数据时,会出现匹配错乱的问题,因此非电影文件的库都是禁用自动更新元数据。

六、RSSHub

这年头,RSS源越来越少了,只能自行部署一个RSSHub,目前主要用这个工具的客户端快速提取正在访问的网页中的RSS Feed。服务端能起的作用似乎还有限,也可能是还没有完全整明白这个该怎么用。

七、博客静态文件托管服务

在香港的一个主机提供商那里购买的丐版空间,只有1G的文件存储容量,博客中日积月累的各种图片和PDF已经将空间耗尽,还有Reader和博客的数据库文件其实也是分享的这1G的空间,而各大公由云的对象存储又收费,想着家里的NAS每天开机也是闲着,就再承担点负载。将网站的所有静态文件都从“自研”的托管服务上面出,模拟主流对象存储的API实现了类似镜像存储的机制。将所有图片本地保存。这样可以定期清理博客托管服务服务上面的图片和附件等。 当然还有最基本的NAS文件共享服务、远程访问服务、偶尔当梯子给其它终端代理、作为下载机等普通功能都不在话下。 不知不觉家里一个小小的Server上都部署了十来个服务。其实,HomeServer就缺了一个完整的80和443等端口,如果国内电信服务提供商开放这些端口,那么都不用购买任何网站托管服务了,直接在HomeServer上面运行所有网站相关的任务。这样不仅省钱,还便于管控。不过话也说回来,电信封了很多端口,对HomeServer的维护来说,也解决了网络安全的问题。

八、WebDAV服务

2020-8-9更新:增加WebDAV服务,使用go编写的caddy和webdav插件搭建。主要服务于跨平台的笔记服务:Joplin,除了界面不如印象笔记,功能上已经够用。有了WebDav,能做的事情就比较多了,如: 1、管理个人密码的keepass; 2、备份油猴配置和脚本; 3、当作网盘直接在桌面系统中挂载使用。

九、Cockpit服务

2020-8-27更新:增加cockpit服务,并替换自签名证书。

十、部署VMPlayer

用于运行两个虚拟机: 一个是Win10系统:1、用于搭建科学上网的客户端,给其他设备提供代理服务,科学上网这块在Win生态下的工具远比Linux系列的丰富和易用。这样不用每个终端都安装各种工具,只需要配置代理指向该Win系统即可。2、安装迅雷,现在下载没有迅雷,啥资源都是Kbytes/s的速度,难以忍受,毋庸置疑,资源都已经被迅雷垄断了,迅雷充当了CDN的作用。 另外虚拟化了一个黑群晖,主要用于体验群晖系统,其实群晖能做的事情,在这个HomeNAS上面都有了,只是想体验一下群晖的易用性。惊奇的发现,在虚拟机里面虚拟化出来的磁盘(600GB),磁盘落在EXT4文件系统上面,然后再经过群晖的文件共享出来使用,这个共享跟NAS上面原来的共享在性能上面没有任何差异,甚至更稳定,写速率稳定在112MB/s,是不是经过Vmware和EXT4文件系统两级缓存之后,速度跟均衡。装一个空壳的宿主机,把所有硬盘都交给虚拟机的黑群晖管理,也不失为一种新的NAS玩法。

十一、部署Docker

安装docker,并配置远程访问,dockerd监听本地端口,配置TLS证书。运行portainer,实现远程管理docker实例。运行wiz笔记程序,体验不同于joplin风格的为知笔记,该笔记在抓取网页方面有所欠缺,但是界面还有性能上面非常不错。

十二、人脸识别服务

参考《基于Dlib、Flask和Sqlite的人脸检测和识别服务》。

十三、FileRunFileBrowser

可以将HomeNAS瞬间变网盘,主要用于解决文件分享、带校验码分享的场景。另外也可以用这个来直接通过页面操作远端文件的增、删、改、查。参考链接安装 FileRun,HomeNAS 秒变网盘

十四、Grafana

使用docker部署Grafana、普罗米修斯和Node-exporter监控服务器的磁盘、CPU、内存和网络等消耗。

十五、Chevereto图库服务

部署图库服务,可以作为图床、相册等使用。简单高效管理图片。

十六、为知笔记

一个界面非常友好,功能强大的多设备、多用户,跨网络同步的笔记服务。

十七、RSS阅读器

参考《架设Tiny Tiny RSS(TTRSS)阅读器,找回Google Reader!

十八、自研爬虫

运行各种新闻和电影BT下载爬虫程序。

十九、音乐服务

参考《Home NAS 音乐服务解决方案

二十、在线电子书库

安装基于Calibre的电子书在线阅读和管理服务:源码Docker仓库,本站书库:代码人生

二十一、MinIO

自托管的对象存储服务,兼容Amazon S3。安装指导:链接

二十二、Transfer.sh

一个非常好用的临时文件共享服务,客户端和服务端均使用最简洁的HTTP请求上传下载文件。可在此试用本站的Transfer.sh服务:链接

二十三、Matomo

非常好用的站点统计工具,Google Analytics的自建替代品,自建站点统计服务。对于Wordpress博客,甚至可以直接使用插件集成所有服务端的功能。

二十四、OnlyOffice

在线Office,可以完全替代本地的Office。官网的文档介绍太弱,安装过程中有一些坑,并且官方提供的镜像太臃肿,我做了少量精简。安装过程总结如下:《HomeServer安装在线Office:Docker安装最新精简版OnlyOffice》

服务列表

| 1 分2 分3 分4 分5 分 (5.00- 2票) Loading ... Loading ... | 同时归档在:WEB网络, 建站技术, 数码硬件 | 标签: , , , , , , , , , , , , , , |

Stay hungry, Stay young (转载自网络)

1983年出生的张一鸣 ,在2005年从南开大学毕业后,至今参与创办了5家公司,今日头条、抖音、内涵段子等知名APP之父,2013年,他先后入选《福布斯》“中国30位30岁以下的创业者”和《财富》“中国40位40岁以下的商业精英”,是目前国内互联网行业最受关注的青年领袖之一。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 2票) Loading ... Loading ... | 同时归档在:职业发展 | 标签: , , |

家用NAS组网

不满足于之前的树莓派搭建的HOME NAS,又折腾了一套X86的低功耗版NAS服务器,将之前放在硬盘盒里面的硬盘都规整到了NAS服务器内。直接安装Windows Server 2012版本,配置简单。

不断增加网络设备,突然发现家里的网络越来越复杂,首先把家里的网络设备连接图整理出来记录一下。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 同时归档在:WEB网络, 数码硬件 | 标签: , , |

jAlbum 0.1.6版本截图

新增主要功能:修改页面适配手机屏幕。

Android 手机截图效果:

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 15票) Loading ... Loading ... | 同时归档在:Java, Jetty, WEB网络, 软件技术 | 标签: , |

2014盘点,2015趋势汇总

【科技圈十大系列】
2014国外科技圈的9大焦点:http://dwz.cn/zuMYK
2014年《环球科学》十大科学新闻:http://dwz.cn/zuKfJ
2014十大科技谣言出炉 转基因危害居首:http://dwz.cn/zuKhr
盘点2015年十大科技趋势:手机屏幕更大:http://dwz.cn/zuKiQ
[视频]2014年度Android商城十大争议应用:http://dwz.cn/zoH8z
2014年最佳科幻、奇幻短片:http://dwz.cn/zuKcy
2014年P2P十大事件:“跑路”狂潮吓不住银行大军杀入:http://dwz.cn/zuK9K
TECH2IPO/创见年终策划:2015 年互联网 50 大预测:http://dwz.cn/zuK73
2015 年原生广告、电视及电子邮件营销趋势:http://dwz.cn/zuN2U
Bing盘点2014年最佳主页背景图:http://dwz.cn/zuN5W
2015年国内存储市场值得关注的5家初创公司:http://dwz.cn/zuNcl
专业解读!2015—2016视觉设计流行趋势预测(一):http://dwz.cn/zuNet
回望 Linux 和开源技术 2014 的大起大落:http://dwz.cn/zuNgZ
2015 年,建议你开始以下新尝试:http://dwz.cn/zuNiT
年终盘点:2014产业地产十大关键词有哪些?:http://dwz.cn/zuNla
“解读2014”年终技术盘点之“云计算”篇发布:http://dwz.cn/zuNmM
【爱范品】第二十二期:年度范品 TOP 5:http://dwz.cn/zuNqn
2014十家最酷的大数据创业公司:http://dwz.cn/zuOIG

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.40- 10票) Loading ... Loading ... | 同时归档在:文字网摘 | 标签: , , , , |

NAS解决方案实现多媒体文件共享播放

现在笔电或者平板设备,由于使用了高端的SSD存储,空间大小一般有限。而台式机经过几代的发展,已经能支撑起海量存储空间了。那么能否实现高清视频等文件在多个设备间共享呢?当然是可以的。各种即时聊天或者互通软件都实现了在WiFi下直接与电脑之间同步文件。如:QQ同时在电脑端和PC端登录,那么可以直接从电脑访问手机上面的存储的内容,反之亦然。但是一般而言这不是通用的解决方案,只是软件实现了自己的文件共享功能。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.82- 11票) Loading ... Loading ... | 同时归档在:存储技术, 软件技术 | 标签: , , , |
返回顶部