抛弃 iCloud Photos, Google Photos 以及各类网盘,用 PhotoPrism 来管理你的照片

文章目录

PhotoPrism 简介

PhotoPrism® 是一款开源的人工智能照片管理程序。它在不妨碍您的前提下,利用最新技术自动标记和查找图片。您可以在家里、私人服务器或云端运行它。

功能概述

浏览所有照片和视频,无需担心RAW 转换、重复或视频格式问题
使用强大的搜索过滤器轻松查找特定图片
隐私友好:除非您明确将文件上传到其中一项服务,否则不会向 Google、Amazon、Facebook 或 Apple 发送任何数据
识别您的家人和朋友的面孔
根据内容和位置自动分类图片
通过将鼠标悬停在相册和搜索结果中来播放实况照片
由于用户界面是一个渐进式网页应用程序,它提供了一种原生应用程序般的体验,您可以方便地将其安装在所有主要操作系统和移动设备的主屏幕上
包括四个高分辨率世界地图,带回您最喜欢的旅行的回忆
元数据从 Exif、XMP 和其他来源(例如 Google 照片)中提取和合并
还可以搜索更多图像属性,例如Colors、Chroma 和 Quality
使用 PhotoSync 在 iOS 和 Android 手机后台进行安全的备份
WebDAV 客户端(如 Microsoft 的 Windows Explorer 和 Apple 的 Finder)可以直接连接到 PhotoPrism,让您可以像在本地计算机一样打开、编辑和删除文件

PhotoPrism 示例

PhotoPrism 提供了一个官方演示站点,您可以借助它来获得第一印象。

笔者的看法

之前老猪我一直使用 Google Photos 来备份和管理照片,因为众所周知的原因,它在国内的使用并不便利。

随着 Google Photos 不再免费作为催化剂,我将个人照片转移到了 iCloud Photos,但 iCloud Photos 同样有着多样问题,例如同样存在免费空间限额,使用非 iOS 设备体验不佳等问题。

后来,我发现了 PhotoPrism,你可以轻松将它部署在个人电脑、家中的 NAS、私人服务器或是云主机上,然后随时随地通过任意设备访问和管理。此外,所有的数据都在你的掌控下,完全没有隐私问题。

建设性意见

  1. 部署在数据中心、拥有公网 IP 地址的家用网络中,或是使用内网穿透,以便随时随地访问
  2. 部署在 7 x 24 运行的 Linux 服务器、NAS 网络存储或其它小型化设备上
  3. 部署在创建有 RAID 阵列的设备上可以避免硬盘损坏带来的严重后果

PhotoPrism 部署

快速安装

PhotoPrism 的安装简单到丧心病狂,在你安装了 dockerPortainer 的前提下,安装过程甚至用不了一分钟。

  1. 登录 Portainer 管理页面选择 local

  2. 点击左侧 Stacks ,在该页面中点击 Add stack

  3. 为 Stack 命名,将官方提供的 配置模板 复制进去, 然后点击页面底部 Deploy the stack 完成创建

