diff --git a/photoprism/.env.sample b/photoprism/.env.sample new file mode 100644 index 0000000..109ff13 --- /dev/null +++ b/photoprism/.env.sample @@ -0,0 +1,8 @@ +#MySQL Datenbank +ADMIN_PASSWORD=ChangeMe +DATABASE_PASSWORD=ChangeMe +ROOT_PASSWORD=ChangeMe + +NFS_SERVER=192.168.0.xxx +Photos=/mnt/Pfad/zu/den/Bildern +cache=/mnt/Pfad/zu/dem/cache diff --git a/photoprism/docker-compose.yml b/photoprism/docker-compose.yml new file mode 100644 index 0000000..3b47f2c --- /dev/null +++ b/photoprism/docker-compose.yml @@ -0,0 +1,114 @@ +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: "http://docker: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: "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: "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}" diff --git a/syncthing/.env.sample b/syncthing/.env.sample deleted file mode 100644 index d4b68f6..0000000 --- a/syncthing/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -NFS_SERVER=192.168.0.xxx # oder hostname oder Domain -BACKUP=/Pfad/zum/Ordner/Backup \ No newline at end of file diff --git a/syncthing/docker-compose.yml b/syncthing/docker-compose.yml deleted file mode 100644 index 0286f07..0000000 --- a/syncthing/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ -version: "2.1" -services: - syncthing: - image: lscr.io/linuxserver/syncthing:latest - container_name: syncthing - hostname: syncthing #optional - environment: - - PUID=1000 - - PGID=1000 - - TZ=Europe/Berlin - volumes: - - ./config:/config - - Backup:/Backup - ports: - - 8384:8384 - - 22000:22000/tcp - - 22000:22000/udp - - 21027:21027/udp - restart: unless-stopped - -volumes: - Backup: - name: Backup - driver: local - driver_opts: - type: nfs - o: addr=${NFS_SERVER},rw - device: ":${BACKUP}"