照片备份方案
#default
今天整理一下目前的照片备份方案。方案的核心目标是可以将手机的照片备份到NAS中,同时可以从NAS中加密备份到网盘里。
手机到NAS
这一步采用的是在NAS中部署Immich的方案,以下是我的Immich的docker compose部署配置,重点是在 my_immich.env.txt 文件中设置好 UPLOAD_LOCATION
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:v2.1.0
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file: my_immich.env.txt
ports:
- 2283:2283
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:v2.1.0
volumes:
- ./model-cache:/cache
env_file: my_immich.env.txt
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
environment:
# postgres 识别不了自定义命名的env file,软链一个.env解决
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
restart: always
volumes:
model-cache:
然后,在手机中安装Immich的客户端,配置好服务器地址,即可达成照片从上机上传到NAS,并且自动整理的这个环节。
NAS到网盘
增加网盘,目的是本地储存炸了,还能找回数据。当前使用夸克网盘。如果不需要加密的话,直接使用NAS自带的网盘工具就可以将目录同步到网盘中。不过,考虑自己的隐私问题,我需要使用加密的方案。
部署Openlist
我在NAS中部署Openlist来挂载夸克网盘,然后在夸克网盘里创建一个空目录,再在Openlist里配置一个Crypt类型的储存。
这样,往这个储存点上传的文件,就会被加密上传到夸克网盘里(切记保存好密码)。
还需要配置一个本地储存端点,这个是给Taosync用的。
整理:
| 储存类型 | 作用 |
|---|---|
| 夸克 | 作为夸克的主要入口 |
| Crypto | 作为夸克的加密保存入口 |
| 本地储存 | 留给Taosync的同步入口 |
下面是我的docker compose配置,核心是需要挂载上需要作为本地端点的路径(即Immich的数据路径)。
services:
openlist:
image: 'openlistteam/openlist:v4.1.7'
container_name: openlist
user: '0:0' # Please replace `0:0` with the actual user ID and group ID you want to use to run OpenList.
volumes:
- './data:/opt/openlist/data'
- '${UPLOAD_LOCATION}:/immich_lib'
ports:
- '5244:5244'
environment:
- UMASK=022
restart: unless-stopped
部署Taosync
接下来考虑的是如何把NAS的文件同步到Openlist中。这里使用Taosync,参考这篇文章进行配置。
version: "3.8"
services:
taoSync:
image: dr34m/tao-sync:latest
container_name: taoSync
ports:
- "8023:8023"
volumes:
- ./data:/app/data
restart: always
配置Taosync任务,将Openlist中的【本地储存】路径,定时增量备份到【Crypto】路径中。