librephotos
A self-hosted open source photo management service. This is the repository of the backend.
Top Related Projects
AI-Powered Photos App for the Decentralized Web 🌈💎✨
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
High performance self-hosted photo and video management solution.
Quick Overview
LibrePhotos is an open-source, self-hosted photo management solution. It offers features like face recognition, object detection, and location-based organization, allowing users to manage and search their personal photo collections efficiently and securely on their own hardware.
Pros
- Self-hosted solution, providing complete control over personal data
- Advanced AI-powered features like face recognition and object detection
- Supports various file formats and RAW images
- Customizable and extensible due to its open-source nature
Cons
- Requires technical knowledge for setup and maintenance
- May require significant hardware resources for large photo collections
- Limited mobile support compared to cloud-based alternatives
- Smaller community and ecosystem compared to commercial solutions
Getting Started
To set up LibrePhotos:
-
Clone the repository:
git clone https://github.com/LibrePhotos/librephotos.git
-
Navigate to the project directory:
cd librephotos
-
Copy the example environment file:
cp .env.example .env
-
Edit the
.env
file to configure your settings. -
Build and start the containers:
docker-compose up -d
-
Access the web interface at
http://localhost:3000
and follow the setup wizard.
For detailed instructions and configuration options, refer to the project's documentation on GitHub.
Competitor Comparisons
AI-Powered Photos App for the Decentralized Web 🌈💎✨
Pros of PhotoPrism
- More active development with frequent updates and releases
- Better support for RAW image formats and advanced metadata handling
- Faster indexing and search capabilities, especially for large libraries
Cons of PhotoPrism
- Requires more system resources, especially for initial indexing
- Less customizable user interface compared to LibrePhotos
- Steeper learning curve for advanced features and configuration
Code Comparison
PhotoPrism (Go):
func (m *Index) IndexFiles(files []string, opt IndexOptions) (complete Files, failed map[string]error) {
done := make(chan File)
jobs := make(chan string)
failed = make(map[string]error)
// Start worker goroutines
for w := 1; w <= opt.Workers; w++ {
go m.indexWorker(jobs, done)
}
LibrePhotos (Python):
def index_photos(self):
photos_to_add = []
for image_path in self.all_files:
if is_valid_image(image_path):
photos_to_add.append(image_path)
self.photos.bulk_create([
Photo(image_path=p, owner=self.user) for p in photos_to_add
])
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
Pros of Lychee
- Lightweight and easy to set up
- Supports multiple users and sharing options
- Clean and intuitive user interface
Cons of Lychee
- Limited facial recognition and AI-powered features
- Fewer advanced organization and tagging options
- Less robust metadata handling and editing capabilities
Code Comparison
Lychee (PHP):
public function add(Request $request)
{
$request->validate([
'albumID' => 'required|string',
'function' => 'required|string',
]);
// ... (implementation)
}
Librephotos (Python):
def add_photo_to_album(request):
user = request.user
if not user.is_authenticated:
return HttpResponse("Unauthorized", status=401)
# ... (implementation)
Both projects use different languages and frameworks, making direct code comparison challenging. Lychee is built with PHP and Laravel, while Librephotos uses Python and Django. Lychee's code tends to be more concise and focused on web-based functionality, while Librephotos includes more complex features like machine learning integration and advanced metadata processing.
Lychee is better suited for users seeking a straightforward, web-based photo management solution. Librephotos offers more advanced features and AI-powered capabilities, making it ideal for users who require deeper organization and analysis of their photo collections.
High performance self-hosted photo and video management solution.
Pros of immich
- More active development with frequent updates and releases
- Better mobile app support, including iOS and Android clients
- Faster performance for large photo libraries
Cons of immich
- Less mature project with potential stability issues
- Fewer advanced features compared to LibrePhotos (e.g., face recognition)
- Limited customization options for self-hosted deployments
Code Comparison
immich (TypeScript):
export async function generateAuthToken(user: User): Promise<string> {
const payload: JwtPayload = { sub: user.id, email: user.email };
return jwt.sign(payload, JWT_SECRET, { expiresIn: '1d' });
}
LibrePhotos (Python):
def generate_auth_token(user):
payload = {'user_id': user.id, 'exp': datetime.utcnow() + timedelta(days=1)}
return jwt.encode(payload, SECRET_KEY, algorithm='HS256')
Both projects use JWT for authentication, but immich implements it in TypeScript while LibrePhotos uses Python. The token generation logic is similar, with immich including the email in the payload and LibrePhotos using a more explicit expiration time.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
LibrePhotos
Mockup designed by rawpixel.com / Freepik
- Stable demo is available here:https://demo1.librephotos.com/ . User is
demo
, password isdemo1234
(with sample images). - Latest development demo is available here: https://demo2.librephotos.com/ (same user/password)
- You can watch development videos on Niaz Faridani-Rad's channel
- You can join our Discord.
Installation
Step-by-step installation instructions are available in our documentation
How to help out
- â Star this repository if you like this project!
- ð Developing: Get started in less than 30 minutes by following this guide.
- ðï¸ Documentation: Improving the documentation is as simple as submitting a pull request here
- 𧪠Testing: If you want to help find bugs, use the
dev
tag and update it regularly. If you find a bug, open an issue. - ð§âð¤âð§ Outreach: Talk about this project with other people and help them to get started too!
- ð Translations: Make LibrePhotos accessible to more people with weblate.
- ð¸ Donate to the developers of LibrePhotos
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
What does it use?
- Image Conversion: ImageMagick
- Video Conversion: FFmpeg
- Exif Support: ExifTool
- Face detection: face_recognition
- Face classification/clusterization: scikit-learn and hdbscan
- Image captioning: im2txt,
- Scene classification places365
- Reverse geocoding: Mapbox: You need to have an API key. First 50,000 geocode lookups are free every month.
Top Related Projects
AI-Powered Photos App for the Decentralized Web 🌈💎✨
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
High performance self-hosted photo and video management solution.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot