不担心隐私问题, 自己部署 照片云备份服务 — immich

众所周知,云服务厂商并不完全可靠。近日,国外一位父亲因为在google photos中备份了远程就诊所使拍摄的儿子??图,而遭到google封号。“注重隐私”的Google尚且如此,更别谈一直被诟病隐私问题的国内厂商。那如何安全备份自己手机里的照片呢?除了在家里使用NAS备份,我们还可以考虑自己部署一个 照片云备份服务 — immich。

immich的特点

  1. 支持web、安卓客户端iOS客户端
  2. 支持指定相册的备份
  3. 支持打开软件自动备份,安卓支持后台自动备份
  4. 多用户支持
  5. 支持分享相册
  6. 支持raw格式
  7. 支持查看meta信息

其它特点详见github介绍

https://github.com/immich-app/immich

部署前准备

  1. 较大容量的VPS
  2. 域名解析到需要使用的VPS
  3. 安装好 docker 和 docker-compose

开始部署

  1. 创建一个存放该服务的文件夹
mkdir -p /root/data/immich
cd /root/data/immich
  1. 下载docker-compose.yml
wget https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
  1. 下载.env文件
wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example
  1. 创建一个密钥
openssl rand -base64 128

tGOH+TqDc7D2zq/tXad1v9gu0sOhBT2YY/yVa81XTjcBvXwHHTNPMhGUAgf06LKc

复制生成的内容

  1. 修改.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保存并退出编辑

  1. 修改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:
  1. 所有内容完成后,直接在docker-compose.yml所在的文件夹下输入以下内容运行
docker-compose up -d
  1. 随后进行反向代理即可。(使用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

3 评论

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注