From 719567ef3ed86a51c5a7ed3b2d4df56b6c639b1d Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 25 Jul 2022 21:14:17 +0000 Subject: [PATCH] Add photoprism --- config/nginx/nginx.conf | 46 +++++++++++++++++++++++++++++ docker-compose.yml | 64 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) diff --git a/config/nginx/nginx.conf b/config/nginx/nginx.conf index 7cef3f9..bc233ee 100644 --- a/config/nginx/nginx.conf +++ b/config/nginx/nginx.conf @@ -48,6 +48,7 @@ http { server { listen 443 ssl http2; server_name transmission.spanskiduh.xyz; + access_log /logs/transmission.log custom_log; ssl_certificate /etc/letsencrypt/live/transmission.spanskiduh.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/transmission.spanskiduh.xyz/privkey.pem; @@ -81,6 +82,7 @@ http { server { listen 443 ssl http2; server_name jellyfin.spanskiduh.xyz; + access_log /logs/jellyfin.log custom_log; ssl_certificate /etc/letsencrypt/live/jellyfin.spanskiduh.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/jellyfin.spanskiduh.xyz/privkey.pem; @@ -114,6 +116,7 @@ http { server { listen 443 ssl http2; server_name gitea.spanskiduh.xyz; + access_log /logs/gitea.log custom_log; ssl_certificate /etc/letsencrypt/live/gitea.spanskiduh.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gitea.spanskiduh.xyz/privkey.pem; @@ -156,6 +159,7 @@ http { server { listen 443 ssl http2; server_name nextcloud.spanskiduh.xyz; + access_log /logs/nextcloud.log custom_log; ssl_certificate /etc/letsencrypt/live/nextcloud.spanskiduh.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nextcloud.spanskiduh.xyz/privkey.pem; @@ -200,6 +204,7 @@ http { server { listen 443 ssl http2; server_name kimai.spanskiduh.xyz; + access_log /logs/kimai.log custom_log; ssl_certificate /etc/letsencrypt/live/kimai.spanskiduh.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kimai.spanskiduh.xyz/privkey.pem; @@ -210,6 +215,45 @@ http { } } + ### PHOTOPRISM ### + + upstream photoprism { + server photoprism:2342; + } + + server { + listen 80; + server_name photos.spanskiduh.xyz; + access_log /logs/photoprism.log custom_log; + + location /.well-known/acme-challenge/ { + root /var/www/certbot; + } + + location / { + return 301 https://photos.spanskiduh.xyz$request_uri; + } + } + + server { + listen 443 ssl http2; + server_name photos.spanskiduh.xyz; + access_log /logs/photoprism.log custom_log; + + ssl_certificate /etc/letsencrypt/live/photos.spanskiduh.xyz/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/photos.spanskiduh.xyz/privkey.pem; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + location / { + proxy_pass "http://photoprism/"; + } + } + ### GLADYS ASSISTANT ### upstream gladys { @@ -233,6 +277,7 @@ http { server { listen 443 ssl http2; server_name gladys.spanskiduh.xyz; + access_log /logs/gladys.log custom_log; ssl_certificate /etc/letsencrypt/live/gladys.spanskiduh.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gladys.spanskiduh.xyz/privkey.pem; @@ -267,6 +312,7 @@ http { server { listen 443 ssl http2; server_name zavedanje-o-avtizmu.xyz; + access_log /logs/autism.log custom_log; ssl_certificate /etc/letsencrypt/live/zavedanje-o-avtizmu.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/zavedanje-o-avtizmu.xyz/privkey.pem; diff --git a/docker-compose.yml b/docker-compose.yml index c19cda2..7b67b28 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,8 @@ networks: name: gladys_network kimai_network: name: kimai_network + photoprism_network: + name: photoprism_network services: @@ -40,6 +42,7 @@ services: - gladys - kimai - kimai_db + - photoprism ports: - 80:80 - 443:443 @@ -57,6 +60,7 @@ services: - autism_app_network - gladys_network - kimai_network + - photoprism_network certbot: image: certbot/certbot:latest @@ -194,6 +198,66 @@ services: networks: - kimai_network + photoprism: + image: photoprism/photoprism:latest + #restart: unless-stopped + container_name: photoprism + security_opt: + - seccomp:unconfined + - apparmor:unconfined + environment: + PHOTOPRISM_ADMIN_PASSWORD: "insecure" # YOUR INITIAL ADMIN PASSWORD (MINIMUM 8 CHARACTERS, USERNAME "admin") + PHOTOPRISM_SITE_URL: "https://photos.spanskiduh.xyz/" # 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_PUBLIC: "false" # no authentication required (disables password protection) + PHOTOPRISM_READONLY: "true" # do not modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "true" # 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 UI and API + 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_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 # image quality, a higher value reduces compression (25-100) + PHOTOPRISM_DETECT_NSFW: "true" # flag photos as private that MAY be offensive (requires TensorFlow) + PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive + PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server + PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" + PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description + PHOTOPRISM_SITE_AUTHOR: "spanskiduh" # meta site author + devices: + - "/dev/dri:/dev/dri" + working_dir: "/photoprism" # do not change or remove + volumes: + - "/home/hsrv/d_personal/data/nextcloud/data/spanskiduh/files/InstantUpload/Camera:/photoprism/originals" # Original media files (DO NOT REMOVE) + - "${DOCKER_DATA_DIR}/photoprism:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) + networks: + - photoprism_network + +# 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 + # # HOME-AUTOMATION SERVICES #