type
status
date
slug
summary
tags
category
icon
password
前言
以前觉得NAS是伪需求,是因为觉得QQ空间就足够
……
当QQ空间宣布非会员无法原画质上传照片和文件后,我转而使用了阿里云盘
……
当阿里云盘“做出了一个艰难的决定”后,我觉得,也该搞搞NAS了

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

机箱到了,买小了,没买挡板,忘了

《理线》🤣,勉强能盖上盖就可以了(SATA线:我吃柠檬)

连上WIFI,SSH启动!
发现个问题,休眠没关

按网上说的关闭休眠
仍旧休眠,但是SSH会话还在活跃

不管了🫢
配置远程访问
先Kill掉IPv6的临时地址
往
/etc/sysctl.conf
上写入以下内容重载配置
DDNS
在Cloudflare配置域名解析后
使用ddns-go自动更新域名绑定

Domains
一栏是填域名Tailscale
顺便把Tailscale也配置了,双重保险,后期子网路由功能也能用得上
安装脚本

代理工具
相册备份-Immich
关于相册备份软件
我一开始考虑Syncthing,用了一会,备份速度挺快的,但是操作逻辑不够直观,而且看不到远端备份的照片,就单纯是个备份软件
后来看到Photoprism,有在线相册功能,功能界面也还好,有中文,就是手机端APP不能上传照片,只能通过网页端上传,有点鸡肋
货比三家后,最终选择了Immich

Immich官方有个Demo展示


看着挺不错的,除了没有中文,还有更新很频繁,几乎一周一个版本 🤥
安装需求
硬件
- 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
,又可以了😅就是装得有点久

2024.2.15 UPDATE 经测试,确实是网络问题,跟什么版本没关系,docker不走系统代理,需要单独配置代理

- 更新Immich命令是这个
- 停止Immich命令是这个
备份使用
官方文档说得挺详细的了,还是很简单的
简单传了一些照片,效果不错,还支持多用户管理

配置HTTPS加密访问
由于我是外网访问,且域名没有备案也没有SSL证书,只能通过HTTP访问,浏览器会警告
公网明文传输肯定是不安全的

想要实现HTTPS访问,需要给域名配置SSL证书和反向代理
获取SSL证书
SSL证书可以在Let’s Encrypt获得,免费
这里我们使用第三方工具:acmesh (简单,有自动续签)
按着教程来
- 获取脚本 | 运行脚本
- 生成证书,这里我使用手动DNS方式,因为我的不是网站
运行后,等待一会,acme.sh会生成一个
Domain
和TXT value

去你的域名控制台或者DNS解析控制台,添加一个TXT解析记录

确定TXT解析记录生效后,重新生成证书
等待一小会儿……☕
生成证书成功后,会生成四个文件,分别是:
证书更新是自动的,只需要确保acmesh创建的定时任务正常运行,查看定时任务:
配置反向代理
这里我用的是Nginx
对于Nginx,证书文件只需要
<mydomain.com>.key
和 fullchain.cer
两个即可- 在Nginx工作目录下新建
ssl
文件夹,将两个证书安装在ssl
目录
- 配置反向代理,进入
/etc/ngxin/sites-available
目录,备份原文件,编辑immich_service
immich_service
文件内容- 保存文件,进入
/etc/nginx/sites-enabled
目录,建立一个软链接

- 测试文件语法是否错误

- 如果显示 ok,重启Nginx服务
如果重启没有报错,那么此时Immich可以以HTTPS的方式访问了

可以看到,“连接是安全的“
异常情况
如果启动Nginx时出现这个报错

说明 80 端口被占用了,使用
lsof -i:80
查看端口占用情况
像我这样的就是80端口被apache占用了,如果apache不使用的话,可以停止掉apache的服务
如果不能停止apache的话,就在
/etc/nginx/sites-enabled
目录下删除default
文件的软链接,因为default
文件监听的是80端口移动端APP
下载
immich 可以在 Google Play、Apple Store、Github 获得
使用
进入APP连接页面,填写服务器IP和端口号,然后填写邮箱账号和密码

APP首页

新版本加入了相册分类

除了没有中文,其他都挺好的🥲
😂Fine…把手机语言换成简体中文就好了
双重备份-rsync
单个硬盘用来备份数据肯定是不安全的,一旦这个盘寄了,数据就莫得了🥲
思考片刻后,我决定用那块msata硬盘测试一下,64G的容量注定用不久,后面再换掉
挂载上硬盘后,安装rsync
rsync很轻量化,功能也很多,支持远程备份,这里我只用来本地备份
示例

尝试了一下,很快,备份速度取决于I/O速度,而且支持增量备份,不会重复备份,写个脚本,定期执行就好了
服务/数据库崩溃的解决办法
2024.2.22 UPDATE 前面已经说过了,这个软件极其不稳定,不知道哪次更新就崩掉了…… 是的我今天就体会到了😅
当我的immich更新到v1.95.1的时候,我像往常更新它一样,重新启动容器,发现服务一直在restart
上Github项目查看issues,有两个issue是关于v1.95.1服务不能正常启动的,这两个issue距离v1.95.1发布仅仅过了4个小时
随后我就看到开发者回应了

🥲fine
然后我就想着回退版本,结果发现还是这样,可能是数据库崩掉了,没办法,只能重装
注意这里是重装
一定要做好数据备份!!!
一定要做好数据备份!!!
一定要做好数据备份!!!
备份资产
备份一下原来的照片,原来的照片在
UPLOAD_LOCATION/library
里,整个文件夹移走就行,像我是直接用rsync给它复制到其他地方删除旧的容器
停止并删除docker容器
重新拉取镜像
新建一个空目录,作为待会使用的
UPLOAD_LOCATION
,原来的上传目录不可用了,换一个新的上传目录重新安装一遍immich,保险起见我使用目前更稳定的v1.93.3版本,
.env
稍加更改启动容器,
sudo docker compose up -d
成功启动后,此时的immich是全新状态,之前的设置全部都没有了,只能重头再来(悲)
安装Immich CLI
不过好消息是,照片还可以一键导进去,虽然本质还是重新上传重建数据库,不过相比手动一张一张上传还是方便多了
使用官方的终端工具执行上传任务
安装
nodejs
和npm
安装immich CLI
获取用户的API Key,按照docs说的去获取,要上传哪个用户的就获取哪个用户的
账号登陆
上传资产
上传之前传过的照片,一条命令即可
等待上传完后,照片就都回到immich上了,如果还有其他用户的照片需要上传,再次登录再上传照片即可
遗憾的是,之前设置的相册和共享都不见了,虽然不是什么事,照片回来了就好
清除旧镜像
删掉之前拉取的镜像,释放空间
- 作者:sleepfat
- 链接:https://blog.sleepfat.top/%E4%BD%BF%E7%94%A8Immich%E6%90%AD%E5%BB%BA%E4%BA%91%E7%AB%AF%E7%9B%B8%E5%86%8C
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。