Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
PhotoPrism
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Ansible
Roles
PhotoPrism
Commits
1cd4fa1d
Commit
1cd4fa1d
authored
2 years ago
by
jurgenhaas
Browse files
Options
Downloads
Patches
Plain Diff
Update docker-compose and introduce ofelia for scheduled tasks
parent
24b83b69
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
tasks/photoprism.yml
+4
-3
4 additions, 3 deletions
tasks/photoprism.yml
templates/docker-compose.yml
+139
-57
139 additions, 57 deletions
templates/docker-compose.yml
templates/jobs.ini
+38
-0
38 additions, 0 deletions
templates/jobs.ini
with
181 additions
and
60 deletions
tasks/photoprism.yml
+
4
−
3
View file @
1cd4fa1d
...
...
@@ -6,12 +6,13 @@
path
:
'
{{
photoprism_base_dir
}}'
state
:
directory
-
name
:
Copy
Docker Compose
File
-
name
:
Copy File
s
template
:
src
:
docker-compose.yml
dest
:
'
{{
photoprism_base_dir
}}/
docker-compose.yml
'
src
:
'
{{
item
}}'
dest
:
'
{{
photoprism_base_dir
}}/
{{
item
}}
'
with_items
:
-
docker-compose.yml
-
jobs.ini
notify
:
-
Re-create the photoprism containers
...
...
This diff is collapsed.
Click to expand it.
templates/docker-compose.yml
+
139
−
57
View file @
1cd4fa1d
version
:
'
3.5'
#
Example Docker Compose config file for P
hoto
P
rism
(Intel / AMD64)
#
Source: https://dl.p
hoto
p
rism
.app/docker/
#
# Documentation : https://docs.photoprism.org/getting-started/docker-compose/
#
# Example Docker Compose config file for PhotoPrism (Linux / AMD64)
# Includes Ophelia, a docker job scheduler: https://github.com/mcuadros/ofelia
#
# Note:
# - Running PhotoPrism on a server with less than 4 GB of swap space or setting a memory/swap limit can cause unexpected
# restarts ("crashes"), for example, when the indexer temporarily needs more memory to process large files.
# - If you install PhotoPrism on a public server outside your home network, please always run it behind a secure
# HTTPS reverse proxy such as Traefik or Caddy. Your files and passwords will otherwise be transmitted
# in clear text and can be intercepted by anyone, including your provider, hackers, and governments:
# https://docs.photoprism.app/getting-started/proxies/traefik/
#
# Documentation : https://docs.photoprism.app/getting-started/docker-compose/
# Docker Hub URL: https://hub.docker.com/r/photoprism/photoprism/
#
# Please run behind a reverse proxy like Caddy, Traefik or Nginx if you need HTTPS / SSL support
# e.g. when running PhotoPrism on a public server outside your home network.
# DOCKER COMPOSE COMMAND REFERENCE
# see https://docs.photoprism.app/getting-started/docker-compose/#command-line-interface
# --------------------------------------------------------------------------
# Start | docker-compose up -d
# Stop | docker-compose stop
# Update | docker-compose pull
# Logs | docker-compose logs --tail=25 -f
# Terminal | docker-compose exec photoprism bash
# Help | docker-compose exec photoprism photoprism help
# Config | docker-compose exec photoprism photoprism config
# Reset | docker-compose exec photoprism photoprism reset
# Backup | docker-compose exec photoprism photoprism backup -a -i
# Restore | docker-compose exec photoprism photoprism restore -a -i
# Index | docker-compose exec photoprism photoprism index
# Reindex | docker-compose exec photoprism photoprism index -f
# Import | docker-compose exec photoprism photoprism import
#
# To search originals for faces without a complete rescan:
# docker-compose exec photoprism photoprism faces index
#
# Usage: docker-compose up
# All commands may have to be prefixed with "sudo" when not running as root.
# This will point the home directory shortcut ~ to /root in volume mounts.
services
:
photoprism
:
# Use photoprism/photoprism:preview for testing preview builds:
image
:
photoprism/photoprism:latest
container_name
:
photoprism
depends_on
:
-
mariadb
## Don't enable automatic restarts until PhotoPrism has been properly configured and tested!
## If the service gets stuck in a restart loop, this points to a memory, filesystem, network, or database issue:
## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
restart
:
unless-stopped
# Uncomment and edit the following line to set a specific user / group id:
# user: "1000:1000"
security_opt
:
-
seccomp:unconfined
-
apparmor:unconfined
ports
:
-
2342:2342
# [local port]:[container port]
# Uncomment the following lines to enable regular health checks (causes automatic restarts):
# healthcheck:
# test: ["CMD", "photoprism", "status"]
# interval: 60s
# timeout: 15s
# retries: 5
#
# Run "photoprism help" and "photoprism config" too see all config options and current values:
environment
:
# Run "photoprism help" and "photoprism config" too see all config options and current values
PHOTOPRISM_ADMIN_PASSWORD
:
"
{{
photoprism_admin_password
}}"
# Initial admin password: PLEASE CHANGE!
PHOTOPRISM_DEBUG
:
"
false"
# Run in debug mode (shows additional log messages)
PHOTOPRISM_PUBLIC
:
"
false"
# No authentication required (disables password protection)
PHOTOPRISM_READONLY
:
"
true"
# Don't modify originals directory (reduced functionality)
PHOTOPRISM_UPLOAD_NSFW
:
"
true"
# Allow uploads that MAY be offensive
PHOTOPRISM_DETECT_NSFW
:
"
false"
# Flag photos as private that MAY be offensive
PHOTOPRISM_EXPERIMENTAL
:
"
false"
# Enable experimental features
PHOTOPRISM_SITE_URL
:
"
{{
photoprism_site_url
}}"
# Canonical / public site URL
PHOTOPRISM_SITE_TITLE
:
"
{{
photoprism_site_title
}}"
-
"
2342:2342"
# HTTP port (host:container)
environment
:
PHOTOPRISM_ADMIN_PASSWORD
:
"
{{
photoprism_admin_password
}}"
# Initial admin password: PLEASE CHANGE!
PHOTOPRISM_SITE_URL
:
"
{{
photoprism_site_url
}}"
# 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
:
"
true"
# 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
:
"
true"
# 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
# image quality, a higher value reduces compression (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"
# MariaDB or MySQL database user password
PHOTOPRISM_SITE_CAPTION
:
"
Browse
Your
Life"
PHOTOPRISM_SITE_DESCRIPTION
:
"
"
PHOTOPRISM_SITE_AUTHOR
:
"
"
PHOTOPRISM_HTTP_HOST
:
"
0.0.0.0"
PHOTOPRISM_HTTP_PORT
:
2342
PHOTOPRISM_SETTINGS_HIDDEN
:
"
false"
# Users can not view or change settings
# PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server
PHOTOPRISM_DATABASE_DRIVER
:
"
mysql"
# Use MariaDB (or MySQL) instead of SQLite for improved performance
PHOTOPRISM_DATABASE_DSN
:
"
photoprism:insecure@tcp(mariadb:3306)/photoprism?charset=utf8mb4,utf8&parseTime=true"
PHOTOPRISM_SIDECAR_JSON
:
"
true"
# Automatically create JSON sidecar files using Exiftool
PHOTOPRISM_SIDECAR_YAML
:
"
true"
# Automatically backup metadata to YAML sidecar files
PHOTOPRISM_THUMB_FILTER
:
"
lanczos"
# Resample filter, best to worst: blackman, lanczos, cubic, linear
PHOTOPRISM_THUMB_UNCACHED
:
"
false"
# Enable on-demand thumbnail rendering (high memory and cpu usage)
PHOTOPRISM_THUMB_SIZE
:
2048
# Pre-rendered thumbnail size limit (default 2048, min 720, max 7680)
# PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD
PHOTOPRISM_THUMB_SIZE_UNCACHED
:
7680
# On-demand rendering size limit (default 7680, min 720, max 7680)
PHOTOPRISM_JPEG_SIZE
:
7680
# Size limit for converted image files in pixels (720-30000)
PHOTOPRISM_JPEG_QUALITY
:
92
# Set to 95 for high-quality thumbnails (25-100)
PHOTOPRISM_DARKTABLE_PRESETS
:
"
false"
# Use darktable presets (disables concurrent raw to jpeg conversion)
# You may optionally set user, group and/or file permissions using environment variables:
# UID: 1000
# GID: 1000
# UMASK: 0000
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"
## Switch to a non-root user after initialization (supported IDs are 33, 50-99, 500-600, and 900-1200):
# PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000
# PHOTOPRISM_UMASK: 0000
#
# The following settings have been detected in older installations, not sure if we still need them.
#PHOTOPRISM_DARKTABLE_PRESETS: "false" # Use darktable presets (disables concurrent raw to jpeg conversion)
#PHOTOPRISM_DATABASE_DSN: "photoprism:insecure@tcp(mariadb:3306)/photoprism?charset=utf8mb4,utf8&parseTime=true"
#PHOTOPRISM_DEBUG: "false" # Run in debug mode (shows additional log messages)
#PHOTOPRISM_HTTP_HOST: "0.0.0.0"
#PHOTOPRISM_HTTP_PORT: 2342
#PHOTOPRISM_JPEG_SIZE: 7680 # Size limit for converted image files in pixels (720-30000)
#PHOTOPRISM_SETTINGS_HIDDEN: "false" # Users can not view or change settings
#PHOTOPRISM_SIDECAR_JSON: "true" # Automatically create JSON sidecar files using Exiftool
#PHOTOPRISM_SIDECAR_YAML: "true" # Automatically backup metadata to YAML sidecar files
#PHOTOPRISM_SITE_TITLE: "{{ photoprism_site_title }}"
#PHOTOPRISM_THUMB_FILTER: "lanczos" # Resample filter, best to worst: blackman, lanczos, cubic, linear
#PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # On-demand rendering size limit (default 7680, min 720, max 7680)
#PHOTOPRISM_THUMB_SIZE: 2048 # Pre-rendered thumbnail size limit (default 2048, min 720, max 7680)
#PHOTOPRISM_THUMB_UNCACHED: "false" # Enable on-demand thumbnail rendering (high memory and cpu usage)
working_dir
:
"
/photoprism"
# do not change or remove
## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
volumes
:
# "/host/folder:/photoprism/folder" # Example
#- "~/Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE)
# - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this
# - "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals
#- "./storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
-
"
{{
photoprism_base_dir
}}/storage:/photoprism/storage"
{
%
for volume in photoprism_volumes %
}
-
"
{{
volume
}}"
{
%
endfor %
}
#
Uncomment the following lines to use MariaDB instead of SQLite for improved performance & scalability:
#
#
# Database Server (recommended)
#
# see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
mariadb
:
image
:
mariadb:10.5
restart
:
unless-stopped
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
image
:
mariadb:10.7
container_name
:
mariadb
security_opt
:
-
seccomp:unconfined
-
apparmor:unconfined
command
:
mysqld --innodb-buffer-pool-size=128M --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
:
-
"
/var/lib/mysql"
-
"
./database:
/var/lib/mysql"
# DO NOT REMOVE
environment
:
MYSQL_ROOT_PASSWORD
:
please-change
MYSQL_USER
:
photoprism
MYSQL_PASSWORD
:
insecure
MYSQL_DATABASE
:
photoprism
MARIADB_AUTO_UPGRADE
:
"
1"
MARIADB_INITDB_SKIP_TZINFO
:
"
1"
MARIADB_DATABASE
:
"
photoprism"
MARIADB_USER
:
"
photoprism"
MARIADB_PASSWORD
:
"
insecure"
MARIADB_ROOT_PASSWORD
:
"
please-change"
## Ofelia Job Runner (recommended for running background jobs)
## see https://github.com/mcuadros/ofelia
ofelia
:
restart
:
unless-stopped
image
:
mcuadros/ofelia:latest
container_name
:
ofelia
volumes
:
-
"
/var/run/docker.sock:/var/run/docker.sock:ro"
-
"
./jobs.ini:/etc/ofelia/config.ini"
## Watchtower upgrades services automatically (optional)
## see https://docs.photoprism.app/getting-started/updates/#watchtower
#
# watchtower:
# restart: unless-stopped
# image: containrrr/watchtower
# 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
This diff is collapsed.
Click to expand it.
templates/jobs.ini
0 → 100644
+
38
−
0
View file @
1cd4fa1d
# See https://github.com/mcuadros/ofelia/blob/master/docs/jobs.md for job settings!
#
# Cron expressions in "schedule" represent times using 6 space-separated fields:
#
# Field name | Mandatory? | Allowed values | Allowed special characters
# ---------- | ---------- | -------------- | --------------------------
# Seconds | Yes | 0-59 | * / , -
# Minutes | Yes | 0-59 | * / , -
# Hours | Yes | 0-23 | * / , -
# Day of month | Yes | 1-31 | * / , - ?
# Month | Yes | 1-12 or JAN-DEC | * / , -
# Day of week | Yes | 0-6 or SUN-SAT | * / , - ?
[job-exec "photoprism index"]
schedule
=
0 10,40 * * * *
container
=
photoprism
command
=
photoprism index
no-overlap
=
true
# Uncomment to automatically import every 2 hours:
#
# [job-exec "photoprism import"]
# schedule = @every 2h
# container = photoprism
# command = photoprism import
# no-overlap = true
[job-exec "photoprism convert"]
schedule
=
@daily
container
=
photoprism
command
=
photoprism convert
no-overlap
=
true
[job-exec "photoprism backup"]
schedule
=
@daily
container
=
photoprism
command
=
photoprism backup -a -i -f /photoprism/storage/index-backup.sql
no-overlap
=
true
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment