Skip to content

A self-hosted open source photo management service.

License

Notifications You must be signed in to change notification settings

eugenewere/librephotos

 
 

Repository files navigation

Quality Gate Status Discord Website Read the docs GitHub contributors

LibrePhotos

Mockup designed by rawpixel.com / Freepik

Screenshots

Live demo

Live demo available here. User is demo, password is demo1234.

Communication

You can join our Discord.

What is it?

  • LibrePhotos is a fork of Ownphotos
  • A self-hosted open source photo management service, with a slight focus on cool graphs
  • Django backend and React frontend

Contributions

  • Get started in less than 30 minutes by following the guide here
  • Join our discord server, or open a pull request to start contributing

Currently the project is in very early stages, some bugs may exist. If you find any please log an issue

Features

Currently implemented:

  • Label some faces manually, and train a face classifier to label the rest
  • View photos by people in them
  • Support for RAW photos
  • Support for Video
  • Automatically generate "event" albums like "Thursday in Berlin"
  • See photos on the map
  • View photos grouped by date
  • Detect objects in photos, and make them searchable by objects
  • Search photos by location
  • Authentication (using JWT)
  • Create custom albums
  • Docker ready
  • Multithreading

Upcoming:

  • Short term:

    • Stability
  • Longer term, i.e. haven't thought much about them

    • Basic photo editing, like rotation
    • Cluster undetected face
    • Share photos/albums

What does it use?

  • Image Conversion: ImageMagick
  • Video Conversion: FFmpeg
  • Exif Support: ExifTool
  • Face detection: face_recognition
  • Face classification/clusterization: scikit-learn
  • 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.

How do I run it?

Compatibility

You need a x86 processor and it is recommended to have 8GBs of RAM. We have a version in testing, that supports arm processors see link

Size

You will need at least 10 GB of HDD Space for the docker images. It needs that space because of the machine learning models. Librephotos will also create a database and thumbnails which will need additional space.

Docker

LibrePhotos comes with separate backend and frontend servers. The backend serves the restful API, and the frontend serves, well, the frontend. They are connected via a proxy. The easiest way to do it is using Docker.

Docker-compose method (Recommended)

wget https://raw.githubusercontent.com/LibrePhotos/librephotos-docker/main/docker-compose.yml
wget https://raw.githubusercontent.com/LibrePhotos/librephotos-docker/main/librephotos.env
cp librephotos.env .env

Do not forget to create the directory's you specified in the ``.env`` file if they do not exist. 

Open .env in your favorite text editor and make the required changes.

docker-compose up -d

You should have librephotos accessible after a few minutes of bootup on: localhost:3000 unless you changed it in the .env file. User is admin, password is admin unless you changed it in the .env file. It is recommended you change the admin username and password if Libre Photos is going to be publicly accessible via the .env file.

First steps after setting up

You need to log in as the admin user, and set up the directory for the users. To do this, click the top right button and go to "Admin Area". On this page, it will show a list of users; manually set the "Scan Directory" for the desired user. Only an admin can do this. And then you can go to Dashboard - Library and click the Green "Scan photos (file system)" button. If you have a Nextcloud instance, you can also input its details in the Dashboard-Library page. Once logged in (the little circle next to "Nextcloud Scan Directory" will be green), you can choose a top level directory in your logged-in Nextcloud account. Once this works, you can click the blue "Scan photos (Nextcloud)". The backend system will copy the contents of the Nextcloud directory you specified.

The basic idea is this:

  • For scanning photos that reside in the local file system
    • Only the admin user can change the "scan directory" of the users, including the admin itself.
    • Normal users cannot change his/her own "scan directory"
    • Only the admin can find the page to control this under the "user icon (top right) - admin area"
  • For scanning photos that reside in external Nextcloud instances
    • Any user can change his/her own Nextcloud endpoint, and choose a top level directory in the Nextcloud account.

Alternative Linux installation scripts

see : librephotos-linux

About

A self-hosted open source photo management service.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 52.3%
  • JavaScript 28.7%
  • CSS 18.5%
  • Other 0.5%