跳至正文

开源相册对比

一、功能对比

特征LibrePhotosPhotoviewPhotoprismimmichphotonixDamselflySynology
照片✔️✔️✔️✔️✔️✔️✔️
视频✔️✔️✔️✔️✔️✔️
Raw 照片✔️✔️✔️✔️✔️✔️
HEIC 照片✔️✔️✔️✔️✔️✔️
Live Photo✔️✔️✔️✔️
X265 视频✔️✔️✔️
时间轴✔️✔️✔️✔️✔️
水平滚动搜索✔️✔️
不改变文件夹结构✔️✔️✔️✔️
相册管理✔️✔️✔️✔️✔️✔️
地点✔️✔️✔️✔️✔️
地图搜索相片✔️✔️✔️✔️
自动相册✔️✔️✔️
人脸识别/人脸分类✔️✔️✔️✔️✔️
人脸聚类✔️✔️✔️✔️
反向地理编码✔️VIP✔️✔️✔️
场景检测✔️
属性检测✔️✔️
类别检测✔️
物体检测✔️✔️✔️✔️✔️
语义图像搜索✔️
按元数据搜索VIP✔️✔️✔️✔️
按元数据编辑VIP✔️
将元数据同步到文件✔️
多用户支持✔️✔️VIP✔️✔️
用户之间共享✔️✔️✔️✔️
分享为唯一链接✔️✔️✔️
分享为公共页面✔️✔️
上传图片和视频✔️✔️✔️VIP✔️
删除图像和视频✔️✔️✔️✔️
网站✔️✔️✔️✔️✔️✔️
iOS应用程序✔️✔️✔️✔️
安卓应用程序✔️✔️✔️✔️
深色模式✔️✔️✔️✔️✔️
从应用程序自动备份✔️✔️
多语言支持✔️✔️✔️✔️✔️
支持较旧的 CPU✔️✔️✔️✔️✔️
参考链接

优缺点总结:

特点LibrePhotosPhotoviewPhotoprismimmichphotonixDamselflySynology
优点支持客户端
人脸识别快速
支持客户端但只能上传支持live photo
支持客户端
完美
缺点界面排版及中文支持不好
网页版只能上传为jpeg
只能导入不能上传
不支持识别物体
界面排版及中文支持不是很好
缺少时间线查看
没有全选按钮
归档功能有BUG
破坏文件结构、依赖数据库
网页版不支持中文
默认地图底图被屏蔽无法显示(可更换国内解决)
容器镜像难拉取且容易报错误
付费

二、安装相册:

#docker-compose.yml文件为创建容器配置文件, env文件为docker配置文件的调用环境变量文件

#修改*.env.txt 文件为 .env 修改*.yml.txt文件为 docker-compose.yml

#编辑配置文件时,请注意相关值必须在 YAML 文件中以相同的缩进级别开始,并且不允许使用制表符缩进,建议使用空格

#进入到docker-compose.yml文件夹内,运行命令进行安装

#加载容器配置,取消-d参数可在前台运行查看日志
docker compose up -d

#如更改配置后请重启配置
docker compose stop
docker compose up -d

#docker compose请注意,我们的示例默认使用新命令。
#如果您的服务器尚不支持它,您仍然可以使用docker-compose或podman-compose与 Red Hat 兼容的 Linux 发行版。

1、LibrePhotos

2、Photoview

3、Photoprism

3.1 官网推荐安装方式

3.1.1 下载docker示例配置文件(参考官网配置说明

wget https://dl.photoprism.app/docker/docker-compose.yml

3.1.2 将准备好的docker配置文件上传至主机内

3.1.3 打开终端并切换至配置文件所在文件夹

3.1.4 启动服务(不影响已存在的容器)

3.2 纯代码创建

3.2.1 docker拉取镜像

docker pull photoprism/photoprism:latest

3.2.2 docker 运行镜像

docker run -d \
  --name photoprism \
  --security-opt seccomp=unconfined \
  --security-opt apparmor=unconfined \
  -p 2342:2342 \
  -e PHOTOPRISM_UPLOAD_NSFW="true" \
  -e PHOTOPRISM_ADMIN_PASSWORD="[管理密码]" \
  -v /photoprism/storage \
  -v [本地目录]:/photoprism/originals \
  photoprism/photoprism

3.3 Nginx代理

#photoprism
server {
        listen 80;
        listen 443 ssl ;
        server_name [自定义域名];

        client_max_body_size 500M;
        ssl_certificate [ssl证书].pem;
        ssl_certificate_key [ssl证书].key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        proxy_intercept_errors on;

        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;

                proxy_pass [本地ip:端口];

                proxy_buffering off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Real-IP $remote_addr;

                client_max_body_size 500M;
        }
}

4、immich

默认使用的ghcr.io源网络原因无法拉取,可以使用项目进行中转之后再进行

参考togettoyou的项目(感谢)

多合一镜像(仍然需要中转)

#docker-compose

---
version: "2.1"
services:
  immich:
    image: ghcr.io/imagegenius/immich:latest
    container_name: immich
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - DB_HOSTNAME=192.168.1.x
      - DB_USERNAME=postgres
      - DB_PASSWORD=postgres
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=192.168.1.x
      - DISABLE_MACHINE_LEARNING=false #optional
      - DISABLE_TYPESENSE=false #optional
      - DB_PORT=5432 #optional
      - REDIS_PORT=6379 #optional
      - REDIS_PASSWORD= #optional
      - MACHINE_LEARNING_WORKERS=1 #optional
      - MACHINE_LEARNING_WORKER_TIMEOUT=120 #optional
    volumes:
      - path_to_appdata:/config
      - path_to_photos:/photos
      - path_to_machine-learning:/config/machine-learning #optional
    ports:
      - 8080:8080
    restart: unless-stopped
# This container requires an external application to be run separately to be run separately.
# Redis:
  redis:
    image: redis
    ports:
      - 6379:6379
    container_name: redis
# PostgreSQL 14:
  postgres14:
    image: postgres:14
    ports:
      - 5432:5432
    container_name: postgres14
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: immich
    volumes:
      - path_to_postgres:/var/lib/postgresql/data

#docker-cli

docker run -d \
  --name=immich \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e DB_HOSTNAME=192.168.1.x \
  -e DB_USERNAME=postgres \
  -e DB_PASSWORD=postgres \
  -e DB_DATABASE_NAME=immich \
  -e REDIS_HOSTNAME=192.168.1.x \
  -e DISABLE_MACHINE_LEARNING=false `#optional` \
  -e DISABLE_TYPESENSE=false `#optional` \
  -e DB_PORT=5432 `#optional` \
  -e REDIS_PORT=6379 `#optional` \
  -e REDIS_PASSWORD= `#optional` \
  -e MACHINE_LEARNING_WORKERS=1 `#optional` \
  -e MACHINE_LEARNING_WORKER_TIMEOUT=120 `#optional` \
  -p 8080:8080 \
  -v path_to_appdata:/config \
  -v path_to_photos:/photos \
  -v path_to_machine-learning:/config/machine-learning `#optional` \
  --restart unless-stopped \
  ghcr.io/imagegenius/immich:latest

# This container requires an external application to be run separately.
# Redis:
docker run -d \
  --name=redis \
  -p 6379:6379 \
  redis

# PostgreSQL 14:
docker run -d \
  --name=postgres14 \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=immich \
  -v path_to_postgres:/var/lib/postgresql/data \
  -p 5432:5432 \
  postgres:14

国内地图参考更换

#更换高德:https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}
#https://www.cnblogs.com/lucio110/p/17310054.html
#https://www.cnblogs.com/googlegis/p/14986844.html

发表回复