π· Yet another photo management app for Nextcloud
- πΈ Photo and Video Timeline: Sorts photos by date taken, parsed from Exif data.
- π€ Quick Recap: Jump to anywhere in the timeline instantly.
- πΌοΈ Folders: Browse your and shared folders with a similar, efficient timeline.
- π€ AI Tagging: Group photos by people and objects using AI, powered by the recognize app.
- π¦ Slideshow: View photos from your timeline and folders easily.
- π± Mobile Support: Relive your memories on devices of any shape and size through the web app.
- βοΈ Edit Metadata: Edit Exif dates on photos quickly and easily.
- π¦ Archive: Store photos you don't want to see in your timeline in a separate folder.
- β‘οΈ Fast: Memories is extremely fast. Period. More details below.
- π Star this repository: This is the easiest way to support the project and costs nothing.
- πͺ² Report bugs: If you find a bug, please report it on the issue tracker.
- π Contribute: If you want to contribute, please read file / comment on an issue and ask for guidance.
- Install the app from the Nextcloud app store
- βοΈ Install
exiftool
(see below). - Run
php ./occ memories:index
to generate metadata indices for existing photos. - Open the π· Memories app in Nextcloud and set the directory containing your photos. Photos from this directory will be displayed in the timeline, including any photos in nested subdirectories.
- Installing the preview generator for pre-generating thumbnails is strongly recommended.
The exact steps depend on your Nextcloud platform. If you use Docker for your Nextcloud instance, you can install Exiftool by using a custom docker image.
- Ubuntu/Debian:
sudo apt install libimage-exiftool-perl
- Fedora:
sudo dnf install perl-Image-ExifTool
- Arch Linux:
sudo pacman -S perl-image-exiftool
- Alpine:
apk add --no-cache exiftool
- MacOS:
brew install exiftool
- FreeBSD:
sudo pkg install p5-Image-ExifTool
- β Clone this into your
apps
folder of your Nextcloud. - π©βπ» In a terminal, run the command
make dev-setup
to install the dependencies. - π Then to build the Javascript whenever you make changes, run
make build-js
. To create a pull request usemake build-js-production
. Watch changes with:make watch-js
. - β Enable the app through the app management of your Nextcloud.
- π Partytime!
The approach of this app is fundamentally different from the official Nextcloud Photos app, which is very lightweight and works entirely using webdav. This app instead maintains special metadata in a separate table on the backend, and thus can be considered to have different objectives.
- Once properly configured, Memories is extremely fast, possibly one of the fastest web photo viewers.
- On a server with relatively cheap hardware (
Intel Pentium G6400 / 8GB RAM / SSD
), loading the timeline takes only~400ms
without cache on a laptop (Intel Core i5-1035G1 / Windows 11 / Chrome
) for a library of~17000 photos
totaling100GB
. The test was performed on Nextcloud 24 withnginx
,php-fpm
andmariadb
running in Docker. - For best performance, install the preview generator and make sure HTTP/2 is enabled for your Nextcloud instance.
- You may need to configure the Nextcloud preview generator and Imagemagick / ffmpeg to support all types of images and videos (e.g. HEIC). If using the official docker image, add
OC\Preview\HEIC
toenabledPreviewProviders
in yourconfig.php
. - If local time is not found in the photo (especially for videos), the server timezone is used.
- All photos in the timeline must be on a single storage. For example, you cannot have a mounted directory inside your photos directory.
- The app can work with external storage for photos. Just set the mountpoint as the timeline directory.
- If you add any photos from outside Nextcloud, you must run the scan and index commands.
- Indexing may be slow, since all files must be downloaded from the storage. The app currently assumes that the Exif data is present with the first 20MB of each file.
- This function is experimental and may not work as expected. Please report any issues.
- The archive feature moves photos to a separate folder called
.archive
at the root of your timeline. You can use this, for example, to move these photos to a cold storage.
Nextcloud team. At least one half of the code is based on the work of the Nextcloud Photos.