如何使用Docker搭建PhotoPrism - 打造基于AI私有化的个人相册系统

2023-05-16

一、简介

PhotoPrism® 是一款由人工智能驱动的应用程序,用于浏览、组织和分享您的照片集。它利用最新技术自动标记和查找图片。您可以在家里、私人服务器或云端运行它。

PhotoPrism对很多设备提供了支持,包括Mac, Linux, Windows, DigitalOcean, Raspberry Pi, FreeBSD, 以及 NAS devices 。安装方面官方推荐使用Docker Compose进行安装。

二、功能概述

• 浏览你所有的照片和视频而不用担心格式转换,重复或视频格式问题
• 轻松地找到特定的图片查看具备强大的搜索过滤器
• 认识到你的家人和朋友的面孔(面部识别)
• 自动分类基于内容的图片和位置
• 将鼠标悬停在照片上面显示各种照片信息
• 实用好看的的WebUI界面,提供了自适配方案,您可以方便地在所有主流操作系统和移动设备查看你的照片
• 包括四个高分辨率的世界地图,带你回忆你最喜欢的旅行
• 元数据提取和合并Exif,XMP和其他来源,如谷歌照片
• 更多的图像属性颜色,浓度,质量供搜索
• 使用PhotoSync在后台安全地备份,有iOS和Android双端APP
• WebDAV服务,如微软的Windows Explorer和苹果的finder,可以直接连接PhotoPrism,允许您打开、编辑和删除文件,或者直接下载到本地

官网地址:https://docs.photoprism.app/

官方Demo地址:https://demo-zh.photoprism.app/

三、系统要求

根据官方建议CPU选项最少2核,内存选项最少4GB,如果服务器内存的交换空间小于4GB可能导致意外重启。

下图为虚拟机设定参数,设定量可根据宿主机配置灵活分配。

image-1668566286572

由于我的服务器最大为6核,所以我这里设定为6核

image-1668566318657

四、安装环境

系统:CentOS 7
服务器IP:192.168.50.101
域名:www.example.com

五、使用Docker Compose进行安装

借助Docker Compose,您可以使用 YAML 文件 来配置所有应用程序服务,这样您就可以轻松地使用单个命令启动它们。在继续之前,请确保您的系统上安装了Docker (Linux安装Docker教程)。

1、创建工作目录

mkdir -p /mnt/docker-volumes/photoprism

2、切换到工作目录

cd /mnt/docker-volumes/photoprism

3、下载官方docker-compose.yml示例

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

4、配置调整

PhotoPrism环境变量说明

变量说明
PHOTOPRISM_ADMIN_USER网页登录用户名
PHOTOPRISM_ADMIN_PASSWORD网页登录密码
PHOTOPRISM_SITE_URL网页访问地址
PHOTOPRISM_DATABASE_DRIVER数据库驱动
PHOTOPRISM_DATABASE_SERVER数据库主机IP及端口
PHOTOPRISM_DATABASE_NAME数据库名称
PHOTOPRISM_DATABASE_USER数据库用户名
PHOTOPRISM_DATABASE_PASSWORD数据库密码

PhotoPrism卷挂载说明

容器目录说明
/photoprism/originals存放照片目录
/photoprism/storage存放配置
/photoprism/import导入文件目录

MariaDB环境变量说明

变量说明
MARIADB_DATABASE数据库名称
MARIADB_USER数据库用户名
MARIADB_PASSWORD数据库密码
MARIADB_ROOT_PASSWORDroot密码

MariaDB卷挂载说明

容器目录说明
/var/lib/mysql数据库存放目录

调整后的docker-compose.yml内容如下:

version: '3.5'
services:
  photoprism:
    image: photoprism/photoprism:latest
    depends_on:
      - mariadb
    restart: unless-stopped
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    ports:
      - "2342:2342" # HTTP port (host:container)
    environment:
      PHOTOPRISM_ADMIN_USER: "admin"                 # admin username
      PHOTOPRISM_ADMIN_PASSWORD: "insecure"          # initial admin password (minimum 8 characters)
      PHOTOPRISM_AUTH_MODE: "password"               # authentication mode (public, password)
      PHOTOPRISM_SITE_URL: "http://www.example.com:2342/"  # server URL in the format "http(s)://domain.name(:port)/(path)"
      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_READONLY: "false"                   # do not modify originals directory (reduced functionality)
      PHOTOPRISM_EXPERIMENTAL: "false"               # enables experimental features
      PHOTOPRISM_DISABLE_CHOWN: "false"              # disables updating storage permissions via chmod and chown 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 face detection and recognition (requires TensorFlow)
      PHOTOPRISM_DISABLE_CLASSIFICATION: "false"     # disables image classification (requires TensorFlow)
      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                    # a higher value increases the quality and file size of JPEG images and thumbnails (25-100)
      PHOTOPRISM_DETECT_NSFW: "false"                # automatically flags photos as private that MAY be offensive (requires TensorFlow)
      PHOTOPRISM_UPLOAD_NSFW: "true"                 # allows uploads that MAY be offensive (no effect without TensorFlow)
      # 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"       # MariaDB or MySQL database user password
      PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
      PHOTOPRISM_SITE_DESCRIPTION: ""                # meta site description
      PHOTOPRISM_SITE_AUTHOR: ""                     # meta site author
    working_dir: "/photoprism" # do not change or remove
    volumes:
      - "/mnt/docker-volumes/photoprism/photos:/photoprism/originals"               # Original media files (DO NOT REMOVE)
      - "/mnt/docker-volumes/photoprism/config:/photoprism/storage"                 # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
      - "/mnt/docker-volumes/photoprism/import:/photoprism/import"

  ## Database Server (recommended)
  ## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
  mariadb:
    ## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue:
    ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
    restart: unless-stopped
    image: mariadb:10.9
    security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
      - seccomp:unconfined
      - apparmor:unconfined
    command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
    ## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
    volumes:
      - "/mnt/docker-volumes/photoprism/database:/var/lib/mysql" # DO NOT REMOVE
    environment:
      MARIADB_AUTO_UPGRADE: "1"
      MARIADB_INITDB_SKIP_TZINFO: "1"
      MARIADB_DATABASE: "photoprism"
      MARIADB_USER: "photoprism"
      MARIADB_PASSWORD: "insecure"
      MARIADB_ROOT_PASSWORD: "insecure"

  ## Watchtower upgrades services automatically (optional)
  ## see https://docs.photoprism.app/getting-started/updates/#watchtower
  ## activate via "COMPOSE_PROFILES=update docker compose up -d"
  watchtower:
    restart: unless-stopped
    image: containrrr/watchtower
    profiles: ["update"]
    environment:
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_POLL_INTERVAL: 7200 # checks for updates every two hours
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      #- "~/.docker/config.json:/config.json" # optional, for authentication if you have a Docker Hub account

5、启动容器

docker-compose up -d

6、访问服务

http://www.example.com:2342

账号为 admin,密码就是我们在 PHOTOPRISM_ADMIN_PASSWORD 中设置的值

image-1668588056818

登录成功后进入主界面,此时还未上传图片,所以主界面是空的

image-1668588523986

设置中文

左侧菜单 settings --> GENERAL --> Language 中下拉找到 简体中文

image-1668588584604

界面会自动刷新

image-1668588629634

六、备份与同步

使用 PhotoSync 在后台安全地备份 iOS 和 Android 手机。Microsoft 的 Windows Explorer 和 Apple 的 Finder 等 WebDAV 客户端可以直接连接到 PhotoPrism,让您可以像在本地一样打开、编辑和删除计算机中的文件。

1、下载手机应用PhotoSync

7dce966fd0e5745024dadca15040c54

2、配置PhotoPrism

55d800fe1e3e78ba59a67256630a7a4

3、输入服务器信息

795f27fb0d0040f834dc217edfe3aab

