services:
  photoprism:
    image: photoprism/photoprism:240711-ce
    container_name: ${CONTAINER_NAME}
    restart: always
    networks:
      - 1panel-network
    ports:
      - ${PANEL_APP_PORT_HTTP}:2342
    volumes:
      - ./data/Pictures:/photoprism/originals                   # Original media files (DO NOT REMOVE)
      - ./data/storage:/photoprism/storage                      # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
    environment:
      PHOTOPRISM_ADMIN_USER: ${ADMIN_USER}                      # admin login username
      PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD}              # initial admin password (8-72 characters)
      PHOTOPRISM_AUTH_MODE: "password"                          # authentication mode (public, password)
      PHOTOPRISM_SITE_URL: ${PHOTOPRISM_EXTERNAL_URL}           # server URL in the format "http(s)://domain.name(:port)/(path)"
      PHOTOPRISM_DISABLE_TLS: "false"                           # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available
      PHOTOPRISM_DEFAULT_TLS: "true"                            # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available
      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_VECTORS: "false"                       # disables vector graphics support
      PHOTOPRISM_DISABLE_RAW: "false"                           # disables indexing and conversion of RAW images
      PHOTOPRISM_RAW_PRESETS: "false"                           # enables applying user presets when converting RAW images (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: "sqlite"                    # SQLite is an embedded database that doesn't require a server
      PHOTOPRISM_DATABASE_DRIVER: "mysql"                       # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
      PHOTOPRISM_DATABASE_SERVER: ${PANEL_DB_HOST}:3306         # MariaDB or MySQL database server (hostname:port)
      PHOTOPRISM_DATABASE_NAME: ${PANEL_DB_NAME}                # MariaDB or MySQL database schema name
      PHOTOPRISM_DATABASE_USER: ${PANEL_DB_USER}                # MariaDB or MySQL database user name
      PHOTOPRISM_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD}   # MariaDB or MySQL database user password
      PHOTOPRISM_SITE_CAPTION: ${SITE_CAPTION}
      PHOTOPRISM_SITE_DESCRIPTION: ${SITE_DESCRIPTION}          # meta site description
      PHOTOPRISM_SITE_AUTHOR: ${SITE_AUTHOR}                    # meta site author
      ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/):
      # PHOTOPRISM_FFMPEG_ENCODER: "software"                     # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi)
      # PHOTOPRISM_FFMPEG_SIZE: "1920"                            # video size limit in pixels (720-7680) (default: 3840)
      # PHOTOPRISM_FFMPEG_BITRATE: "32"                           # video bitrate limit in Mbit/s (default: 50)
      ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean):
      # PHOTOPRISM_INIT: "https gpu tensorflow"
      ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
      PHOTOPRISM_UID: ${UID:-1000}
      PHOTOPRISM_GID: ${GID:-1000}
      # PHOTOPRISM_UMASK: 0000
    ## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
    # user: "1000:1000"
    ## Share hardware devices with FFmpeg and TensorFlow (optional):
    # devices:
    #  - "/dev/dri:/dev/dri"                                      # Intel QSV
    #  - "/dev/nvidia0:/dev/nvidia0"                              # Nvidia CUDA
    #  - "/dev/nvidiactl:/dev/nvidiactl"
    #  - "/dev/nvidia-modeset:/dev/nvidia-modeset"
    #  - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl"
    #  - "/dev/nvidia-uvm:/dev/nvidia-uvm"
    #  - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools"
    #  - "/dev/video11:/dev/video11"                              # Video4Linux Video Encode Device (h264_v4l2m2m)
    working_dir: "/photoprism"                                  # do not change or remove
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    labels:  
      createdBy: "Apps"
networks:  
  1panel-network:  
    external: true