This commit is contained in:
Tomasz Borychowski 2020-10-30 15:09:22 +00:00
parent 5f5e69df77
commit 6831a81c7f
6 changed files with 268 additions and 4 deletions

View File

@ -131,11 +131,24 @@ So, without further ado, here's the current list:
# Photos # Photos
- PhotoPrism - [Comparison table](apps/photos/comparison.md)
- PhotoView - [PhotoPrism](apps/photos/photoprism.md)
- Piwigo - [PhotoView](apps/photos/photoview.md)
- Pixelfed - [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 # Project Management
- Jira - Jira

13
apps/photos/comparison.md Normal file
View File

@ -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 | ✅ | ✅ | ✅ |

70
apps/photos/photoprism.md Normal file
View File

@ -0,0 +1,70 @@
# Photoprism
Personal Photo Management powered by Go and Google TensorFlow.
<br>
- [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
```

41
apps/photos/photoview.md Normal file
View File

@ -0,0 +1,41 @@
# PhotoView
Photo gallery for self-hosted personal servers.
<br>
- [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
```

40
apps/photos/piwigo.md Normal file
View File

@ -0,0 +1,40 @@
# Piwigo
- Has mobile app
- Some video support
- Quite complex to manage, but also pretty powerful
<br>
- [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
```

87
apps/photos/pixelfed.md Normal file
View File

@ -0,0 +1,87 @@
# Pixelfed
Instagram-like photo stream.
<br>
- [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
```