配置完成后在APP首页点击右上角 “同步” 按钮,即可开始同步手机照片到服务器。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Docker搭建PhotoPrism - 打造基于AI私有化的个人相册系统 的相关文章

  • Java中repaint方法清除原来图像问题

    虽然Java界面编程作用不大 xff0c 但在兴趣的驱使下还是了解了一下 xff0c 在写小程序的时候发现了repaint方法有时候会清理原来的图像 xff0c 有时候又不清理 下面贴出我通过API文档得出的结论 xff0c 以下例子窗口为
  • 怎样找回自己CSDN丢失博客?

    写博客是件很欢快的事情 xff0c 但没多久就发现自己刚写的博客丢失 xff0c 这是一件更加 欢快 的事情 百度了一下关于CSDN博客丢失的现象 xff0c 虽然不算很多 xff0c 但还是有个别人也同样发生了这样的情况 注 xff1a
  • 拓扑排序(队列实现)

    什么是拓扑排序呢 xff1f 就是将一个有向无环图中所有顶点在不违反先决条件关系的前提下排成线性序列的过程称为拓扑排序 学拓扑排序有什么用呢 xff1f 当然有用啦 比如说学校排课的时候 xff0c 会考虑到有的课程需要先修 我们学完C程序
  • Arch的VBox安装笔记

    Arch Version archlinux 2015 12 01 dual Virtual Box Version 5 0 16 r105871 Update xff1a 2016 03 26 17 08 18 1 分区 xff08 cf
  • Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file

    maven打包报错 org springframework boot maven BuildInfoMojo hasbeen copiled by a more recent version of the Java Runtime clas
  • 前端JS接收服务端的二进制文件流实现文件下载

    前端JS接收服务端的二进制文件流实现文件下载 var binaryData 61 binaryData push res 改成Boole或者file类型 const url 61 window URL createObjectURL new
  • debian10ssh配置用户限制,日志等

    需求 xff1a 工作端口为2021 xff1b 只允许用户user01 xff0c 密码ChinaSkill21登录到router 其他用户 xff08 包括root xff09 不能登录 xff0c 创建一个新用户 xff0c 新用户可
  • CentOS搭建PySpider爬虫服务

    1 环境准备 前置环境部署 在开始部署前 xff0c 我们需要做一些前置准备 yum 更新 yum span class hljs operator span class hljs keyword update span y span 安装
  • openGauss5.0企业版CentOS单节点安装

    目录 一 安装环境 二 前置依赖包 三 安装前准备1 四 安装前准备2 五 安装 一 安装环境 CPU xff1a 2核 内存 xff1a 4G 磁盘 xff1a 20G 操作系统 xff1a CentOS 7 9 python版本 xff
  • SpringBoot+PageHelper+Bootstrap+Thymeleaf 实现分页功能

    本文针对那种想要快速实现功能 xff0c 而不是研究原理的 xff0c 那你就直接复制我的东西 xff0c 运行就好 如果想深入学习的同学请另行百度 第一种 Spring Boot 43 Thymeleaf 使用PageHelper实现分页
  • Idea集成使用SVN教程

    idea 从项目窗口跳到打开项目选项窗口 操作之后即可跳到如下界面 第一步 下载svn的客户端 xff0c 通俗一点来说就是小乌龟啦 xff01 官网下载地址 xff1a Downloads TortoiseSVN 下载之后直接安装就好了
  • IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结

    IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结 请叫我大师兄 CSDN博客 ideasvn配置 https blog csdn net qq 27093465 article details 74898489 首先 x
  • webpack 错误

    1 ERROR in src main css Module build failed from node modules mini css extract plugin dist loader js ReferenceError docu
  • 客户端js 读取 json 数据

    采用 XMLHttpRequest 读取 1 new 初始化 XMLHttpRequest 2 open 设置请求方式 xff0c 地址 3 send 发起请求 4 onload 请求成功 xff0c 返回结果 代码 xff1a lt DO
  • dataTable的中文文档

    DataTables Table plug in for jQuery https datatables net 用google 打开 xff0c 直接翻译 参考 选项 DataTables 及其扩展是极其可配置的库 xff0c 它们对 H
  • nodejs核心API

    1 Buffer对象 不需要引入 Bufferd对象用途 以二进制流进行数据的传送传递 1 三种创建方式 类似于数组的创建 用16进制存储 let buf1 61 Buffer alloc 20 13 console log buf1 lt
  • mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序

    mysql select xff0c from xff0c join xff0c on xff0c where groupby having order by limit的执行顺序和书写顺序 关键字或 解释执行顺序select 查询列表 x
  • jQuery对checkbox的各种操作

    注意 xff1a 操作checkbox的checked disabled属性时jquery1 6以前版本用attr 1 6以上 xff08 包含 xff09 建议用prop 1 根据id获取checkbox 34 cbCheckbox1 3
  • dom 操作排他思路

    1 遍历所有 xff0c 操作 xff0c 对具体的重新操作 实现点击一个按钮就把背景颜色改为pink颜色 lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta
  • web前端兼容

    兼容性 xff1a Compatibility overview https www quirksmode org compatibility html 当前测试 CSS所有 CSS 选择器和声明 xff08 最终 xff09 DOM所有

