原文地址:https://lala.im/8028.html,請支持原作者!該處僅作轉載。
photoprism是一个照片管理程序,从本质上说和chevereto这类图床程序相比是有很大区别的。
photoprism更适合用作个人的照片管理程序,如果你喜欢拍照,或者是摄影师,有这方面的需求,那就非常适合。
如果只是单纯的拿来上传一些图片,就有点大材小用了,因为这个程序里面很多功能你可能都用不上。
而且它比较吃配置,官方建议最低的配置是2C4G。如果关闭TensorFlow功能,也许2G内存也能运行。
下面我在甲骨文的arm上部署一下,系统是oraclelinux8。首先装需要用到的软件。
docker:
sudo dnf -y update
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
sudo usermod -aG docker opc
docker-compose:
sudo dnf -y install python3-devel
sudo dnf group install "Development Tools"
pip3 install docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
nginx/certbot:
sudo dnf -y install oracle-epel-release-el8
sudo dnf config-manager --set-enabled ol8_developer_EPEL
sudo dnf -y install python3-certbot-nginx nginx
sudo systemctl enable --now nginx
selinux/防火墙:
sudo setsebool -P httpd_can_network_connect 1
sudo firewall-cmd --set-default-zone=trusted
sudo firewall-cmd --reload
新建一个compose:
nano docker-compose.yml
写入如下配置:
version: '3.5'
services:
photoprism:
image: photoprism/photoprism-arm64:latest
container_name: photoprism
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
- 127.0.0.1:2342:2342
environment:
PHOTOPRISM_ADMIN_PASSWORD: "password" # PLEASE CHANGE: Your initial admin password (min 4 characters)
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_WORKERS: 2 # Limits the number of indexing workers to reduce system load
PHOTOPRISM_DEBUG: "false" # Run in debug mode (shows additional log messages)
PHOTOPRISM_PUBLIC: "false" # No authentication required (disables password protection)
PHOTOPRISM_READONLY: "false" # Don't modify originals directory (reduced functionality)
PHOTOPRISM_EXPERIMENTAL: "true" # Enables experimental features
PHOTOPRISM_DISABLE_WEBDAV: "false" # Disables built-in WebDAV server
PHOTOPRISM_DISABLE_SETTINGS: "false" # Disables Settings in Web UI
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # Disables using TensorFlow for image classification
PHOTOPRISM_DARKTABLE_PRESETS: "true" # Enables Darktable presets and disables concurrent RAW conversion
PHOTOPRISM_DETECT_NSFW: "false" # Flag photos as private that MAY be offensive
PHOTOPRISM_UPLOAD_NSFW: "true" # Allow uploads that MAY be offensive
PHOTOPRISM_DATABASE_DRIVER: "mysql" # Use MariaDB (or MySQL) instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB database server (hostname:port)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB database schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB database user name
PHOTOPRISM_DATABASE_PASSWORD: "password" # MariaDB database user password
PHOTOPRISM_SITE_URL: "https://photoprism.233.fi/" # Public PhotoPrism URL
PHOTOPRISM_SITE_TITLE: "PhotoPrism"
PHOTOPRISM_SITE_CAPTION: "Browse Your Life"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: "imlala"
volumes:
- "~/Pictures:/photoprism/originals"
- "./storage:/photoprism/storage"
mariadb:
image: arm64v8/mariadb:10.5
container_name: mariadb
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
command: mysqld --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=50
volumes:
- "./database:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: photoprism
MYSQL_USER: photoprism
MYSQL_PASSWORD: password
有几个环境变量需要自行更改:
PHOTOPRISM_ADMIN_PASSWORD
PHOTOPRISM_DATABASE_PASSWORD
PHOTOPRISM_SITE_URL
MYSQL_ROOT_PASSWORD
MYSQL_PASSWORD
启动即可:
docker-compose up -d
配置反向代理,新建站点配置文件:
sudo nano /etc/nginx/conf.d/photoprism.conf
写入如下配置:
server {
listen 80;
server_name photoprism.233.fi;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:2342;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
申请ssl证书:
sudo certbot --nginx
以上是针对arm平台的部署过程,compose的文件来自:https://dl.photoprism.org/docker/arm64/docker-compose.yml。我自己根据官方的模板修改了一点配置。
如果是x86可以用这个模板:https://dl.photoprism.org/docker/docker-compose.yml
所有可用的环境变量:https://docs.photoprism.org/getting-started/config-options/
当有新版本需要更新的时候,可以手动更新:
docker-compose pull photoprism
docker-compose stop photoprism
docker-compose up -d photoprism
也可以利用watchtower来实现自动更新,将下面的配置加到compose文件内:
services:
watchtower:
image: containrrr/watchtower
restart: unless-stopped
environment:
WATCHTOWER_CLEANUP: "true"
WATCHTOWER_POLL_INTERVAL: 7200
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
预览: