Move your data to Nextcloud (self-hosted)

medium Takes an evening to set up, then a scan and an index

Once you have your data out of the big services and cleaned up, it needs to live somewhere you control. This guide covers moving your archive to Nextcloud (self-hosted).

Step by step

  1. Decide whether Nextcloud holds the files or just sees them

    Two options. Let Nextcloud store the library itself, by uploading through the web interface or the desktop sync client - simplest, and it stays in charge of its own data folder. Or leave the library where it is and add it as External Storage, which mounts the folder into Nextcloud without moving anything. The second suits a library that already lives on a NAS or a big disk.

  2. If you are uploading, use the desktop client

    Install the Nextcloud desktop client, connect it to your server, and point it at the folder Muletto wrote. It handles tens of thousands of files, resumes when the connection drops and shows real progress. The browser upload is fine for a handful of files and miserable for a library.

  3. If you are mounting, add it as External Storage

    In the admin settings, open External Storage, add a Local storage, give it a folder name as it should appear in Nextcloud, and set the path to the folder on the server. If Nextcloud runs in a container that path is the one the container sees, not the host's. Make sure the web server user can read it, or the mount appears and stays stubbornly empty.

  4. Tell Nextcloud the files are there

    This is the step that matters. On the server run occ files:scan for the user who owns the folder, or with --all for everyone. It walks the filesystem and writes what it finds into the database. Until it has run, files copied in from outside simply do not exist as far as Nextcloud is concerned.

  5. Install Memories for an actual photo timeline

    The Files app lists folders; it is not a photo library. Memories adds a timeline, a map, albums and face grouping. After installing it, run occ memories:index to read the dates and locations out of your files and build the timeline. On external storage this is slower, because every file has to be read through the mount.

  6. Keep it up to date automatically

    Anything added from outside Nextcloud needs another scan. A scheduled job running occ files:scan --all every so often keeps it honest; Memories then indexes the new files through its own background job. If you only ever add things through the client or the web interface, neither is necessary.

  7. Check the dates came through

    Memories builds its timeline from the date inside each file, which is precisely what Muletto repairs before you export. Without that, a Google or Apple archive arrives dated the day you copied it. Scroll back a few years before trusting it.

Worth knowing

occ has to run as the web server user, typically with sudo -u www-data php occ ... - running it as root leaves files the server cannot read afterwards.
External storage means Nextcloud does not own the files. Deleting the mount does not delete them, and anything written into that folder by other tools shows up after the next scan.
Memories is a separate app from the built-in Photos app, and is the one worth having if a timeline, a map and face grouping are what you are after.