众所周知,云服务厂商并不完全可靠。近日,国外一位父亲因为在google photos中备份了远程就诊所使拍摄的儿子??图,而遭到google封号。“注重隐私”的Google尚且如此,更别谈一直被诟病隐私问题的国内厂商。那如何安全备份自己手机里的照片呢?除了在家里使用NAS备份,我们还可以考虑自己部署一个 照片云备份服务 — immich。
immich的特点
其它特点详见github介绍
部署前准备
- 较大容量的VPS
- 域名解析到需要使用的VPS
- 安装好 docker 和 docker-compose
开始部署
- 创建一个存放该服务的文件夹
mkdir -p /root/data/immich
cd /root/data/immich
- 下载docker-compose.yml
wget https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
- 下载.env文件
wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example
- 创建一个密钥
openssl rand -base64 128
tGOH+TqDc7D2zq/tXad1v9gu0sOhBT2YY/yVa81XTjcBvXwHHTNPMhGUAgf06LKc
复制生成的内容
- 修改.env文件
vim .env
###################################################################################
# Database
###################################################################################
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres #可修改
DB_PASSWORD=postgres #可修改
DB_DATABASE_NAME=immich #可修改
# Optional Database settings:
# DB_PORT=5432
###################################################################################
# Redis
###################################################################################
REDIS_HOSTNAME=immich_redis
# Optional Redis settings:
# REDIS_PORT=6379
# REDIS_DBINDEX=0
# REDIS_PASSWORD=
# REDIS_SOCKET=
###################################################################################
# Upload File Config
###################################################################################
UPLOAD_LOCATION=/root/data/immich/upload #修改你想将照片存放的位置
###################################################################################
# JWT SECRET
###################################################################################
JWT_SECRET=tGOH+TqDc7D2zq/tXad1v9gu0sOhBT2YY/yVa81XTjcBvXwHHTNPMhGUAgf06LKc #填入刚刚生成的密钥
###################################################################################
# MAPBOX
####################################################################################
# ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY
ENABLE_MAPBOX=false
MAPBOX_KEY=
####################################################################################
# WEB - Optional
####################################################################################
# Custom message on the login page, should be written in HTML form.
# For example PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>"
PUBLIC_LOGIN_PAGE_MESSAGE=
按esc
后输入:wq
保存并退出编辑
- 修改docker-compose.yml文件
vim docker-compose.yml
version: "3.8"
services:
immich-server:
image: altran1502/immich-server:release
entrypoint: ["/bin/sh", "./start-server.sh"]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
env_file:
- .env
environment:
- NODE_ENV=production
depends_on:
- redis
- database
restart: always
immich-microservices:
image: altran1502/immich-server:release
entrypoint: ["/bin/sh", "./start-microservices.sh"]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
env_file:
- .env
environment:
- NODE_ENV=production
depends_on:
- redis
- database
restart: always
# 该部分为软件对照片进行机器学习并进行自动分类,会需要较多的资源,需要的话可以取消井号的注释
#immich-machine-learning:
# image: altran1502/immich-machine-learning:release
# entrypoint: ["/bin/sh", "./entrypoint.sh"]
# volumes:
# - ${UPLOAD_LOCATION}:/usr/src/app/upload
# env_file:
# - .env
# environment:
# - NODE_ENV=production
# depends_on:
# - database
# restart: always
immich-web:
image: altran1502/immich-web:release
entrypoint: ["/bin/sh", "./entrypoint.sh"]
env_file:
- .env
restart: always
redis:
container_name: immich_redis
image: redis:6.2
restart: always
database:
container_name: immich_postgres
image: postgres:14
env_file:
- .env
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
PG_DATA: /var/lib/postgresql/data
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
immich-proxy:
container_name: immich_proxy
image: altran1502/immich-proxy:release
ports:
- 2283:8080 #冒号左边可以修改为自己需要的端口号
logging:
driver: none
depends_on:
- immich-server
restart: always
volumes:
pgdata:
- 所有内容完成后,直接在
docker-compose.yml
所在的文件夹下输入以下内容运行
docker-compose up -d
- 随后进行反向代理即可。(使用amh7面板的用户可以参考文章https://veryjack.com/technique/amh7-%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86%e7%ae%80%e5%8d%95%e6%95%99%e7%a8%8b/)
其它
由于在第6步中注释掉了机器学习的部分,安卓手机在打开搜索功能时会闪退,而iOS会无法使用搜索功能。由于我个人觉得该部分内容会占用服务器较多资源,所以我选择将其注释掉,用户可以根据自己情况进行修改。
更新服务
进入docker-compose.yml
所在文件夹
docker-compose pull
docker-compose up -d
博主您好,我按照教程部署后,ip加端口访问会报错‘500
connect ECONNREFUSED 172.19.0.5:3001’,是反代的问题吗?
immich 项目更新很频繁,我这个教程可能有点老了。你可以去官方看看 yaml 是不是有新的版本,可能需要按照新的教程来部署。
好的,感谢