version: '3.5' services: photoprism: image: photoprism/photoprism:latest depends_on: - mariadb restart: unless-stopped security_opt: - seccomp:unconfined - apparmor:unconfined #ports: # - "2342:2342" # HTTP port (host:container) labels: caddy: ${SERVER_DOMAIN} caddy.reverse_proxy: "{{upstreams http 2342}}" #caddy.@denied.not.remote_ip: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 127.0.0.1/8" #caddy.reverse_proxy: "@denied {{upstreams 2342}}" caddy.tls: "internal" networks: - caddy - photoprism environment: PHOTOPRISM_ADMIN_USER: "admin" # superadmin username PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PW} # initial superadmin password (minimum 8 characters) PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) PHOTOPRISM_SITE_URL: ${SERVER_URL} # server URL in the format "http(s)://domain.name(:port)/(path)" 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_READONLY: "false" # do not modify originals directory (reduced functionality) PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown 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 face detection and recognition (requires TensorFlow) PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) 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 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) 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: ${MYSQL_PW} # MariaDB or MySQL database user password PHOTOPRISM_SITE_CAPTION: "Henriks Fotos" PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description PHOTOPRISM_SITE_AUTHOR: "Henrik Mertens" # meta site author ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): # PHOTOPRISM_INIT: "tensorflow" working_dir: "/photoprism" # do not change or remove volumes: - /mnt/helmut/homes/henrik/Fotos:/photoprism/originals/Fotos - /mnt/helmut/homes/henrik/photoprism/originals:/photoprism/originals # Original media files (DO NOT REMOVE) - /mnt/helmut/homes/henrik/photoprism/import:/photoprism/import - "./data/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) mariadb: restart: unless-stopped image: mariadb:10.10 security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239 - seccomp:unconfined - apparmor:unconfined command: mysqld --innodb-buffer-pool-size=512M --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: - "./data/mysql:/var/lib/mysql" # DO NOT REMOVE networks: - photoprism environment: MARIADB_AUTO_UPGRADE: "1" MARIADB_INITDB_SKIP_TZINFO: "1" MARIADB_DATABASE: "photoprism" MARIADB_USER: "photoprism" MARIADB_PASSWORD: ${MYSQL_PW} MARIADB_ROOT_PASSWORD: ${MYSQL_PW} ## Watchtower upgrades services automatically (optional) ## see https://docs.photoprism.app/getting-started/updates/#watchtower ## activate via "COMPOSE_PROFILES=update docker compose up -d" #watchtower: # restart: unless-stopped # image: containrrr/watchtower # profiles: ["update"] # 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 networks: photoprism: internal: true caddy: external: true