技术积累
日进一寸

[Docker Can]在nas上基于docker自建简洁照片备份应用immirch,同步手机图片和视频

nextcloud不适合图片同步

本期视频搭建一个手机图片视频的应用Immich。

在使用这个图片备份服务之前我一直使用nextcloud备份我的多媒体文件和各种文档,众所周知,虽然nextcloud功能强大,但是速度实在不敢恭维

上传还好,预览真的是一塌糊涂,即使开启了memcached,仍旧是慢

为什么Immich

有人给我推荐了一个,图片同步服务 Immich,我暂时没有把这个应用映射到公网,也不打算映射到公网,毕竟都是手机里的私人照片。

同步快,有多快呢,我的感觉是跟局域网里往nas读写速度是一样的,比nextcloud快了不是一点半点

预览快,之前nextcloud中,打开图片目录那就是一种折磨,很久都无法刷新出来

但是immich,瞬间出图,体验真的是好的不得了

至于稳定性与数据安全性,应为immich仅仅是把图片同步到了指定的目录中,并进行索引,以及生成缩略图,即使immich服务删除掉,目录中的内容也是不受影响的,所以只要存放图片的目录做了数据冗余,那么这些图片视频就是安全的

app也非常简洁,功能不多,贵在同步功能好用

许多朋友之所以离不开群晖,很大一部分原因是群晖的moments功能可以对图片进行自动分类

immich也有此功能,但是根据项目描述,内置的深度学习算法需要cpu具备avx与avx与AVX2

如果是比较老的cpu,比如我这台nas是j1900,是无法使用图片智能分类功能的

用以下命令可以查看是否有avx与avx2

more /proc/cpuinfo | grep flags

安装

immich需要大量的组件,官方只提供了docker-compose安装方案,也就是必须命令行安装

前置条件:确保docker-compose可用,而且大于1.26.2,如果不是的话升级它

# 查看版本
docker-compose --version
# 如果版本太低就要升级
# 找到并修改原命令
whereis docker-compose
mv /usr/bin/docker-compose /usr/bin/docker-compose.bak

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 确认
docker-compose --version
# 如果报错,重新登陆ssh

如果是普通linux操作系统安装,使用以下命令

执行后会安装docker,进而下载默认的docker-compose以及env文件进行默认配置的安装,安装完毕后会启动一个2283的服务,直接可以用了,图片视频会保存在./immich-app/immich-data,也就是当前目录下创建了一个immich-app目录。

curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | bash

不过我还是建议大家自行下载yml文件修改进行安装

首先确保docker已经在运行中,创建一个作业目录,这是一个临时目录

mkdir immichdocker
cd immichdocker

下载docker-compose.yml

wget https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml

打开这个文件是这样的,唯一可能被修改的是2283端口可以修改为你需要的端口,但是理论上这个端口是不会被占用的,因为据我所知没有应用会默认使用这个端口,除非自行修改过,总之,这个文件几乎不用修改

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:80
    logging:
      driver: none
    depends_on:
      - immich-server
    restart: always

volumes:
  pgdata:

下载.env

wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example

打开后内容如下

其中必须修改的

1、UPLOAD_LOCATION 这个参数指定存放照片的真实绝对路径,我指定的是

/srv/dev-disk-by-label-data/storages/immich

这是omv的典型路径,我共享出来的storages下面创建了一个目录用于存放immich的内容

如果是普通linux的话,大概率是/data/immich之类,酌情修改

2、JWT_SECRET 这个项指定一个类似加密私钥的东西,必须修改,且不能泄露

###################################################################################
# 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=/srv/dev-disk-by-label-data/storages/immich

###################################################################################
# JWT SECRET
###################################################################################
JWT_SECRET=zheshiyigejwtsecretbixuxiugaierqiebunengxielou

###################################################################################
# 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 VITE_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>[email protected]</i><br>Password: <i>demo</i>"

启动安装

docker-compose up -d

这个命令需要的时间会比较长,这取决于你的网络

安装完成后,打开浏览器,输入ip:2283

注册账号,搞定。

手机app可以去谷歌市场/F-Droid/ios市场搜索immich下载即可

请尽情使用吧。

赞(1)
未经允许不得转载:DongVPS » [Docker Can]在nas上基于docker自建简洁照片备份应用immirch,同步手机图片和视频
分享到: 更多 (0)

评论 2

  1. #1

    登陆出错:
    Error code 500
    Internal Error
    Verbose

    {“message”:”Internal Error”}
    Get help
    不知道哪里问题?

    kany20002年前 (2022-09-26)回复
    • 服务没跑起来

      imajeason2年前 (2022-10-09)回复