随机推荐

  • 使用跨域资源共享的 DOM 访问控制

    Dev Opera DOM Access Control Using Cross Origin Resource Sharing https dev opera com articles dom access control using c
  • react-typescript 错误

    64 types jsurl index d ts 39 is not a module npm i jsurl 安装错误 xff0c 因为 typescript无法用此方法安装 xff0c 卸载干净 1 增加types目录 新建jsurl
  • react-router-dom错误

    index tsx 24 Uncaught Error useLocation may be used only in the context of a lt Router gt component at invariant index t
  • Total Blocking Time 总阻塞时间 (TBT)

    总阻塞时间 TBT 是测量加载响应度的重要实验室指标 xff0c 因为该项指标有助于量化在页面交互性变为可靠前 xff0c 不可交互程度的严重性 xff0c 较低的 TBT 有助于确保页面的可用性 什么是 TBT xff1f 总阻塞时间 T
  • JavaScript中的回调的作用是什么

    这期内容当中小编将会给大家带来有关JavaScript中的回调的作用是什么 xff0c 文章内容丰富且以专业的角度为大家分析和叙述 xff0c 阅读完这篇文章希望大家可以有所收获 回调函数 首先写一个向人打招呼的函数 只需要创建一个接受 n
  • css如何换行

    在css中通过word break与white space这两个属性来设置自动换行 xff0c 其中word wrap属性允许长单词或URL地址换行到下一行 xff1b 而white space属性可以设置文本换行方式 本文操作环境 xff
  • JS 实现复制功能(document.execCommand)

    功能 xff1a 点击按钮 xff0c 复制值 实现方法 xff1a 通过原生js 的方法document execCommand 39 copy 39 坑 xff1a document execCommand copy 不生效 不能实现的
  • Linux chmod命令 修改文件权限被禁止(not permitted)的解决办法

    解决方法 在Linux环境下 xff0c 修改文件时以外导致文件没有权限读取和修改 xff0c 在修改相关文件 usr bin docker的属性的时 chmod 777 usr bin containerd chmod changing
  • springsource-tools下载安装

    下载springsource tools我弄了一个多小时才找到下载地址 xff0c 必须得好好记录一下 首先 需要避免一个误区 xff1a 下载的不是spring tools 这个下载后是一个jar包 也不是一个可执行文件的压缩包 xff0
  • canvas节点无法导出图片_前端实现图片压缩及遇到的问题

    图片上传是前端中常见的的业务场景 无论是前台还是后台 xff0c 适当的对图片进行压缩处理 xff0c 可以显著的提升用户体验 而在后台管理系统中 xff0c 图片压缩不仅仅能够提升后台管理员操作体验 xff0c 更是可以防止后台设置过大的
  • iframe嵌套其它网站页面详解

    iframe基本内涵 通常我们使用iframe直接直接在页面嵌套iframe标签指定src就可以了 lt iframe src 61 34 demo iframe sandbox htm 34 gt lt iframe gt 但是 xff0
  • iframe嵌入其他网站,如何自适应高度

    终于有一周时间 xff0c 工作不那么忙了 xff0c 腾出手来总结下工作过程中学到的知识 每天遇到新问题 xff0c 解决新问题 xff0c 但是却很少有时间去仔细研究下 xff0c 或者总结下 攒的多了 xff0c 就得从头捋一遍 说下
  • 解决anaconda安装pil包时的问题

    在anaconda中安装pil时出现UnsatisfiableError 看了较多的解决方法 看了较多的解决方法 很多都是讲怎样创建新的环境再安装 xff0c 在Linux中只需要将这样做 xff1a xff08 Linux小白的详细操作
  • 1.5 字符串

    1 5 1 单引号 双引号 三引号 a 61 34 Hello world 34 双引号 b 61 39 python is groovy 39 单引号 c 61 34 34 34 Computer says 39 No 39 34 34
  • leetcode 1357. 每隔 n 个顾客打折(C++)

    超市里正在举行打折活动 xff0c 每隔 n 个顾客会得到 discount 的折扣 超市里有一些商品 xff0c 第 i 种商品为 products i 且每件单品的价格为 prices i 结账系统会统计顾客的数目 xff0c 每隔 n
  • (Taro篇)如何自定义小程序Swiper面板指示点的样式

    效果图 轮播组件jsx span class token keyword import span span class token punctuation span Component span class token punctuatio
  • 如何使用Docker搭建Heimdall-打造你自己的专属浏览器首页

    一 介绍 Heimdall是一种以简单的方式组织所有指向您最常用的网站和 Web 应用程序的链接的方法 简单是 Heimdall 的关键 它甚至可以使用 Google Bing 或 DuckDuckGo 包含一个搜索栏 二 安装环境 系统
  • CentOS8中使用Libreoffice7.3遇到的问题

    首先借鉴了这篇文章对Libreoffice进行了下载和安装 https blog csdn net UnicornRe article details 119677482 在本地的centos7环境中测试word转pdf是没有问题的 xff
  • UIImageView的基本使用

    UIImageView作为iOS开发里基本控件 xff0c 是我们第四个需要学习的 下面我来为大家介绍一下UIImageView的一些常用属性和它们的用法 这里附上UI控件演示的源码地址 xff1a https github com LOL
  • 如何使用Docker搭建PhotoPrism - 打造基于AI私有化的个人相册系统

    一 简介 PhotoPrism 是一款由人工智能驱动的应用程序 xff0c 用于浏览 组织和分享您的照片集 它利用最新技术自动标记和查找图片 您可以在家里 私人服务器或云端运行它 PhotoPrism对很多设备提供了支持 xff0c 包括M