之前的照片全都存储在阿里云盘上,但是最近发现阿里云盘也开始限速了,所以打算把照片全部迁移到对象存储上,但这样照片的查看就很不方便,经过一番折腾,尝试了包括 immich 这些常见的自托管服务之后,最终开始选择了付费的 mt_photos,毕竟免费的质量也就那样吧,而且 mt_photos 3 块钱一个月也近似免费了。

挂载 COS

安装工具依赖

apt install fuse

下载 cosfs 并安装

wget https://github.com/tencentyun/cosfs/releases/download/v1.0.23/cosfs_1.0.23-ubuntu20.04_amd64.deb
dpkg -i cosfs_1.0.23-ubuntu20.04_amd64.deb

配置 COS 密钥信息

echo "<bucket_name>:<access-key-id>:<access-key-secret>" > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

挂载存储桶至指定目录

mkdir -p /mnt/cosfs			# 存储桶挂载路径
mkdir -p /var/cache/cosfs	# 存储桶缓存路径
cosfs <bucket_name> /mnt/cosfs -ourl=<cos-endpoint> -ouse_cache /var/cache/cosfs
cosfs yvling-photos-1257337367 /mnt/cosfs -ourl=https://cos.ap-guangzhou.myqcloud.com -ouse_cache=/var/cache/cosfs -oensure_diskfree=1024

image.png

安装 Docker

curl -fsSL https://get.docker.com | bash -s docker

安装 mt_photos

整个安装过程非常简单,比起 immich 显得更加简洁。

拉取镜像

docker pull mtphotos/mt-photos:latest

关于配置目录和数据目录

在 mt_photos 架构下,配置和数据分离,且仅需要将这两个目录挂载到容器内部即可,映射关系如下:

/xxx/mt_photos/config	==>	  /config	# 配置目录,包含数据库文件、缩略图缓存等,可独立备份
/xxx/mt_photos/upload   ==>   /upload	# 数据目录,实际存放照片的地方

我的做法是:

  • 配置目录挂载到宿主机硬盘,定期备份即可;
  • 数据目录挂载到 COS,保证照片原文件的可用性;

启动镜像

mkdir mt-photos && cd mt-photos
docker run -d \
  --name="mt-photos" \
  -v ./config:/config \
  -v /mnt/cosfs:/upload \
  -p 8063:8063 \
  -e TZ="Asia/Shanghai" \
  --restart="always" \
  mtphotos/mt-photos:latest

配置 mt_photos

启动镜像后,访问 8063 端口即可进入安装界面:

image.png

设置完管理员密码之后,进入“设置图库”环节,在这里添加之前挂载的 /upload 目录:

image.png

设置完成登录系统,后台已经在自动扫描照片了(这个过程比较漫长,毕竟是挂载的存储桶,受限于网络带宽):

image.png

然后进行相关配置,我只开启了 GPS 识别,使用高德地图的 API 完成,具体参考 GPS API 配置 - 高德开放平台

最终效果如下:

image.png