Merge branch 'app/librephotos'
This commit is contained in:
commit
346aa725ea
49
apps/librephotos/config.json
Normal file
49
apps/librephotos/config.json
Normal file
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "LibrePhotos",
|
||||
"port": 8132,
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "librephotos",
|
||||
"tipi_version": 1,
|
||||
"version": "2022w36",
|
||||
"categories": ["photography"],
|
||||
"description": "",
|
||||
"short_desc": "",
|
||||
"author": "Niaz Faridani-Rad",
|
||||
"source": "https://github.com/LibrePhotos/librephotos",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "email",
|
||||
"label": "LibrePhotos admin email",
|
||||
"required": true,
|
||||
"env_variable": "LIBREPHOTOS_EMAIL"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "LibrePhotos admin username",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "LIBREPHOTOS_USERNAME"
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"label": "LibrePhotos admin password",
|
||||
"max": 50,
|
||||
"min": 8,
|
||||
"required": true,
|
||||
"env_variable": "LIBREPHOTOS_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "DB password",
|
||||
"env_variable": "LIBREPHOTOS_DB_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Secret key",
|
||||
"env_variable": "LIBREPHOTOS_SECRET_KEY"
|
||||
}
|
||||
]
|
||||
}
|
0
apps/librephotos/data/cache/.gitkeep
vendored
Normal file
0
apps/librephotos/data/cache/.gitkeep
vendored
Normal file
0
apps/librephotos/data/db/.gitkeep
Normal file
0
apps/librephotos/data/db/.gitkeep
Normal file
0
apps/librephotos/data/logs/.gitkeep
Normal file
0
apps/librephotos/data/logs/.gitkeep
Normal file
0
apps/librephotos/data/protected_media/.gitkeep
Normal file
0
apps/librephotos/data/protected_media/.gitkeep
Normal file
62
apps/librephotos/data/proxy/nginx.conf
Normal file
62
apps/librephotos/data/proxy/nginx.conf
Normal file
|
@ -0,0 +1,62 @@
|
|||
user nginx;
|
||||
worker_processes 1;
|
||||
|
||||
error_log /var/log/nginx/error.log debug;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
# React routes are entirely on the App side in the web broswer
|
||||
# Always proxy to root with the same page request when nginx 404s
|
||||
error_page 404 /;
|
||||
proxy_intercept_errors on;
|
||||
proxy_set_header Host $host;
|
||||
proxy_pass http://librephotos-frontend:3000/;
|
||||
}
|
||||
location ~ ^/(api|media)/ {
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Host librephotos-backend;
|
||||
include uwsgi_params;
|
||||
proxy_pass http://librephotos-backend:8001;
|
||||
}
|
||||
# needed for webpack-dev-server
|
||||
location /ws {
|
||||
proxy_pass http://librephotos-frontend:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
# Django media
|
||||
location /protected_media {
|
||||
internal;
|
||||
alias /protected_media/;
|
||||
}
|
||||
|
||||
location /static/drf-yasg {
|
||||
proxy_pass http://librephotos-backend:8001;
|
||||
}
|
||||
|
||||
location /data {
|
||||
internal;
|
||||
alias /data/;
|
||||
}
|
||||
|
||||
# Original Photos
|
||||
location /original {
|
||||
internal;
|
||||
alias /data/;
|
||||
}
|
||||
# Nextcloud Original Photos
|
||||
location /nextcloud_original {
|
||||
internal;
|
||||
alias /data/nextcloud_media/;
|
||||
}
|
||||
}
|
||||
}
|
0
apps/librephotos/data/scan/.gitkeep
Normal file
0
apps/librephotos/data/scan/.gitkeep
Normal file
86
apps/librephotos/docker-compose.yml
Normal file
86
apps/librephotos/docker-compose.yml
Normal file
|
@ -0,0 +1,86 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
librephotos:
|
||||
image: reallibrephotos/librephotos-proxy:2022w36
|
||||
container_name: librephotos
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/scan:/data
|
||||
- ${APP_DATA_DIR}/data/protected_media:/protected_media
|
||||
- ${APP_DATA_DIR}/data/proxy/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
ports:
|
||||
- ${APP_PORT}:80
|
||||
depends_on:
|
||||
- librephotos-backend
|
||||
- librephotos-frontend
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
librephotos-db:
|
||||
image: postgres:14
|
||||
container_name: librephotos-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${LIBREPHOTOS_DB_PASSWORD}
|
||||
POSTGRES_USER: tipi
|
||||
POSTGRES_DB: librephotos
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
|
||||
command: postgres -c fsync=off -c synchronous_commit=off -c full_page_writes=off -c random_page_cost=1.0
|
||||
#Checking health of Postgres db
|
||||
healthcheck:
|
||||
# test: psql -U tipi -d librephotos -c "SELECT 1;"
|
||||
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
librephotos-frontend:
|
||||
image: reallibrephotos/librephotos-frontend:2022w36
|
||||
container_name: librephotos-frontend
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- librephotos-backend
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
librephotos-backend:
|
||||
image: reallibrephotos/librephotos:2022w36
|
||||
container_name: librephotos-backend
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/scan:/data
|
||||
- ${APP_DATA_DIR}/data/protected_media:/protected_media
|
||||
- ${APP_DATA_DIR}/data/logs:/logs
|
||||
- ${APP_DATA_DIR}/data/cache:/root/.cache
|
||||
environment:
|
||||
- SECRET_KEY=${LIBREPHOTOS_SECRET_KEY}
|
||||
- BACKEND_HOST=librephotos-backend
|
||||
- ADMIN_EMAIL=${LIBREPHOTOS_EMAIL}
|
||||
- ADMIN_USERNAME=${LIBREPHOTOS_USERNAME}
|
||||
- ADMIN_PASSWORD=${LIBREPHOTOS_PASSWORD}
|
||||
- DB_BACKEND=postgresql
|
||||
- DB_NAME=librephotos
|
||||
- DB_USER=tipi
|
||||
- DB_PASS=${LIBREPHOTOS_DB_PASSWORD}
|
||||
- DB_HOST=librephotos-db
|
||||
- DB_PORT=5432
|
||||
- REDIS_HOST=librephotos-redis
|
||||
- REDIS_PORT=6379
|
||||
- ALLOW_UPLOAD=true
|
||||
- DEBUG=0
|
||||
# Wait for Postgres
|
||||
depends_on:
|
||||
librephotos-db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
librephotos-redis:
|
||||
image: redis:6
|
||||
container_name: librephotos-redis
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
24
apps/librephotos/metadata/description.md
Normal file
24
apps/librephotos/metadata/description.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
- The [demo is available here](https://demo2.librephotos.com/). User is ```demo```, password is ```demo1234```.
|
||||
- You can watch development videos on [Niaz Faridani-Rad's channel](https://www.youtube.com/channel/UCZJ2pk2BPKxwbuCV9LWDR0w)
|
||||
- You can join our [Discord](https://discord.gg/xwRvtSDGWb).
|
||||
|
||||
![](https://github.com/LibrePhotos/librephotos/blob/dev/screenshots/mockups_main_fhd.png?raw=true)
|
||||
<sub>Mockup designed by rawpixel.com / Freepik</sub>
|
||||
|
||||
## Installation
|
||||
|
||||
Step-by-step installation instructions are available in our [documentation](https://docs.librephotos.com/1/)
|
||||
|
||||
## Features
|
||||
|
||||
- Support for all types of photos including raw photos
|
||||
- Support for videos
|
||||
- Timeline view
|
||||
- Scans pictures on the file system
|
||||
- Multiuser support
|
||||
- Generate albums based on events like "Thursday in Berlin"
|
||||
- Face recognition / Face classification
|
||||
- Reverse geocoding
|
||||
- Object / Scene detection
|
||||
- Semantic image search
|
||||
- Search by metadata
|
BIN
apps/librephotos/metadata/logo.jpg
Normal file
BIN
apps/librephotos/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Loading…
Reference in New Issue
Block a user