version: '3.5' # Example Docker Compose config file for PhotoPrism (Intel / AMD64) # # Documentation : https://docs.photoprism.org/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. # # Usage: docker-compose up services: photoprism: image: photoprism/photoprism:latest container_name: photoprism restart: unless-stopped security_opt: - seccomp:unconfined - apparmor:unconfined ports: - 2342:2342 # [local port]:[container port] healthcheck: # Optional test: "photoprism status" interval: 60s timeout: 15s retries: 5 environment: # Run "photoprism help" and "photoprism config" too see all config options and current values PHOTOPRISM_DEBUG: "false" # Run in debug mode (shows additional log messages) PHOTOPRISM_PUBLIC: "true" # 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: "true" # Flag photos as private that MAY be offensive PHOTOPRISM_EXPERIMENTAL: "true" # Enable experimental features PHOTOPRISM_SITE_URL: "http://localhost:2342/" # Canonical / public site URL PHOTOPRISM_SITE_TITLE: "PhotoPrism" 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_ADMIN_PASSWORD: "photoprism" # Initial admin password (can be changed in settings) PHOTOPRISM_DATABASE_DRIVER: "sqlite" # Change to "mysql" for external MySQL or MariaDB PHOTOPRISM_DATABASE_DRIVER: "mysql" # Using MariaDB or MySQL instead of SQLite is optional PHOTOPRISM_DATABASE_DSN: "user:passwd@tcp(photoprism-db:3306)/photoprism?charset=utf8mb4,utf8&parseTime=true" PHOTOPRISM_SIDECAR_JSON: "true" # Read metadata from JSON sidecar files created by exiftool PHOTOPRISM_SIDECAR_YAML: "true" # Backup photo 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: 80 # Set to 95 for high-quality thumbnails (25-100) PHOTOPRISM_DARKTABLE_PRESETS: "false" # Use darktable presets (disables concurrent raw to jpeg conversion) volumes: - "./takeout:/photoprism/originals/takeout" # [local path]:[container path] - "/dockermount/syncthing/sync/S21Camera:/photoprism/originals/S21Camera" - "/dockermount/syncthing/sync/photos:/photoprism/originals/photos" - "/dockermount/syncthing/sync/Oppo F11 Pro:/photoprism/originals/Oppo F11 Pro" # Multiple folders can be indexed by mounting them as subfolders of /photoprism/originals: # - "~/Family:/photoprism/originals/Family" # [folder_1]:/photoprism/originals/[folder_1] # - "~/Friends:/photoprism/originals/Friends" # [folder_2]:/photoprism/originals/[folder_2] #- "~/PhotoPrism/Storage:/photoprism/storage" # Settings, index, sidecar files, and generated thumbnails - "./Import:/photoprism/import" # Mounting the import folder is optional (see docs) - "./Cache:/photoprism/storage/cache" # Uncomment the following lines to use MariaDB instead of SQLite for improved performance & scalability: # photoprism-db: image: mariadb:10.5 # Alternatively mysql:8.0 container_name: photoprism-db 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 volumes: - "./mariadb:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: photoprism MYSQL_USER: user MYSQL_PASSWORD: passwd MYSQL_DATABASE: photoprism # Uncomment the following lines to upgrade automatically whenever there are new images available: # # watchtower: # image: containrrr/watchtower # restart: unless-stopped # volumes: # - "/var/run/docker.sock:/var/run/docker.sock"