分类目录: WEB网络

记一次WordPress手动升级

本站用的Wordpress版本(4.8.2)有些老了。从主程序的代码记录来看上一次升级还是17年的事情,快三年了。

image

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 2票) Loading ... Loading ... | 同时归档在:建站技术 | 标签: , , , , |

整理一下HomeNas上面跑的服务列表

一、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风格的为知笔记,该笔记在抓取网页方面有所欠缺,但是界面还有性能上面非常不错。

服务列表

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

使用let’s encrypt制作免费HTTPS证书

在外网访问家里的NAS服务器上面的jAlbum相册时,使用HTTPS更安全。之前使用的一直是自签发的证书,在自己的手机上面导入了自签发证书的CA,因此浏览器一直显示安全的绿色。今天在其他手机上面使用HTTPS访问时,打不开页面,使用HTTP访问则没问题,很快就想到这是证书的问题,自签发证书的根证书没有安装。但是总不能每次有新的设备访问时就要求其安装CA证书,除非这个服务能做到像12306那么不可或缺(12306上线很多年都不购买商用证书,一直要求用户下载证书安装到本地,这种做法很危险)。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 同时归档在:建站技术 | 标签: , , , , , |

记录一下最近修改的两个Bug

最近改了两个jAlbum的bug,问题并不复杂,但是比较有代表性。在这里记录一下。第一个问题是,在单张照片的页面提供了一个“隐藏”当前照片的按钮。当点击该按钮时,页面重新load,显示下一张照片,使用了当前照片的ID来构造下一张照片的url,即加载url:
/?next=[currentphotoid]&count=1,
具体到服务端接收这个请求时,需要使用当前照片的ID到数据库中索引下一张。
然后对当前照片发起删除操作,即使用ajax发起一个HTTP请求:
DELETE /photos/[currentphotoid]
向服务端发送一个delete请求,具体的浏览器端代码为:

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 同时归档在:Java, 多线程编程 | 标签: , , , |

给CSDN极客和开发者头条增加RSS源

CSDN极客,网址:http://geek.csdn.net/,经常有一些比较好的链接,对于程序员来说,有一些阅读学习价值。不知从何时开始该网站不再提供RSS订阅,这对于RSS重度使用者来说有点难以忍受。因此花了一下午时间做了一个抓取该网站头条主页内容生成RSS订阅地址的实现。使用PHP后台抓取网页内容,对内容进行正则匹配后过滤出有价值的链接,生成RSS XML格式文档后返回。订阅地址为:http://codefine.site/rss_factory?url=geek.csdn.net。同样,也给支持开发者头条(https://toutiao.io)新增了RSS源:http://codefine.site/rss_factory?url=toutiao.io

订阅效果:

CSDN极客订阅

阅读全文 »

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

Linux TCP Backlog机制分析

前一阵子遇到一个奇怪的问题,分析了很久,最后查阅了一些资料,找到了问题的原因,是TCP的backlog机制的原因。首先描述一下重现问题的现象和过程: 构建一个TCP的服务端,监听端口4321,只监听请求,不accept,客户端不断发起连接,观察TCP连接建立的情况。服务端程序代码如下:

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 同时归档在:IO编程, Linux内核, 算法数据结构 | 标签: , , |

家用NAS组网

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

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

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 同时归档在:数码硬件, 移动互联 | 标签: , , |

jAlbum 0.1.6版本截图

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

Android 手机截图效果:

阅读全文 »

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

开源照片整理系统jAlbum 0.1.3版本发布

第三个版本,jAlbum完整版差不多完工了:https://github.com/shentar/jAlbum/releases/tag/jAlbum_0.1.3

最后解决了文件系统监控的问题。利用Java1.7封装的文件系统的通知回调机制,实现对指定目录的递归监控,避免每次全盘扫描性能太低的问题。

注意对于linux系统对于单个用户能够监听的inotify对象个数做了限制,一般是限制为8192,因此需要修改系统内核的配置:在/etc/sysctl.conf文件中,新增一行:fs.inotify.max_user_watches=1000000,表明将该限制修改为100万个。下次重启后会生效,如果希望当前立即生效,则需要执行命令:sysctl –p 。

对于WatchService,只监控当前目录的变化,当前目录下新增文件或者文件夹时,当前文件夹会有修改事件或者创建事件,但是再下一层的文件夹或者文件发生变更时,并不会有任何事件,因此如果要监控指定的文件夹,需要递归监控到最后一层。没有验证文件系统的notify机制对进程性能和文件系统性能的影响,在树莓派上面简单验证了下,能够非常及时的发现新增文件,进程CPU和内存也没有明显的增加。终于解决了每次都有依赖全盘扫描一遍文件才能发现新增的文件的问题。

具体代码请参见源码中的DirWatchService类。

| 1 分2 分3 分4 分5 分 (5.00- 9票) Loading ... Loading ... | 同时归档在:Java, Jetty, 数据库, 软件技术 | 标签: , , |

家用网络相册jAlbum安装使用指南

简介

在搭建了基于Home NAS系统之后,使用btsync工具将家里的各个终端:台式电脑、笔记本和家人的各个手机上面的图片、拍摄视频、微信视频等文件都集中备份到了Home NAS上面。发现各个设备上面的图片存放时并没有非常严谨的分类,并且有大量的重复照片,就想着做一个照片、视频管理系统放在Home NAS上面持续运行并提供相册服务。系统前端提供web访问接口,浏览器可以直接访问,后台生成一个简易相册库,以WEB页面的方式供各个终端查看和下载照片。 想到哪儿做到哪儿,并没有非常详尽的需求分析分析和软件设计。最终实现了如下功能:

  1. 实时监控和搜集指定目录的所有照片文件:jpg,png类型,所有视频文件:mp4。建立一张sqlite3数据表,存储所有照片的路径、时间、指纹和长宽比等信息。系统也支持运行在目前各个主流的操作系统:MS Windows、MAC OS和Linux上面,免安装部署。
  2. 对1步骤生成的照片库根据照片的指纹值进行剔重,生成一张新的表,确保内容相同的照片只存一条记录。并且所有记录按照媒体文件的拍摄时间顺序排列。
  3. 提供RESTful的接口供浏览器访问和获取相册。提供分年、月、日的视图。在前端呈现上面直接使用Java生成web页面,没有用一些高级的Marker组件。
  4. 监控文件系统中新建、修改和删除文件,并实时更新媒体库。
  5. 支持mp4视频文件的呈现。(需要在本机支持ffmpeg和ffprobe命令,下载ffmpeg工具:ffmpeg.org,如果是Windows系统,则需要把exe文件直接放入C:\Windows目录下;Linux系统可以直接使用发行版的软件仓库安装该软件。)
  6. 新增后台同步照片到Huawei Cloud OBS、Amazon S3对象存储上面,Huawei Cloud OBS支持直接上传冷对象,可以节省约3/4的开支,Amazon S3则需要配置后台任务定期转换对象到冷存储,也可以达到节省开支的效果。按照当前的费率,备份30GB的多媒体数据,每个月的开销大约在¥1多。
  7. 使用Face++服务实现人像识别,并按照人像对照片进行归集。开启该功能需要根据Face++的提示获取访问API的密钥对。
  8. 安全方面:基于Cookies机制实现简易认证,可防止搜索引擎抓取私人照片;支持HTTPS访问(需要自行制作JKS格式的证书库并替代默认证书库)。

软件架构图:

源码获取

源码托管在此GIT服务上面:jAlbumhttp://git.codefine.site:3000/Shentar/jAlbum) ,欢迎fork、提交issue和修改代码。

软件包下载

以下是适用于X86 Windows系统和Linux系统的软件包。下载软件包后,解压缩,完成必须的配置即可运行。

