A self-hosted photo management service featuring automatic face recognition, object detection, and semantic image search.

LibrePhotos is an open-source, self-hosted photo management service that organizes images and videos. It provides a web-based interface for browsing media libraries and includes a mobile client for Android. The application is deployed using Docker and Docker Compose on Linux or other Docker-compatible operating systems, allowing users to maintain full control over their media storage and privacy.
The software scans the local file system to index media and provides a timeline view for navigation. It supports multiple users and handles various file formats, including raw photos. Users can manage their libraries through a browser or the dedicated mobile application, making it suitable for home servers or private cloud deployments where centralized media management is required.
The backend is built with Django 5 and PostgreSQL, utilizing Django-Q2 for background tasks and asynchronous processing. It integrates ImageMagick and FFmpeg for media conversion and ExifTool for metadata handling. The frontend uses React 18 and TypeScript with MapLibre GL for map visualizations and i18next for localization. Machine learning capabilities are provided by scikit-learn, hdbscan, and the face_recognition library for clustering, while im2txt and places365 handle image captioning and scene classification. Due to the memory requirements of these ML pipelines, a minimum of 4 GB of RAM is required, though 8 GB or more is recommended for smooth operation.
This software is designed for users who want a private, self-managed solution for organizing large photo and video collections with automated intelligence.
Back up, organize, and browse personal photo and video libraries on a self-hosted server without cloud access.
Self-hosted photo and video management application using machine learning for automatic tagging and face recognition.
Join our newsletter to get shiny new open source software delivered to your inbox. Unsubscribe anytime.