diff --git a/nextcloud/.env.j2 b/nextcloud/.env.j2 index afeb66c..122ba9e 100644 --- a/nextcloud/.env.j2 +++ b/nextcloud/.env.j2 @@ -13,3 +13,6 @@ SMTP_SECURE=ssl SMTP_NAME=admin@2li.ch SMTP_PASSWORD={{ nextcloud_smtp_password }} MAIL_FROM_ADDRESS=admin@2li.ch + +PHOTOPRISM_ADMIN_PASSWORD=password +PHOTOPRISM_DATABASE_PASSWORD=password diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index 8af48d4..d1e7ae6 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -67,3 +67,70 @@ services: depends_on: - db - redis + + photoprism: + ## Use photoprism/photoprism:preview for testing preview builds: + image: photoprism/photoprism:latest + depends_on: + - mariadb + restart: unless-stopped + security_opt: + - seccomp:unconfined + - apparmor:unconfined + environment: + - PHOTOPRISM_ADMIN_PASSWORD + - PHOTOPRISM_SITE_URL=https://photos.zweili.org/ # 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_DEBUG=false # run in debug mode (shows additional log messages) + - PHOTOPRISM_PUBLIC=false # no authentication required (disables password protection) + - PHOTOPRISM_READONLY=true # 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=true # 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=false # flag photos as private that MAY be offensive (requires TensorFlow) + - PHOTOPRISM_UPLOAD_NSFW=true # allows uploads that MAY be offensive + - PHOTOPRISM_DATABASE_DRIVER=mysql # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + - PHOTOPRISM_DATABASE_SERVER=photoprism-db: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 + - PHOTOPRISM_SITE_TITLE=PhotoPrism + - PHOTOPRISM_SITE_CAPTION=AI-Powered Photos App + - PHOTOPRISM_SITE_DESCRIPTION="" + - PHOTOPRISM_SITE_AUTHOR="" + - PHOTOPRISM_UID=33 + - PHOTOPRISM_GID=33 + # PHOTOPRISM_UMASK: 0000 + ## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user) + #user: "1000:100" + working_dir: "/photoprism" + volumes: + - "./data/data/andreas/files/20_pictures:/photoprism/originals:ro" # original media files (photos and videos) + - "./storage:/photoprism/storage" # *writable* storage folder for cache, database, and sidecar files (never remove) + labels: + - "traefik.enable=true" + - "traefik.http.routers.photoprism.rule=Host(`photos.zweili.org`)" + - "traefik.http.routers.photoprism.entrypoints=websecure" + - "traefik.http.routers.photoprism.tls.certresolver=myresolver" + - "traefik.http.routers.photoprism.middlewares=default-headers@file" + + photoprism-db: + restart: unless-stopped + image: mariadb:10.6 + 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 + volumes: + - "./database:/var/lib/mysql" # important, don't remove + environment: + - MYSQL_RANDOM_ROOT_PASSWORD=yes + - MYSQL_DATABASE=photoprism + - MYSQL_USER=photoprism + - MYSQL_PASSWORD=${PHOTOPRISM_DATABASE_PASSWORD} diff --git a/photoprism/.env.j2 b/photoprism/.env.j2 deleted file mode 100644 index 755ce46..0000000 --- a/photoprism/.env.j2 +++ /dev/null @@ -1,2 +0,0 @@ -PHOTOPRISM_ADMIN_PASSWORD=password -MYSQL_PASSWORD=password diff --git a/photoprism/docker-compose.yml b/photoprism/docker-compose.yml deleted file mode 100644 index 689b8a5..0000000 --- a/photoprism/docker-compose.yml +++ /dev/null @@ -1,105 +0,0 @@ -version: "3.5" - -# Example Docker Compose config file for PhotoPrism (Linux / AMD64) -# -# Note: -# - 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. -# - 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/docker-compose/ -# 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 for testing preview builds: - image: photoprism/photoprism:latest - depends_on: - - mariadb - restart: unless-stopped - security_opt: - - seccomp:unconfined - - apparmor:unconfined - environment: - - PHOTOPRISM_ADMIN_PASSWORD - - PHOTOPRISM_SITE_URL=https://photos.zweili.org/ # 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_DEBUG=false # run in debug mode (shows additional log messages) - - PHOTOPRISM_PUBLIC=false # no authentication required (disables password protection) - - PHOTOPRISM_READONLY=true # 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=true # 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=false # flag photos as private that MAY be offensive (requires TensorFlow) - - PHOTOPRISM_UPLOAD_NSFW=true # allows uploads that MAY be offensive - - 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=${MYSQL_PASSWORD} - - PHOTOPRISM_SITE_TITLE=PhotoPrism - - PHOTOPRISM_SITE_CAPTION=AI-Powered Photos App - - PHOTOPRISM_SITE_DESCRIPTION="" - - PHOTOPRISM_SITE_AUTHOR="" - - PHOTOPRISM_UID=33 - - PHOTOPRISM_GID=33 - # PHOTOPRISM_UMASK: 0000 - ## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user) - #user: "1000:100" - working_dir: "/photoprism" - volumes: - - "~/docker_systems/nextcloud/data/data/andreas/files/:/photoprism/originals:ro" # original media files (photos and videos) - - "./storage:/photoprism/storage" # *writable* storage folder for cache, database, and sidecar files (never remove) - labels: - - "traefik.enable=true" - - "traefik.http.routers.photoprism.rule=Host(`photos.zweili.org`)" - - "traefik.http.routers.photoprism.entrypoints=websecure" - - "traefik.http.routers.photoprism.tls.certresolver=myresolver" - - "traefik.http.routers.photoprism.middlewares=default-headers@file" - - mariadb: - restart: unless-stopped - image: mariadb:10.6 - 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 - volumes: - - "./database:/var/lib/mysql" # important, don't remove - environment: - - MYSQL_RANDOM_ROOT_PASSWORD=yes - - MYSQL_DATABASE=photoprism - - MYSQL_USER=photoprism - - MYSQL_PASSWORD