From 6831a81c7fb0b13bd140aa2d815e4081d799ac66 Mon Sep 17 00:00:00 2001 From: Tomasz Borychowski Date: Fri, 30 Oct 2020 15:09:22 +0000 Subject: [PATCH] photos --- README.md | 21 ++++++++-- apps/photos/comparison.md | 13 ++++++ apps/photos/photoprism.md | 70 +++++++++++++++++++++++++++++++ apps/photos/photoview.md | 41 ++++++++++++++++++ apps/photos/piwigo.md | 40 ++++++++++++++++++ apps/photos/pixelfed.md | 87 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 268 insertions(+), 4 deletions(-) create mode 100644 apps/photos/comparison.md create mode 100644 apps/photos/photoprism.md create mode 100644 apps/photos/photoview.md create mode 100644 apps/photos/piwigo.md create mode 100644 apps/photos/pixelfed.md diff --git a/README.md b/README.md index 7d0d13f..22d5623 100644 --- a/README.md +++ b/README.md @@ -131,11 +131,24 @@ So, without further ado, here's the current list: # Photos -- PhotoPrism -- PhotoView -- Piwigo -- Pixelfed +- [Comparison table](apps/photos/comparison.md) +- [PhotoPrism](apps/photos/photoprism.md) +- [PhotoView](apps/photos/photoview.md) +- [Piwigo](apps/photos/piwigo.md) +- [Pixelfed](apps/photos/pixelfed.md) +## Other tested +- [Chevereto](https://chevereto.com/) - quite nice. No video support. +- [Lychee](https://lycheeorg.github.io/) - good looking, no video support. +- [PhotoShow](https://github.com/thibaud-rohmer/PhotoShow/) - seems dead and doesn't work. +- [Photosync](https://www.photosync-app.com/home.html) - paid, app, not really self-hosted, just sync. +- [OwnPhotos](https://github.com/hooram/ownphotos) - limited features, ugly & dead. +- [FileStash](https://github.com/mickael-kerjean/filestash) - old-time-dropbox-like file manager. + +## Untested +- [pigallery2](https://github.com/bpatrik/pigallery2) - minimal feats +- [photostructure](https://photostructure.com/) - too early +- [picapport](https://www.picapport.de/en/index.php) - weird # Project Management - Jira diff --git a/apps/photos/comparison.md b/apps/photos/comparison.md new file mode 100644 index 0000000..213f56a --- /dev/null +++ b/apps/photos/comparison.md @@ -0,0 +1,13 @@ +# Comparison of self-hosted proto apps + + +| App | UI | Users | Album Sharing | Comments | UI upload | Video support | +|------------------------|-----------|------------|----------------------------|----------|-----------|----------------------------------------| +| Piwigo | ⭐️⭐️ | ✅ | user/group permissions | ✅ | ✅ | mp4, m4v, webm, webmv | +| PixelFed | ⭐️⭐️⭐️⭐️ | ✅ | | ✅ | ✅ | ⛔️ | +| PhotoView | ⭐️⭐️ | ✅ | unique links with password | ⛔️ | ⛔️ | ✅ | +| PhotoPrism | ⭐️⭐️⭐️⭐️ | admin only | unique links | ⛔️ | ✅ | allow up/down, but displays thumb only | +| Chevereto | ⭐️⭐️⭐️⭐️⭐️ | ✅ | permissions, passwords | probably | ✅ | ⛔️ | +| Lychee | ⭐️⭐️⭐️⭐️⭐️ | ⛔️ | lilnks, passwords | ⛔️ | ✅ | ⛔️ | +| Synology Moments | ⭐️⭐️⭐️⭐️ | ✅ | links | ⛔️ | ✅ | ✅ | +| Synology Photo Station | ⭐️⭐️⭐️ | ✅ | links, passwords | ✅ | ✅ | ✅ | diff --git a/apps/photos/photoprism.md b/apps/photos/photoprism.md new file mode 100644 index 0000000..6627fc4 --- /dev/null +++ b/apps/photos/photoprism.md @@ -0,0 +1,70 @@ +# Photoprism + +Personal Photo Management powered by Go and Google TensorFlow. + +
+ +- [Github repo](https://github.com/photoprism/photoprism) +- [Demo](https://demo.photoprism.org/photos) + + +## docker-compose.yml +```yml +version: '3.3' + +services: + photoprism: + image: photoprism/photoprism:latest + restart: unless-stopped + ports: + - 2342:2342 + healthcheck: # Optional + test: "photoprism status" + interval: 60s + timeout: 15s + retries: 5 + environment: # Run "photoprism help" and "photoprism config" too see all config options and current values + 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_UPLOAD_NSFW: "true" # Allow uploads that MAY be offensive + PHOTOPRISM_DETECT_NSFW: "false" # Flag photos as private that MAY be offensive + PHOTOPRISM_EXPERIMENTAL: "true" # Enable experimental features + PHOTOPRISM_SITE_URL: "http://localhost:2342/" # Canonical / public site URL + PHOTOPRISM_SITE_TITLE: "PhotoPrism" + PHOTOPRISM_SITE_CAPTION: "Browse Your Life" + PHOTOPRISM_SITE_DESCRIPTION: "" + PHOTOPRISM_SITE_AUTHOR: "" + PHOTOPRISM_HTTP_HOST: "0.0.0.0" + PHOTOPRISM_HTTP_PORT: 2342 + PHOTOPRISM_SETTINGS_HIDDEN: "false" # Users can not view or change settings + PHOTOPRISM_ADMIN_PASSWORD: "photoprism" # Initial admin password (can be changed in settings) + PHOTOPRISM_DATABASE_DRIVER: "mysql" # Using MariaDB or MySQL instead of SQLite is optional + PHOTOPRISM_DATABASE_DSN: "photoprism:photoprism@tcp(photoprism-db:3306)/photoprism?charset=utf8mb4,utf8&parseTime=true" + # PHOTOPRISM_SIDECAR_JSON: "true" # Read metadata from JSON sidecar files created by exiftool + # PHOTOPRISM_SIDECAR_YAML: "true" # Backup photo metadata to YAML sidecar files + PHOTOPRISM_THUMB_FILTER: "lanczos" # Resample filter, best to worst: blackman, lanczos, cubic, linear + PHOTOPRISM_THUMB_UNCACHED: "false" # Enable on-demand thumbnail rendering (high memory and cpu usage) + PHOTOPRISM_THUMB_SIZE: 2048 # Pre-rendered thumbnail size limit (default 2048, min 720, max 7680) + # PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD + PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # On-demand rendering size limit (default 7680, min 720, max 7680) + PHOTOPRISM_JPEG_SIZE: 7680 # Size limit for converted image files in pixels (720-30000) + PHOTOPRISM_JPEG_QUALITY: 90 # Use 95 for high-quality thumbnails (requires more storage) + PHOTOPRISM_STORAGE_PATH: "/photoprism/storage" # Storage PATH for generated files like cache and index + volumes: + - "~/Pictures/Originals:/photoprism/originals" # [local path]:[container path] + - "~/Pictures/Import:/photoprism/import" # [local path]:[container path] (optional) + - "./storage:/photoprism/storage" # Keep cache, settings and database + + photoprism-db: + image: mariadb:10.5 + restart: unless-stopped + command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=1024 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=50 + volumes: + - "./db:/var/lib/mysql" + environment: + MYSQL_ROOT_PASSWORD: photoprism + MYSQL_USER: photoprism + MYSQL_PASSWORD: photoprism + MYSQL_DATABASE: photoprism +``` diff --git a/apps/photos/photoview.md b/apps/photos/photoview.md new file mode 100644 index 0000000..29d2261 --- /dev/null +++ b/apps/photos/photoview.md @@ -0,0 +1,41 @@ +# PhotoView + +Photo gallery for self-hosted personal servers. + +
+ +- [Github repo](https://github.com/viktorstrate/photoview) + + +## docker-compose.yml +```yml +version: "3" +services: + db: + image: mariadb + restart: unless-stopped + environment: + - MYSQL_DATABASE=photoview + - MYSQL_USER=photoview + - MYSQL_PASSWORD=photo-secret + - MYSQL_RANDOM_ROOT_PASSWORD=1 + volumes: + - ./db:/var/lib/mysql + + photoview: + image: viktorstrate/photoview:latest + restart: unless-stopped + ports: + - "3090:80" + depends_on: + - db + environment: + - MYSQL_URL=photoview:photo-secret@tcp(db)/photoview + - API_LISTEN_IP=photoview + - API_LISTEN_PORT=80 + - PHOTO_CACHE=/app/cache + - PUBLIC_ENDPOINT=http://192.168.1.10:3090/ + volumes: + - ./cache:/app/cache + - ./photos:/photos:ro +``` diff --git a/apps/photos/piwigo.md b/apps/photos/piwigo.md new file mode 100644 index 0000000..8767ba8 --- /dev/null +++ b/apps/photos/piwigo.md @@ -0,0 +1,40 @@ +# Piwigo + +- Has mobile app +- Some video support +- Quite complex to manage, but also pretty powerful + +
+ +- [Homepage](http://piwigo.org/) +- [Github repo](https://github.com/Piwigo) +- [DockerHub repo](https://hub.docker.com/r/linuxserver/piwigo) + + +## docker-compose.yml +```yml +--- +version: "2" +services: + piwigo: + image: linuxserver/piwigo + container_name: piwigo + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Dublin + depends_on: + - db + ports: + - 3060:80 + volumes: + - ./config:/config + + db: + image: mariadb + restart: unless-stopped + environment: + - MYSQL_ROOT_PASSWORD=piwigo + - MYSQL_DATABASE=piwigo +``` diff --git a/apps/photos/pixelfed.md b/apps/photos/pixelfed.md new file mode 100644 index 0000000..0fe0c5f --- /dev/null +++ b/apps/photos/pixelfed.md @@ -0,0 +1,87 @@ +# Pixelfed + +Instagram-like photo stream. + +
+ +- [Homepage](https://pixelfed.org/) +- [Github repo](https://github.com/pixelfed/pixelfed) +- [Docs](https://docs.pixelfed.org/) + +## Setup + +First create `.env` file like this one: https://github.com/pixelfed/pixelfed/blob/dev/.env.docker + +## docker-compose.yml +```yml +--- +version: '3' +services: + app: + image: pixelfed + restart: unless-stopped + env_file: + - ./.env.docker + volumes: + - "app-storage:/var/www/storage" + - "app-bootstrap:/var/www/bootstrap" + - "./.env.docker:/var/www/.env" + networks: + - external + - internal + ports: + - "8080:80" + depends_on: + - db + - redis + + worker: + image: pixelfed + restart: unless-stopped + env_file: + - ./.env.docker + volumes: + - "app-storage:/var/www/storage" + - "app-bootstrap:/var/www/bootstrap" + networks: + - external + - internal + command: gosu www-data php artisan horizon + depends_on: + - db + - redis + + db: + image: mysql:8.0 + restart: unless-stopped + networks: + - internal + command: --default-authentication-plugin=mysql_native_password + environment: + - MYSQL_DATABASE=pixelfed + - MYSQL_USER=${DB_USERNAME} + - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_RANDOM_ROOT_PASSWORD=true + volumes: + - "db-data:/var/lib/mysql" + + redis: + image: redis:5-alpine + restart: unless-stopped + volumes: + - "redis-data:/data" + networks: + - internal + +volumes: + db-data: + redis-data: + app-storage: + app-bootstrap: + +networks: + internal: + internal: true + external: + driver: bridge +```