99 lines
5.5 KiB
YAML
99 lines
5.5 KiB
YAML
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 |