我于 2022-10-18 选择并部署了 immich 作为家庭的照片管理程序,项目 GitHub 主页 https://github.com/immich-app/immich

这个应用对我来说真的很方便,我很喜欢能通过 web 直接浏览照片和视频,而且整个应用的架构设计也非常棒,乃至性能和功能方面个人感觉比起 PhotoPrism 等产品都要更好。

部署也很简单,编辑官方的 docker-compose.yml 以及 .env 两个文件,设置好各个变量,就可以直接部署了。

上次升级直接使用 docker-compose pull && docker-compose up -d ,各个镜像使用的是 docker hub 上的 release 标签所指镜像。

但是升级完发现应用无法启动,页面报错我不记得了,查看 stack 里 container 日志,发现是 TYPESENSE_API_KEY is required,于是寻找官方 release。

v1.51.0 版本带有重大变更,新增了一个容器 typesense,官方链接 https://github.com/immich-app/immich/releases/tag/v1.51.0

1.51.0重大变更新增容器typesense.jpg

我在修改 docker-compose.yml 以及 .env 的过程中尝试了几遍才使得应用启动。讲几点注意细节

  • TYPESENSE_API_KEY 变量必须写在 .env 文件里,然后在 docker-compose.yml 中引用,我直接写在 compose 文件里没有生效……
  • 如果使用 vim 等编辑器,注意换行时默认的缩进是 tab 还是空格,如果是 tab 则会报 yaml 格式错误,建议使用 vim 的语法 :set expandtab 把tab转换成对应数量的空格

然后我的应用就正常了。

可以看到整个 stack 中具备的容器分服务运行,架构设计的应该挺不错的

immich stack.jpg

服务端现在的状态

server 状态.jpg

现在我主要开放给了我哥使用,两个人已经托管了近 110GB 的照片和视频了

server status total usage.jpg

今天登录提示又双叒叕新版本(这谁受得了🤣)

又有新版本1.52.1.jpg

看了一下该版本没有提供移动端的更新,暂时不会更新。目前的功能足够使用。

对了还想提一嘴,之前使用这个应用有几次我哥反馈他无法登录,后来知道是他那边更新了 App Store 里的应用,导致客户端版本超前了服务端导致的无法登录。这个程序在使用时最好保持客户端和服务端的版本一致,而且他们也在积极热烈的开发中,感谢这个应用,非常 nice。

# cat /etc/openwrt_version
08.28.2022
# cat /etc/openwrt_release
DISTRIB_ID='512'
DISTRIB_RELEASE='22.03.0-rc6'
DISTRIB_REVISION='08.28.2022'
DISTRIB_TARGET='x86/64'
DISTRIB_ARCH='x86_64'
DISTRIB_DESCRIPTION="dk-router 08.28.2022 by Kiddin'"
DISTRIB_TAINTS='busybox override'
# opkg list-installed |grep nfs
kmod-fs-nfs - 5.15.58-1
kmod-fs-nfs-common - 5.15.58-1
kmod-fs-nfs-common-rpcsec - 5.15.58-1
kmod-fs-nfs-v4 - 5.15.58-1
kmod-fs-nfsd - 5.15.58-1
luci-app-nfs - git-22.240.61616-a97e7f2
nfs-kernel-server - 2.5.4-4
nfs-kernel-server-utils - 2.5.4-4
nfs-utils - 2.5.4-4
nfs-utils-libs - 2.5.4-4

由于我的两块 3TB 和一块 4TB 硬盘都接在软路由上,软路由跑着 OpenWrt 系统。2022年搭建了 home-server, 使用 pve 虚拟了 debian11 运行。要在 debian11 使用 nfs 挂载 OpenWrt 上挂载出来的几块硬盘。前几天发现在 debian11 上无法查看 /mnt/ 目录下的文件,后面才意识到是 nfs server 端挂了。

我的 OpenWrt 环境如上,安装的 nfs 版本以及各个依赖情况也如上,ssh 进入 OpenWrt,执行 /etc/init.d/nfsd restart 然后 debian11 这边就能重新查看文件了。

OpenWrt 上 nfs 的配置如下

# cat /etc/config/nfs

config share
        option enabled '1'
        option path '/mnt/four'
        option clients '10.10.10.0/24'
        option options 'rw,all_squash,insecure,sync,no_subtree_check'

config share
        option enabled '1'
        option path '/mnt/ThreeTB'
        option clients '10.10.10.0/24'
        option options 'rw,all_squash,insecure,sync,no_subtree_check'

