Merge branch 'app/librephotos'

This commit is contained in:
Nicolas Meienberger 2022-10-12 21:29:38 +02:00
commit 346aa725ea
10 changed files with 221 additions and 0 deletions

View 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
View File

View File

View File

View 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/;
}
}
}

View File

View 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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB