saltyorg / Sandbox

Saltbox Sandbox
GNU General Public License v3.0
69 stars 94 forks source link

App Request: Photoprism #123

Closed RaneyDazed closed 1 year ago

RaneyDazed commented 1 year ago

Photoprism

PhotoPrism® is an AI-Powered Photos App for the Decentralized Web. It makes use of the latest technologies to tag and find pictures automatically without getting in your way. You can run it at home, on a private server, or in the cloud.

Here is the Documentation

RaneyDazed commented 1 year ago

I got it working with this docker compose in saltbox,

version: '3.5'

services:
  photoprism:
    image: photoprism/photoprism:latest
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    environment:
      PHOTOPRISM_ADMIN_PASSWORD: "insecure"      # INITIAL PASSWORD FOR "admin" USER, MINIMUM 8 CHARACTERS
      PHOTOPRISM_AUTH_MODE: "password"               # authentication mode (public, password)
      PHOTOPRISM_SITE_URL: "https://photoprism.domain.com"  # public server URL incl http:// or https:// and /path, :port is optional
      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: "true"                 # 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: "photoprism12"   # MariaDB or MySQL database user password
      PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
      PHOTOPRISM_SITE_DESCRIPTION: ""                # meta site description
      PHOTOPRISM_SITE_AUTHOR: ""                     # meta site author
      PHOTOPRISM_INIT: "gpu tensorflow"
      PHOTOPRISM_UID: 1000
      PHOTOPRISM_GID: 1001
    devices:
      - "/dev/dri:/dev/dri"                         # Intel QSV
    working_dir: "/photoprism" # do not change or remove
    networks:
      - saltbox
    labels:
      traefik.enable: true
      traefik.http.routers.photoprism-http.entrypoints: web
      traefik.http.routers.photoprism-http.middlewares: globalHeaders@file,redirect-to-https,gzip
      traefik.http.routers.photoprism-http.rule: Host(`photoprism.domain.com`)
      traefik.http.routers.photoprism-http.service: photoprism
      traefik.http.routers.photoprism.entrypoints: websecure
      traefik.http.routers.photoprism.middlewares: globalHeaders@file,secureHeaders@file,authelia@docker
      traefik.http.routers.photoprism.rule: Host(`photoprism.domain.com`)
      traefik.http.routers.photoprism.service: photoprism
      traefik.http.routers.photoprism.tls.certresolver: cfdns
      traefik.http.routers.photoprism.tls.options: securetls@file
      traefik.http.services.photoprism.loadbalancer.server.port: 2342
    volumes:
      - "/opt/photoprism/:/photoprism/originals"               # Original media files (DO NOT REMOVE)
      - "/opt/photoprism/storage:/photoprism/storage"                  # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
      - /etc/localtime:/etc/localtime:ro
networks:
  saltbox:
    external: true

Sorry that's so large..

spoonys commented 1 year ago

+1 on this as well - top of my wishlist

maximuskowalski commented 1 year ago

Just a note to anyone looking at this, Raneydazed is currently working on a role.

owine commented 1 year ago

Completed by @RaneyDazed in #132