版本 发布时间 更新说明 下载链接
0.3.0 3 Mar 2018 1、支持使用Google Analytics跟踪访问记录;
2、解决若干已知bug。
下载
0.2.9 25 Nov 2017 1、支持备份数据到Huawei Cloud OBS对象存储。
0.2.8 18 Nov 2017 1、支持HTTPS访问;
2、解决响应中重复HTTP头域Date和Expire问题;
3、解决鉴权Bug。
0.2.7 19 Jul 2017 1、新增“风景”页;
2、使用Maven管理项目;
3、其他问题解决。
0.2.6 19 May 2017 添加访问权限控制,相册放在外网访问时,发放token才能访问,避免照片被陌生人访问,如:搜索引擎抓取照片。
0.2.5 7 May 2017 性能提升。
0.2.4 3 Apr 2017 1、可靠性功能问题解决。
2、性能提升。
0.2.3 17 Mar 2017 增加人像识别和按照任务归集照片功能。
0.2.2 29 Jan 2017 1、增加后台同步照片到AmazonS3服务端实现。
2、修改若干重复文件检测bug。
0.2.1 8 Jan 2017 解决问题:Chrome浏览器Ranges下载时第一个Range时不按照协议实现收取所有数据,最终在页面有多个Video时会导致浏览器挂死。单页面多个Video时,提取视频文件的缩略图呈现。
0.2.0 6 Nov 2016 1、新增Video的支持,支持对MP4视频文件呈现;
2、修正稳定性和功能细节的bug。
 
0.1.9 14 Aug 2016 1、PC端浏览器,增加键盘翻页,左方向键翻上一页,右方向键翻下一页。 2、改进“照片发现”性能,最快在20秒内新增照片可以呈现到页面上。 3、其他bug解决。  
0.1.8 5 Aug 2016 1、优化照片隐藏逻辑,当隐藏的照片被移动或者删除后又添加时,也不会被显示出来。
2、适配移动终端浏览器,实现触控滑动照片翻页。
 
0.1.7 31 Jul 2016 自动识别图片的旋转角度,在前端呈现时自动适应浏览器并旋转到正确的方向。  
0.1.6 24 Jul 2016 修正若干bug。使用按钮代替超链接来导航相册。  
0.1.5 21 Jul 2016 1、增加前端照片旋转功能。
2、完善照片删除功能。
3、解决稳定性bug。
 
0.1.4 18 Jul 2016 新增删除照片功能。在单张照片显示的页面上面可以点击删除链接“删除”该照片,该照片之后不会再显示,当然照片还存在于磁盘中,只是不再显示。  
0.1.3 10 Jul 2016 1、增加文件系统监控,利用文件系统的notify机制及时处理新的文件变更;
2、不再定时全盘扫描,只在启动时进行全盘扫描;
3、定时根据base表的变更情况刷新辅助表及时呈现新增照片。
 
0.1.1 2 Jul 2016 1、支持缩略图;
2、优化编译脚本;
3、增加配置文件。
 
0.1.0 23 Jun 2016 first release.  
版本更新历史

截图

相册的效果图 0.2.4版本,根据人像识别结果进行照片归集页面截图:

faces

0.2.0版本截图: 主页:

index

视频合集页面:

video

0.1.1版本截图:

snapshot

安装

源码安装

Git仓库下载最新的版本的代码包,执行如下命令编译安装:

cd jAlbum
mvn install

下载Release包

直接下载编译好的软件包,参考软件包下载

升级

停止运行jAlbum,将新版本的软件包中根目录下的jalbum.xml、log4j.xml、keystore和dedup.db文件删除,然后将剩下的所有文件和目录覆盖到原运行目录。重新启动jAlbum即可。

配置

文件类型

照片

当前支持的照片文件类型有:

<picfilesuffix>
  <suffix>jpg</suffix>
  <suffix>jpeg</suffix>
  <suffix>png</suffix>
</picfilesuffix>

将上述代码添加到jalbum.xml的config标签内即可。

视频

当前仅支持mp4文件的分析和呈现,并且需要先安装ffmpeg工具。在ffmpeg官方站点下载当前操作系统的工具,将ffprobe和ffmpeg可执行文件置于系统PATH变量所指向的路径下,如:C:\Windows目录下。jAlbum运行中会调用该工具分析MP4视频文件。

另外,在jalbum.xml内,picfilesuffix标签内增加如下内容:

<suffix>mp4</suffix>

文件大小

<minfilesize>51200</minfilesize>
<maxfilesize>512000000</maxfilesize>

此配置用于定制最小文件和最大文件大小。

指定目录

指定jAlbum监控的目录:

<inputdir>
<dir>D:\\</dir>
<dir>C:\\</dir>
</inputdir>

可以配置多个目录。注意Windows系统下,需要使用双斜杠来作为目录分隔符。

指定jAlbum排除某些特定目录,对于某些系统目录或者出于隐私保护而不希望呈现的目录,可以使用此配置排除监控:

<excludedir>
<dir>C:\\windows\\</dir>
<dir>C:\\Program Files\\</dir>
<dir>./</dir>
</excludedir>

指定缩略图存放目录:

<thumbnaildir>
./thumbnail
</thumbnaildir>

thumbnaildir标签用于指定缩略图文件存放的目录。

界面定制

maxpicsperonepage标签用于定制单个页面中显示的媒体文件的数量。

性能调优

threadcount标签用于定制任务并发数量。可以根据当前系统的CPU性能定制该数值。

hashalog用于定制计算照片文件和视频文件的HASH算法,常用的有MD5, SHA-256, SHA-1,一般而言HASH算法强度越高计算要求也越高,对于普通家用照片剔重,MD5比较合适。

人脸识别

首先需要到旷视科技申请API Key,然后在jalbum.xml中配置如下标签:

<Facer>
<ak></ak>
<sk></sk>
<facesetprefix></facesetprefix>
<maxfacescount></maxfacescount>
</Facer>

其中ak填写为API Key,sk填写为API Secret。facesetprefix为face set的前缀,当有多个应用使用同一个账号时,可以使用此前缀做区分。maxfacescount为相册人像主页上呈现的人物的个数。

数据备份

jalbum支持将数据备份到华为云对象存储和亚马逊的S3对象存储。当备份到华为云时,默认使用归档存储级别。两种备份目的端的使用是完全相同的。

<s3>
<bucketname></bucketname>
<ak></ak>
<sk></sk>
<useHttps></useHttps>
</s3>

<HuaweiOBS>
<bucketname></bucketname>
<ak></ak>
<sk></sk>
<useHttps></useHttps>
</HuaweiOBS>

其中,bucketname指定用于备份的容器,ak、sk分别为对象存储服务提供的访问凭据,需要到相应的对象存储服务上申请。useHttps指定是否使用https协议上传数据,为提高性能,如数据安全性要求不高,可以直接使用http协议传输。

访问记录

jalbum本身支持access日志,有log4j.xml配置。可以自行根据需要修改log4j.xml定制日志格式和存放目录。

另外,当相册在互联网上面开放访问时,可以配置Goolge Analytics,实现对访问进行统计。只需要将Goolge Analytics提供的ID写入如下配置:

<GoogleAnalyticsID></GoogleAnalyticsID>

如果配置为空,则不启用统计。

权限控制

当jalbum开放到互联网访问时,为了避免搜索引擎以及其它爬虫工具抓取照片,系统默认开启了需要输入Token方式来访问。
当不需要此权限控制时,可关闭Token访问,配置如下标签:

<accessAuth>true</accessAuth>

后台管理

权限管理

在开启权限控制时,相册提供后台页面和管理员登录方式来管理Token,启动后台备份和立即刷新数据等操作。
在本地登录时,可以管理Token,使用浏览器或者curl -X GET ${url}命令访问如下地址:

生成和获取当前系统的Token:http://127.0.0.1:2148/getToken

清除当前所有Token,并重新生成一批新的Token:http://127.0.0.1:2148/clearToken

清除指定Token,并重新生成新的Token,其中${token}替换成需要删除的Token:http://127.0.0.1:2148/removeToken?token=${token}

数据管理

当使用管理员Token登录,或者在本地登录时:

1、系统在单独的照片页面会显示“隐藏”按钮,用于隐藏不需要显示的照片,被隐藏的照片不会备份到对象存储系统,隐藏的照片永久不再显示,但照片文件仍然存在本地系统盘上面。

2、当系统的数据与磁盘出现不同步到问题时,可以使用如下接口立即是同步硬盘数据与系统记录的数据:

http://127.0.0.1:2148/flushnow

3、是否备份媒体文件到远端,需要访问如下地址触发,默认情况下,新增照片不会备份到远端。

http://127.0.0.1:2148/syncnow

| 1 分2 分3 分4 分5 分 (5.00- 19票) Loading ... Loading ... | 同时归档在:Java, Jetty, 数据库, 软件技术 | 标签: , , , , , |
返回顶部