config share
        option enabled '1'
        option path '/mnt/FiveOO'
        option clients '10.10.10.0/24'
        option options 'rw,all_squash,insecure,sync,no_subtree_check'

config share
        option enabled '1'
        option path '/mnt/ThreeTB2'
        option clients '10.10.10.0/24'
        option options 'rw,all_squash,insecure,sync,no_subtree_check'

2024-05-26 08:49:15 update:由于暂时没有了公网IP,这个地址变成了 memos.940304.xyz

前阵子利用 memos 搭建了一个私服,利用起来就感觉还挺不错的,很方便易用。个人记录一些备忘,分享一些日常都行,一个很大的槽点就是目前暂不支持已登录用户的相互评论功能。

目前我把它当作个人微博使用,我的主页是 https://emby.940304.xyz:15230/u/1 。也开放了用户注册,欢迎各位朋友注册使用,地址是 https://emby.940304.xyz:15230/

纽约时间比加州时间早三个小时, New York is 3 hours ahead of California,

但加州时间并没有变慢。 but it does not make California slow.

有人 22 岁就毕业了, Someone graduated at the age of 22,

但等了五年才找到好的工作! but waited 5 years before securing a good job!

有人 25 岁就当上 CEO , Someone became a CEO at 25,

却在 50 岁去世。 and died at 50.

也有人迟到 50 岁才当上 CEO , While another became a CEO at 50,

然后活到 90 岁。 and lived to 90 years.

有人依然单身, Someone is still single,

同时也有人已婚。 while someone else got married.

奥巴马 55 岁就退休, Obama retires at 55,

川普 70 岁才开始当总统。 but Trump starts at 70.

世上每个人本来就有自己的发展时区。 Absolutely everyone in this world works based on their Time Zone.

身边有些人看似走在你前面, People around you might seem to go ahead of you,

也有人看似走在你后面。 some might seem to be behind you.

但其实每个人在自己的时区有自己的步程。 But everyone is running their own RACE, in their own TIME.

不用嫉妒或嘲笑他们。 Don’t envy them or mock them.

他们都在自己的时区里,你也是! They are in their TIME ZONE, and you are in yours!

生命就是等待正确的行动时机。 Life is about waiting for the right moment to act.

所以,放轻松。 So, RELAX.

你没有落后。 You’re not LATE.

你没有领先。 You’re not EARLY.

在命运为你安排的属于自己的时区里,一切都准时。 You are very much ON TIME, and in your TIME ZONE Destiny set up for you.

在馒头,我被 ban 了两个账号了,甚是可惜。最近又拿到邀请,成功入站,决心认真一点对待。40天未登录就ban账号的规则说实话还是有点严格,但是没办法,得遵循他们的规则

馒头考核-已达标

打算写代码自动模拟登录的,但是稍许有些麻烦。网上搜了一下也有现成的模拟登录的项目,但看上去部署太复杂,就没有兴趣阅读下去了。

发现可以利用 cron 和 curl 直接模拟登录,借用 chrome dev tool 的 copy request as curl(bash) 功能,可以把整个请求包含 cookie 复制下来,方便通过 curl 调用。

copy as curl

写一个 bash 脚本,cron 执行访问馒头的 userdetail 页面。

脚本位置 /home/dk/temp/mteam.sh, cron 内容, 意思是每周五的上午11点执行一次,并把日志输出到 /home/dk/temp/mteam-login-logs 目录下的 log 文件里,文件名举例: 2023-02-21_14-27-26.log

cron 内容

0 11 * * 5 bash /home/dk/temp/mteam.sh >/home/dk/temp/mteam-login-logs/$(date +%Y-%m-%d_%H-%M-%S).log

mteam.sh 脚本本身内容(已打码)

#!/bin/bash

set -e

curl 'https://kp.m-team.cc/userdetails.php?id=xxxxxx' \
  -H 'authority: kp.m-team.cc' \
  -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
  -H 'accept-language: zh,zh-CN;q=0.9,en-US;q=0.8,en;q=0.7' \
  -H 'cache-control: no-cache' \
  -H 'cookie: tp=xxxxxx; cf_clearance=xxxxxx' \
  -H 'dnt: 1' \
  -H 'pragma: no-cache' \
  -H 'sec-ch-ua: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'sec-fetch-dest: document' \
  -H 'sec-fetch-mode: navigate' \
  -H 'sec-fetch-site: none' \
  -H 'sec-fetch-user: ?1' \
  -H 'upgrade-insecure-requests: 1' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36' \
  --compressed

查看生成的 log 文件,请求之后返回了一个完整的 html 静态页面

20230222140724