c2baf2ae5a
Creates accounts to run PhotoPrism under a custom user ID. Also adds them to the video and render groups, which might help to access hardware transcoding devices.
128 lines
7.6 KiB
YAML
128 lines
7.6 KiB
YAML
version: '3.5'
|
|
|
|
# Example Docker Compose config file for PhotoPrism (macOS)
|
|
#
|
|
# 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/
|
|
#
|
|
# 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
|
|
|
|
services:
|
|
photoprism:
|
|
## Use photoprism/photoprism:preview for testing preview builds:
|
|
image: photoprism/photoprism:latest
|
|
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
|
|
security_opt:
|
|
- seccomp:unconfined
|
|
- apparmor:unconfined
|
|
ports:
|
|
- "2342:2342" # HTTP port (host:container)
|
|
environment:
|
|
PHOTOPRISM_ADMIN_PASSWORD: "insecure" # !!! CHANGE YOUR INITIAL "admin" PASSWORD, MINIMUM 8 CHARACTERS !!!
|
|
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_DEBUG: "false" # run in debug mode (shows additional log messages)
|
|
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 # 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: "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_TITLE: "PhotoPrism"
|
|
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
|
|
PHOTOPRISM_SITE_DESCRIPTION: ""
|
|
PHOTOPRISM_SITE_AUTHOR: ""
|
|
## Run/install on first startup (options: update, gpu, tensorflow, davfs, clitools, clean):
|
|
# PHOTOPRISM_INIT: "gpu tensorflow"
|
|
## 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 (photos and videos)
|
|
# - "/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 (never remove)
|
|
|
|
## Database Server (recommended)
|
|
## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
|
|
mariadb:
|
|
restart: unless-stopped
|
|
image: mariadb:10.7
|
|
security_opt:
|
|
- seccomp:unconfined
|
|
- apparmor:unconfined
|
|
## --lower-case-table-names=1 stores tables in lowercase and compares names in a case-insensitive manner
|
|
## see https://mariadb.com/kb/en/server-system-variables/#lower_case_table_names
|
|
command: mysqld --lower-case-table-names=1 --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
|
|
volumes:
|
|
- "database:/var/lib/mysql" # important, do not remove; named volume "database" is defined at the bottom
|
|
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
|
|
#
|
|
# 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
|
|
|
|
## Create named volumes, advanced users may remove this if they mount a regular host folder
|
|
## for the database or use SQLite instead (never remove otherwise)
|
|
volumes:
|
|
database:
|
|
driver: local
|