diff --git a/data/database/README.md b/data/database/README.md new file mode 100644 index 0000000..ca187af --- /dev/null +++ b/data/database/README.md @@ -0,0 +1,2 @@ +# photoprism + diff --git a/data/import/README.md b/data/import/README.md new file mode 100644 index 0000000..ca187af --- /dev/null +++ b/data/import/README.md @@ -0,0 +1,2 @@ +# photoprism + diff --git a/data/originals/README.md b/data/originals/README.md new file mode 100644 index 0000000..ca187af --- /dev/null +++ b/data/originals/README.md @@ -0,0 +1,2 @@ +# photoprism + diff --git a/data/storage/README.md b/data/storage/README.md new file mode 100644 index 0000000..ca187af --- /dev/null +++ b/data/storage/README.md @@ -0,0 +1,2 @@ +# photoprism + diff --git a/docker-compose.photprism.yml b/docker-compose.photprism.yml new file mode 100644 index 0000000..c76ab72 --- /dev/null +++ b/docker-compose.photprism.yml @@ -0,0 +1,134 @@ +version: '3.5' + +# Example Docker Compose config file for PhotoPrism (Linux / AMD64) +# +# Documentation : https://docs.photoprism.org/getting-started/docker-compose/ +# Docker Hub URL: https://hub.docker.com/r/photoprism/photoprism/ +# +# Please run behind a reverse proxy like Caddy, Traefik or Nginx if you need HTTPS / SSL support +# e.g. when running PhotoPrism on a public server outside your home network. +# +# ------------------------------------------------------------------ +# DOCKER COMPOSE COMMAND REFERENCE +# ------------------------------------------------------------------ +# 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 +# ------------------------------------------------------------------- +# Note: All commands may have to be prefixed with "sudo" when not running as root. +# This will change the home directory "~" to "/root" in your configuration. + +services: + photoprism: + # Use photoprism/photoprism:preview instead for testing preview builds: + image: photoprism/photoprism:latest + depends_on: + - mariadb + # Only enable automatic restarts once your installation is properly + # configured as it otherwise may get stuck in a restart loop: + # https://docs.photoprism.org/getting-started/faq/#why-is-photoprism-getting-stuck-in-a-restart-loop + restart: unless-stopped + security_opt: + - seccomp:unconfined + - apparmor:unconfined + # Run as a specific, non-root user (see https://docs.docker.com/engine/reference/run/#user): + user: "1000:1000" + ports: + - "2342:2342" # [server]:[container] + environment: + PHOTOPRISM_ADMIN_PASSWORD: "g@G4#9Bck8rBD@" # PLEASE CHANGE: Your initial admin password (min 4 characters) + 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_DEBUG: "true" # 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: "false" # Enables Darktable presets and disables concurrent RAW conversion + PHOTOPRISM_DETECT_NSFW: "true" # Flag photos as private that MAY be offensive (requires TensorFlow) + 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 (or MySQL) instead of SQLite for improved performance + PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB database server (hostname:port) + PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB database schema name + PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB database user name + PHOTOPRISM_DATABASE_PASSWORD: "zS&v5bATz2*NCS" # MariaDB database user password + PHOTOPRISM_SITE_URL: "http://localhost:2342/" # Public PhotoPrism URL + PHOTOPRISM_SITE_TITLE: "PhotoPrism" + PHOTOPRISM_SITE_CAPTION: "Browse Our Life" + PHOTOPRISM_SITE_DESCRIPTION: "" + PHOTOPRISM_SITE_AUTHOR: "Czechman Ltd." + # Set a non-root user, group, or custom umask if your Docker environment doesn't support this natively: + PHOTOPRISM_UID: 1000 + PHOTOPRISM_GID: 1000 + PHOTOPRISM_UMASK: 0000 + # Enable TensorFlow AVX2 support for modern Intel CPUs (requires starting the container as root): + # PHOTOPRISM_INIT: "tensorflow-amd64-avx2" + # Hardware video transcoding options: + # PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32) + # PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50) + # PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # Use Video4Linux for AVC transcoding (default: libx264) + # PHOTOPRISM_FFMPEG_ENCODER: "h264_qsv" # Use Intel Quick Sync Video for AVC transcoding (default: libx264) + # PHOTOPRISM_INIT: "intel-graphics tensorflow-amd64-avx2" # Enable TensorFlow AVX2 & Intel Graphics support + HOME: "/photoprism" + # Optional hardware devices for video transcoding and machine learning: + devices: + # - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m) + - "/dev/dri/renderD128:/dev/dri/renderD128" # Intel GPU + # - "/dev/dri/card0:/dev/dri/card0" + working_dir: "/photoprism" + volumes: + # The *originals* folder contains your original photo and video files (- "[host folder]:/photoprism/originals"): + - "/docker/photoprism/data/originals:/photoprism/originals" + # Multiple folders can be made accessible by mounting them as subfolders of /photoprism/originals: + # - "/mnt/Family:/photoprism/originals/Family" # [folder 1]:/photoprism/originals/[folder 1] + # - "/mnt/Friends:/photoprism/originals/Friends" # [folder 2]:/photoprism/originals/[folder 2] + # You may mount an *import* folder from which files can be transferred to *originals* (optional): + - "/docker/photoprism/data/import:/photoprism/import" + # Cache, session, thumbnail, and sidecar files will be created in the *storage* folder (never remove): + - "/docker/photoprism/data/storage:/photoprism/storage" + + mariadb: + restart: unless-stopped + image: mariadb:10.5 + security_opt: + - seccomp:unconfined + - apparmor:unconfined + command: mysqld --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: + - "/docker/photoprism/data/database:/var/lib/mysql" # Never remove + environment: + MYSQL_ROOT_PASSWORD: GbQ3$w2Zn#jLxu + MYSQL_DATABASE: photoprism + MYSQL_USER: photoprism + MYSQL_PASSWORD: zS&v5bATz2*NCS + +# Uncomment the following lines to upgrade automatically, whenever there is a new Docker image available: +# +# 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