The Travelers' Universal Filesystem
I split my time between two houses, one in Europe and one in South America. Each has a local server with backups. My setup follows the 3-2-1 rule: three copies of everything, on at least two different media, with one offsite (an encrypted restic repo on Backblaze). It works, but it’s clunky and I often spend an afternoon or so reconfiguring my workstations to have proper access.
The main problem is that I want to access the closest server, and I don’t have it all correctly mirrored. When I’m in South America, I want my machine to pull from the local server. When I’m in Europe, same thing but different server. My music collection, my photos, my local AI inference setup (an OpenAI-compatible API so I don’t have to share every thought with big corporations), a copy of Wikipedia for offline browsing, all of this should just be there, transparently, wherever I am. For example, I have two gitea/forgejo servers with a bunch of scripts that keep them in sync, and changing the sync direction is often a bumpy experience.
I’ve been sketching out what this would look like:
/media/musicmounts the closest media server/immutable/wikipedia/xxx.zimis a read-only copy of the wikipedia (taken from https://library.kiwix.org/)/photoshas my photo library/reposhas automatically-syncing remote git repos/projectshas my own git-backed projects/downloadskeeps the last ~45 days cached locally, with older files mounted via overlayfs from whatever remote is reachable
One of these weekends, I’ll set up a NixOS configuration that figures out which
network it’s on and does the right thing. ZFS would make syncing between
locations faster with zfs send, though I’ve read concerning things about ZFS
native encryption and remote backups (though it seems to be fixed as of
October 2025, it sounds
very scary).
The nice thing about 2026 is that I can describe this setup to Claude and get a
working NixOS configuration. The real complexity is in the network detection
and graceful fallbacks, like what happens when both locations are unreachable?
How do you handle conflicts in bidirectional sync? The overlayfs setup for
/downloads needs more thought: when/how to decrypt? I would like to access
this only with a touch of my yubikey for example, and having that umount
automatically.
But that’s the fun part of building for yourself: you can start with something that mostly works and iterate. The cost of getting it wrong is just your own inconvenience.