进阶安装

  1. 创建用于持久化存储 PhotoPrism 数据的目录(命名规则参考)

    mkdir -p '自定义数据目录'/originals
    mkdir -p '自定义数据目录'/storage
  2. PhotoPrism 默认使用内建的 MariaDB 数据库来存储数据,考虑到它的应用是那么的广泛,我们应该避免未来多个 docker 应用各自运行独立的 MariaDB 数据库。因此,请先 安装 Docker 版本的 MariaDB 数据库和可视化数据库管理工具 phpMyAdmin ,这对节省系统资源和维护管理相当有用。
  3. 通过 Portainer 管理面板创建一个 PhotoPrism 和 MariaDB 专用的网络,此举可以提升安全性。

    点击 Portainer 左侧 Networks,点击右侧 Add network,在 name 处输入 photoprism-net,然后直接点击页面底部的 Create the network 完成创建。

  4. 将之前安装的 MariaDB 加入到刚才新建的 photoprism-net 网络中

    点击 Portainer 左侧 Stacks,点击右侧列表中的 mariadb-phpmyadmin,切换到 Editor 选项卡,加入红框内的内容, 然后点击页面下方的 Update the stack 完成修改

  5. 登录之前创建的 phpMyAdmin 管理页面,为 PhotoPrism 创建专用数据库和账户。

    点击管理页面 – 账户 – 新增用户账户

    用户名填写 photoprism,密码填写 insecure,勾选 创建与用户同名的数据库并授予所有权限,然后点击底部的执行。(账户和密码可自行修改)

  6. 点击 portainer 控制面板左侧 Stacks ,在该页面中点击 Add stack

  7. Stack 命名,根据需要修改下文中提供的模板并粘贴到页面上,然后点击页面底部 Deploy the stack 完成创建

    version: '3.5'
    
    services:
     photoprism:
       image: photoprism/photoprism:latest
       restart: always
       security_opt:
         - seccomp:unconfined
         - apparmor:unconfined
       ports:
         - "2342:2342"                                  # HTTP 网页访问端口,例如要改为通过 6001 端口访问,就修改成 6001:2342
       environment:
         PHOTOPRISM_ADMIN_PASSWORD: "insecure"          # 修改默认 admin 账户的密码,最少8位
         PHOTOPRISM_SITE_URL: "http://localhost:2342/"  # public server URL incl http:// or https:// and /path, :port is optional
         PHOTOPRISM_ORIGINALS_LIMIT: 5000               # file size limit for originals in MB (increase for high-res video)
         PHOTOPRISM_HTTP_COMPRESSION: "gzip"            # improves transfer speed and bandwidth utilization (none or gzip)
         PHOTOPRISM_LOG_LEVEL: "info"                   # log level: trace, debug, info, warning, error, fatal, or panic
         PHOTOPRISM_PUBLIC: "false"                     # no authentication required (disables password protection)
         PHOTOPRISM_READONLY: "false"                   # do not modify originals directory (reduced functionality)
         PHOTOPRISM_EXPERIMENTAL: "false"               # enables experimental features
         PHOTOPRISM_DISABLE_CHOWN: "false"              # disables storage permission updates on startup
         PHOTOPRISM_DISABLE_WEBDAV: "false"             # disables built-in WebDAV server
         PHOTOPRISM_DISABLE_SETTINGS: "false"           # disables settings UI and API
         PHOTOPRISM_DISABLE_TENSORFLOW: "false"         # disables all features depending on TensorFlow
         PHOTOPRISM_DISABLE_FACES: "false"              # disables facial recognition
         PHOTOPRISM_DISABLE_CLASSIFICATION: "false"     # disables image classification
         PHOTOPRISM_DISABLE_RAW: "false"                # disables indexing and conversion of RAW files
         PHOTOPRISM_RAW_PRESETS: "false"                # enables applying user presets when converting RAW files (reduces performance)
         PHOTOPRISM_JPEG_QUALITY: 85                    # JPEG 图像质量,较高的值可减少压缩率(25-100)
         PHOTOPRISM_DETECT_NSFW: "false"                # flag photos as private that MAY be offensive (requires TensorFlow)
         PHOTOPRISM_UPLOAD_NSFW: "true"                 # allows uploads that MAY be offensive
         # PHOTOPRISM_DATABASE_DRIVER: "sqlite"         # SQLite is an embedded database that doesn't require a server
         PHOTOPRISM_DATABASE_DRIVER: "mysql"            # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
         PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"     # MariaDB or MySQL database server (hostname:port)
         PHOTOPRISM_DATABASE_NAME: "photoprism"         # MariaDB or MySQL database schema name
         PHOTOPRISM_DATABASE_USER: "photoprism"         # MariaDB or MySQL database user name
         PHOTOPRISM_DATABASE_PASSWORD: "insecure"       # 之前在 phpMyAdmin 创建 photoprism 账户时设置的密码
         PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
         PHOTOPRISM_SITE_DESCRIPTION: ""                # meta site description
         PHOTOPRISM_SITE_AUTHOR: ""                     # meta site author
         ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clitools, clean):
         # PHOTOPRISM_INIT: "gpu tensorflow"
         ## Hardware Video Transcoding (for sponsors only due to high maintenance and support costs):
         # PHOTOPRISM_FFMPEG_ENCODER: "software"        # FFmpeg encoder ("software", "intel", "nvidia", "apple", "raspberry")
         # PHOTOPRISM_FFMPEG_BITRATE: "32"              # FFmpeg encoding bitrate limit in Mbit/s (default: 50)
         ## Run as a specific user, group, or with a custom umask (does not work together with "user:")
         # PHOTOPRISM_UID: 1000
         # PHOTOPRISM_GID: 1000
         # PHOTOPRISM_UMASK: 0000
       ## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
       # user: "1000:1000"
       ## Share hardware devices with FFmpeg and TensorFlow (optional):
       # devices:
       #  - "/dev/dri:/dev/dri"                         # Intel QSV
       #  - "/dev/nvidia0:/dev/nvidia0"                 # Nvidia CUDA
       #  - "/dev/nvidiactl:/dev/nvidiactl"
       #  - "/dev/nvidia-modeset:/dev/nvidia-modeset"
       #  - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl"
       #  - "/dev/nvidia-uvm:/dev/nvidia-uvm"
       #  - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools"
       #  - "/dev/video11:/dev/video11"                 # Raspberry V4L2
       working_dir: "/photoprism" # do not change or remove
       ## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
       volumes:
          - "'自定义数据目录'/originals:/photoprism/originals"      # 存放导入到 PhotoPrism 的照片(需要你新建的 PhotoPrism 相册目录)
          - "'自定义数据目录'/storage:/photoprism/storage"          # 存放 PhotoPrism 的缓存、数据库等文件
          - "'原始相册目录':/photoprism/import"                     # PhotoPrism 会扫描这个目录,根据你的选择,复制或移动照片到 PhotoPrism 相册保存目录
          # - "/example/family:/photoprism/originals/family"      # *Additional* media folders can be mounted like this
       networks:
         - photoprism-net
    networks:
     photoprism-net:
       external: true

登录

创建成功后,你可以通过打开 Web 浏览器并转到以下位置登录到您的 PhotoPrism 实例:

http://localhost:2342 # 账号 admin 密码 PHOTOPRISM_ADMIN_PASSWORD 设置的值
  • 如果您不是在本机安装,请不要忘记将 localhost 替换为安装设备的实际 IP 地址
  • 如果您修改了默认的 HTTP 访问端口,请不要忘记将 2342 替换为您自定义的端口

必要设置

更改系统语言

将照片导入到 PhotoPrism 相册目录

特别说明

配置模板里带有中文注释的参数配置均可根据自身需求随意修改,我未翻译的参数配置不建议新手小白在首次安装时进行修改。

后期当你理解那些参数的意思了,可以按照进阶安装第 3 步来修改 PhotoPrism 的配置。

例如,我的安装设备是群晖 DS918 +,经确认,我可以与 FFmpeg 和 TensorFlow 共享硬件设备 Intel QSV

于是,上面的进阶配置中,我可以把这两行的注释取消,让设备拥有更好的硬件解码性能。

devices:
  - "/dev/dri:/dev/dri"                         # Intel QSV

延伸阅读

使用 HTTPS 加密你的站点,保护交换数据的隐私与完整性

关于 NAS 网络存储设备选购的一点个人建议

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
By 马丁龙猪

标签

归档

其他操作