type
status
date
slug
summary
tags
category
icon
password
 

前言

 
以前觉得NAS是伪需求,是因为觉得QQ空间就足够
……
当QQ空间宣布非会员无法原画质上传照片和文件后,我转而使用了阿里云盘
……
当阿里云盘“做出了一个艰难的决定”后,我觉得,也该搞搞NAS了
 
 
notion image
 
83闲鱼入了一个Mini ITX工控机板,CPU是AMD A8 7410,四核,挺老的,不过比J1900、1037U好一点感觉
板载两个sata口,一个minipcie槽,一个msata口,扩展很少但也够用
 
后续:🥲后来才发现,两个sata口和一个msata口只能三选二……
 
我给它配了一块2.5寸256的SSD,一根8G DDR3L 1600MHz的RAM,还有一块64G的msata硬盘,都是手上有的,另外闲鱼17块买了一个60W的12V DC电源适配器,硬件以后不够再升级,主打一个能用就行😋
 
 
 

基础配置

 
接下来就是装系统
 
我没有选择流行的NAS系统,比如黑裙、UNRAID、OMV、TrueNAS等
 
我选择了PC系统,Debian12,因为熟悉(反正不装Arch
 
notion image
 
 
机箱到了,买小了,没买挡板,忘了
 
notion image
 
 
《理线》🤣,勉强能盖上盖就可以了(SATA线:我吃柠檬)
 
notion image
 
 
连上WIFI,SSH启动!
 
发现个问题,休眠没关
 
notion image
 
按网上说的关闭休眠
 
 
仍旧休眠,但是SSH会话还在活跃
 
notion image
 
不管了🫢
 
 
 

配置远程访问

 
Kill掉IPv6的临时地址
 
/etc/sysctl.conf上写入以下内容
 
重载配置
 
 

DDNS

 
在Cloudflare配置域名解析后
 
使用ddns-go自动更新域名绑定
 
 
 
notion image
 
Domains一栏是填域名
 
 

Tailscale

 
顺便把Tailscale也配置了,双重保险,后期子网路由功能也能用得上
 
安装脚本
 
notion image
 
 

代理工具

 
 
 
 

相册备份-Immich

 
关于相册备份软件
 
我一开始考虑Syncthing,用了一会,备份速度挺快的,但是操作逻辑不够直观,而且看不到远端备份的照片,就单纯是个备份软件
 
后来看到Photoprism,有在线相册功能,功能界面也还好,有中文,就是手机端APP不能上传照片,只能通过网页端上传,有点鸡肋
 
货比三家后,最终选择了Immich
 
 
notion image
 
 
Immich官方有个Demo展示
 
notion image
 
notion image
 
 
看着挺不错的,除了没有中文,还有更新很频繁,几乎一周一个版本 🤥
 
 

安装需求

 
 
硬件
 
  • At Least 4GB RAM
  • 2 Cores of CPU
(btw……我在我的电视盒子上装过,S905L3A的芯片,2GB RAM,也可以运行……🤔)
 
 
软件
 
  • docker
  • docker compose
 
docker官方一键安装脚本
 
 

安装过程

 
官方推荐使用docker compose运行Immich
 
  • 找个地方放一下Immich
 
  • 下载 docker-compose.yml.env 文件
 
  • 修改 .env 文件参数,主要是修改UPLOAD_LOCATION ,这是你的照片上传后存放的位置,使用绝对路径
 
  • 一切准备就绪后,运行docker compose
 
 
我在运行 sudo docker compose up -d 时大概是遇到了网络问题,很慢……失败了好几次都提示 Error: unexpect EOF
 
然后第二天我又来装一遍,发现他更新版本了,再次 up,又可以了😅
 
就是装得有点久
 
notion image
 
 
 
2024.2.15 UPDATE 经测试,确实是网络问题,跟什么版本没关系,docker不走系统代理,需要单独配置代理
很快,3-4分钟就pull完了
很快,3-4分钟就pull完了
 
 
 
  • 更新Immich命令是这个
 
  • 停止Immich命令是这个
 
 
 

备份使用

 
 
官方文档说得挺详细的了,还是很简单的
 
简单传了一些照片,效果不错,还支持多用户管理
 
notion image
 
 
 

配置HTTPS加密访问

 
由于我是外网访问,且域名没有备案也没有SSL证书,只能通过HTTP访问,浏览器会警告
 
公网明文传输肯定是不安全的
 
notion image
 
 
想要实现HTTPS访问,需要给域名配置SSL证书反向代理
 
 

获取SSL证书

 
SSL证书可以在Let’s Encrypt获得,免费
 
这里我们使用第三方工具:acmesh (简单,有自动续签)
 
 
 
按着教程来
 
  • 获取脚本 | 运行脚本
 
  • 生成证书,这里我使用手动DNS方式,因为我的不是网站
 
运行后,等待一会,acme.sh会生成一个DomainTXT value
 
notion image
 
去你的域名控制台或者DNS解析控制台,添加一个TXT解析记录
 
notion image
 
确定TXT解析记录生效后,重新生成证书
 
等待一小会儿……☕
 
 
生成证书成功后,会生成四个文件,分别是:
 
 
证书更新是自动的,只需要确保acmesh创建的定时任务正常运行,查看定时任务:
 
 
 

配置反向代理

 
 
这里我用的是Nginx
 
对于Nginx,证书文件只需要 <mydomain.com>.keyfullchain.cer 两个即可
 
  • 在Nginx工作目录下新建ssl文件夹,将两个证书安装在ssl目录
 
  • 配置反向代理,进入/etc/ngxin/sites-available目录,备份原文件,编辑immich_service
 
immich_service文件内容
 
  • 保存文件,进入/etc/nginx/sites-enabled目录,建立一个软链接
 
notion image
 
  • 测试文件语法是否错误
 
notion image
 
  • 如果显示 ok,重启Nginx服务
 
 
如果重启没有报错,那么此时Immich可以以HTTPS的方式访问了
 
notion image
 
可以看到,“连接是安全的“
 
 
异常情况
 
如果启动Nginx时出现这个报错
 
notion image
 
 
说明 80 端口被占用了,使用lsof -i:80查看端口占用情况
 
notion image
 
 
像我这样的就是80端口被apache占用了,如果apache不使用的话,可以停止掉apache的服务
 
如果不能停止apache的话,就在/etc/nginx/sites-enabled目录下删除default文件的软链接,因为default文件监听的是80端口
 
 
 

移动端APP

 

下载

 
immich 可以在 Google PlayApple StoreGithub 获得
 
 

使用

 
进入APP连接页面,填写服务器IP和端口号,然后填写邮箱账号和密码
 
notion image
 
 
APP首页
 
notion image
 
 
新版本加入了相册分类
 
notion image
 
 
除了没有中文,其他都挺好的🥲
 
😂Fine…把手机语言换成简体中文就好了
 
 
 

双重备份-rsync

 
 
单个硬盘用来备份数据肯定是不安全的,一旦这个盘寄了,数据就莫得了🥲
思考片刻后,我决定用那块msata硬盘测试一下,64G的容量注定用不久,后面再换掉
 
挂载上硬盘后,安装rsync
rsync很轻量化,功能也很多,支持远程备份,这里我只用来本地备份
 
示例
 
notion image
 
尝试了一下,很快,备份速度取决于I/O速度,而且支持增量备份,不会重复备份,写个脚本,定期执行就好了
 
 
 

服务/数据库崩溃的解决办法

 
2024.2.22 UPDATE 前面已经说过了,这个软件极其不稳定,不知道哪次更新就崩掉了…… 是的我今天就体会到了😅
 
当我的immich更新到v1.95.1的时候,我像往常更新它一样,重新启动容器,发现服务一直在restart
 
上Github项目查看issues,有两个issue是关于v1.95.1服务不能正常启动的,这两个issue距离v1.95.1发布仅仅过了4个小时
 
随后我就看到开发者回应了
notion image
 
🥲fine
 
然后我就想着回退版本,结果发现还是这样,可能是数据库崩掉了,没办法,只能重装
 
注意这里是重装
 
一定要做好数据备份!!!
一定要做好数据备份!!!
一定要做好数据备份!!!
 
 
 

备份资产

 
备份一下原来的照片,原来的照片在UPLOAD_LOCATION/library里,整个文件夹移走就行,像我是直接用rsync给它复制到其他地方
 

删除旧的容器

 
停止并删除docker容器
 

重新拉取镜像

 
新建一个空目录,作为待会使用的UPLOAD_LOCATION,原来的上传目录不可用了,换一个新的上传目录
 
重新安装一遍immich,保险起见我使用目前更稳定的v1.93.3版本,.env稍加更改
 
启动容器,sudo docker compose up -d
 
成功启动后,此时的immich是全新状态,之前的设置全部都没有了,只能重头再来(悲)
 

安装Immich CLI

 
 
不过好消息是,照片还可以一键导进去,虽然本质还是重新上传重建数据库,不过相比手动一张一张上传还是方便多了
 
使用官方的终端工具执行上传任务
 
安装nodejsnpm
 
安装immich CLI
 
获取用户的API Key,按照docs说的去获取,要上传哪个用户的就获取哪个用户的
 
账号登陆
 

上传资产

 
上传之前传过的照片,一条命令即可
 
等待上传完后,照片就都回到immich上了,如果还有其他用户的照片需要上传,再次登录再上传照片即可
 
遗憾的是,之前设置的相册和共享都不见了,虽然不是什么事,照片回来了就好
 
 
 

清除旧镜像

 
删掉之前拉取的镜像,释放空间
 
 
 
 
在docker中部署firefox浏览器基于IPv6的在线编程
Loading...