version: '3.5' # 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 services: photoprism: image: photoprism/photoprism:latest container_name: Photoprism_App depends_on: - mariadb restart: unless-stopped security_opt: - seccomp:unconfined - apparmor:unconfined ports: - "2342:2342" environment: PHOTOPRISM_ADMIN_PASSWORD: "${ADMIN_PASSWORD}" # INITIAL PASSWORD FOR "admin" USER, MINIMUM 8 CHARACTERS PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) PHOTOPRISM_SITE_URL: "https://photo.borgal.de" # public server URL incl http:// or https:// and /path, :port is optional PHOTOPRISM_AUTO_INDEX: 60 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: "yes" # 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: "${DATABASE_PASSWORD}" # MariaDB or MySQL database user password PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description PHOTOPRISM_SITE_AUTHOR: "Borgal" # meta site author working_dir: "/photoprism" # do not change or remove ## Run/install on first startup (options: update gpu tensorflow davfs clitools clean): # PHOTOPRISM_INIT: "gpu tensorflow" ## Hardware Video Transcoding (for sponsors only due to high maintenance and support costs): # PHOTOPRISM_FFMPEG_ENCODER: "software" # FFmpeg encoder ("software", "intel", "nvidia", "apple", "raspberry") # PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50) ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): PHOTOPRISM_UID: 1000 PHOTOPRISM_GID: 1001 PHOTOPRISM_UMASK: 0002 user: "1000:1001" volumes: - "./storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) - "storage:/photoprism/storage/cache/thumbnails" # Original media files (DO NOT REMOVE) - "Photos:/photoprism/originals" # *Additional* media folders can be mounted like this #- "./Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE) #- "Photos:/photoprism/originals/Digicam-Bilder" # *Additional* media folders can be mounted like this #- "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals ## Database Server (recommended) mariadb: restart: unless-stopped image: mariadb:10.9 container_name: Photoprism_DB security_opt: - 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: - "./database:/var/lib/mysql" environment: MARIADB_AUTO_UPGRADE: "1" MARIADB_INITDB_SKIP_TZINFO: "1" MARIADB_DATABASE: "photoprism" MARIADB_USER: "photoprism" MARIADB_PASSWORD: "${DATABASE_PASSWORD}" MARIADB_ROOT_PASSWORD: "${ROOT_PASSWORD}" volumes: Photos: name: Photos driver: local driver_opts: type: nfs o: addr=${NFS_SERVER},rw device: ":${Photos}" storage: name: storage driver: local driver_opts: type: nfs o: addr=${NFS_SERVER},rw device: ":${cache}"