环境
基于portainer版本:1.24.2.和docker版本:19.03.5
背景
手机相册图片太多,备份到家用服务器,这时候选择一个相册软件,尤为重要。
我的要求:
支持网页上传
别的也没啥要求了,选择了PhotoPrism。
正文开始
Docker部署
步骤可分为①拉取镜像.②映射端口.③映射目录路径.④添加环境变量.以下是每一步的分部教程。
准备几个存储卷
方便photoprism映射
物理来源pve硬盘,nfs映射
pve上建好目录结构
创建好存储卷
准备数据库
使用已安装的容器MariaDB。
登录之前创建的 phpMyAdmin 管理页面,为 PhotoPrism 创建专用数据库和账户。
点击管理页面 – 账户 – 新增用户账户
用户名填写 photoprism,密码填写 insecure,勾选 创建与用户同名的数据库并授予所有权限,然后点击底部的执行。(账户和密码可自行修改)
拉取镜像
- 进入容器,添加容器
- 编辑参数
名称:photoprism
镜像源:photoprism/photoprism:latest
添加端口映射:
2342-2342 tcp
添加容器卷
网传:
- "'自定义数据目录'/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
我只设置了前面准备的2个存储卷
修改网络
关联到前面设置的数据库专用网络
添加环境变量
因为比较多,可以使用高级模式粘贴
可以自己调整如下
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
图示如下(注意删除等号后面的双引号),可以删除上面的注释行和后面的文字注释。
修改重启策略为除非停止
网传的参数多余,我没有找到地方设置的如下:
security_opt:
- seccomp:unconfined
- apparmor:unconfined
部署
打开ip+2342就可以登录和管理图片了。
遇到问题
打不开,原因是photoprism只有数据库的内部网络,需要再加一个外部的网络,即家里局域网的pc可以访问到他的网络。
点开容器,滑到最下方,加入网络,选择bridge加入。
重新访问即可管理照片了。
http://localhost:2342
账号 admin 密码 PHOTOPRISM_ADMIN_PASSWORD 设置的值
如果您不是在本机安装,请不要忘记将 localhost 替换为安装设备的实际 IP 地址
如果您修改了默认的 HTTP 访问端口,请不要忘记将 2342 替换为您自定义的端口
必要时设置
更改系统语言
将照片导入到 PhotoPrism 相册目录
资料库-导入-上传。
后记
体验一段时间再谈体验吧,好像照片管理是nas的一个重点,也是群晖无法被自定义nas的docker替代的一点。
不过大家的确可以试试 photoprism,生命不息,折腾不止。