diff --git a/prism/database/.gitignore b/prism/database/.gitignore new file mode 100644 index 0000000..1e04ba0 --- /dev/null +++ b/prism/database/.gitignore @@ -0,0 +1,8 @@ +# .gitignore sample +################### + +# Ignore all files in this dir... +* + +# ... except for this one. +!.gitignore diff --git a/prism/docker-compose b/prism/docker-compose new file mode 100644 index 0000000..6e7d018 --- /dev/null +++ b/prism/docker-compose @@ -0,0 +1,145 @@ +version: '3.5' + +# Example Docker Compose config file for PhotoPrism (Raspberry Pi 3/4 and other ARM64-based devices) +# +# Note: +# - You have to boot your Raspberry Pi 3/4 with the parameter "arm_64bit=1" in config.txt to use our ARM64 (64-bit) image. +# An "exec format" error will occur otherwise. +# - Try explicitly pulling the ARM64 version if you've booted your device with the "arm_64bit=1" flag and you see +# the "no matching manifest" error on Raspberry Pi OS (Raspbian). See documentation for details. +# - Use https://dl.photoprism.app/docker/armv7/docker-compose.yml to run PhotoPrism and MariaDB on ARMv7-based devices +# as well as Raspberry Pi OS (Raspbian) installations without 64-bit support. +# - Running PhotoPrism on a server with less than 4 GB of swap space or setting a memory/swap limit can cause unexpected +# restarts ("crashes"), for example, when the indexer temporarily needs more memory to process large files. +# - In case you see Docker errors related to "cgroups", try adding the following parameters to /boot/firmware/cmdline.txt +# or /boot/cmdline.txt (file location depends on the OS in use): cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 +# - If you install PhotoPrism on a public server outside your home network, please always run it behind a secure +# HTTPS reverse proxy such as Traefik or Caddy. Your files and passwords will otherwise be transmitted +# in clear text and can be intercepted by anyone, including your provider, hackers, and governments: +# https://docs.photoprism.app/getting-started/proxies/traefik/ +# +# Documentation : https://docs.photoprism.app/getting-started/raspberry-pi/ +# Docker Hub URL: https://hub.docker.com/r/photoprism/photoprism/ +# +# 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 +# +# To search originals for faces without a complete rescan: +# docker-compose exec photoprism photoprism faces index +# +# All commands may have to be prefixed with "sudo" when not running as root. +# This will point the home directory shortcut ~ to /root in volume mounts. + +services: + photoprism: + ## Use photoprism/photoprism:preview-arm64 for testing preview builds: + image: photoprism/photoprism:arm64 + depends_on: + - mariadb + ## Don't enable automatic restarts until PhotoPrism has been properly configured and tested! + ## If the service gets stuck in a restart loop, this points to a memory, filesystem, network, or database issue: + ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors + # restart: unless-stopped + security_opt: + - seccomp:unconfined + - apparmor:unconfined + ports: + - "2342:2342" # HTTP port (host:container) + environment: + PHOTOPRISM_ADMIN_PASSWORD: "insecure" # !!! PLEASE CHANGE YOUR INITIAL "admin" PASSWORD !!! + PHOTOPRISM_SITE_URL: "http://localhost:2342/" # 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: "none" # improves transfer speed and bandwidth utilization (none or gzip) + PHOTOPRISM_WORKERS: 2 # limits the number of indexing workers to reduce system load + PHOTOPRISM_DEBUG: "false" # run in debug mode (shows additional log messages) + PHOTOPRISM_PUBLIC: "false" # no authentication required (disables password protection) + PHOTOPRISM_READONLY: "false" # don't modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features + PHOTOPRISM_DISABLE_CHOWN: "false" # disables storage permission updates on startup + PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server + PHOTOPRISM_DISABLE_SETTINGS: "false" # disables Settings in Web UI + PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow + PHOTOPRISM_DISABLE_FACES: "false" # disables facial recognition + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification + PHOTOPRISM_DARKTABLE_PRESETS: "true" # enables Darktable presets and disables concurrent RAW conversion + # PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # FFmpeg AVC encoder for video transcoding (default: libx264) + # PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32) + PHOTOPRISM_DETECT_NSFW: "false" # flag photos as private that MAY be offensive + PHOTOPRISM_UPLOAD_NSFW: "true" # allow uploads that MAY be offensive + # 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: "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: "insecure" # MariaDB or MySQL database user password + PHOTOPRISM_SITE_TITLE: "PhotoPrism" + PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" + PHOTOPRISM_SITE_DESCRIPTION: "" + PHOTOPRISM_SITE_AUTHOR: "" + ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean): + # PHOTOPRISM_INIT: "update clean" + ## Run as a specific user, group, or with a custom umask (does not work together with "user:") + # PHOTOPRISM_UID: 1000 + # PHOTOPRISM_GID: 1000 + # PHOTOPRISM_UMASK: 0000 + HOME: "/photoprism" + ## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user) + # user: "1000:1000" + ## Share hardware devices with FFmpeg and TensorFlow (optional): + # devices: + # - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m) + working_dir: "/photoprism" + ## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory + volumes: + # "/host/folder:/photoprism/folder" # example + - "./pictures:/photoprism/originals" # original media files (photos and videos) + # - "/example/family:/photoprism/originals/family" # *additional* media folders can be mounted like this + # - "~/Import:/photoprism/import" # *optional* base folder from which files can be imported to originals + - "./storage:/photoprism/storage" # *writable* storage folder for cache, database, and sidecar files (never remove) + + ## Database Server (recommended) + ## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql + mariadb: + ## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue: + ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors + restart: unless-stopped + image: arm64v8/mariadb:10.6 # this mariadb image runs on ARM64-based devices only + security_opt: + - seccomp:unconfined + - apparmor:unconfined + command: mysqld --innodb-buffer-pool-size=128M --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 + ## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder: + volumes: + - "./database:/var/lib/mysql" # important, don't remove + environment: + MYSQL_ROOT_PASSWORD: insecure + MYSQL_DATABASE: photoprism + MYSQL_USER: photoprism + MYSQL_PASSWORD: insecure + + ## Watchtower upgrades services automatically (optional) + ## see https://docs.photoprism.app/getting-started/updates/#watchtower + # + # watchtower: + # restart: unless-stopped + # image: containrrr/watchtower + # 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 diff --git a/prism/pictures/.gitignore b/prism/pictures/.gitignore new file mode 100644 index 0000000..1e04ba0 --- /dev/null +++ b/prism/pictures/.gitignore @@ -0,0 +1,8 @@ +# .gitignore sample +################### + +# Ignore all files in this dir... +* + +# ... except for this one. +!.gitignore diff --git a/prism/storage/.gitignore b/prism/storage/.gitignore new file mode 100644 index 0000000..1e04ba0 --- /dev/null +++ b/prism/storage/.gitignore @@ -0,0 +1,8 @@ +# .gitignore sample +################### + +# Ignore all files in this dir... +* + +# ... except for this one. +!.gitignore