Whither selfhosting?

I’m not sure whether I like selfhosting. I enjoy it as a hobby, and I can appreciate an awesome homelab. I’m all for free software, privacy, and user agency. But it’s annoying to set up and annoying when it breaks, and I’m the one who has to worry about it breaking, lest it interfere with my day to day life.

Specifically, I am worried about uptime and persistence. Uptime: I am now responsible for power outages, natural disasters, and hardware failures. Most of the time, this is not a problem, but when it is, it’s my problem. You can mitigate this by selfhosting on cloud hosting services instead of at home, though you’re giving up some control. I am also responsible for maintenance and upgrades. You can mitigate this by having better software, using virtualization and containerization, and deploying declaratively and hermetically. Persistence: I am now responsible for the data. Backups, restoration, regular testing that it still works. Third parties can lose your data too, but they’re financially incentivized not to, and economies of scale let them give it more attention. I’m willing to pay and trust a reputable cloud provider to not lose my data in exchange for peace of mind, though I’m aware there are other ways for them to screw me over. Right now, I’m hesitant to selfhost anything critical, at least until I have time to figure out a very solid solution to deploys and backups.

Selfhosting is also not accessible to the majority of people, so making selfhostable alternatives to popular cloud services is not the only thing required for increasing user agency in the large. We also either need to greatly increase technical literacy, or make software easier to selfhost. Better documentation and guides, more streamlined installation and maintenance, and more reliable software would all help. Maybe we could sell more selfhosting-in-a-box, like NAS servers and some home assistants already do. There is also a social challenge, because many people simply do not care enough about privacy and agency to change their habits.

So: I don’t think selfhosting is the future of better software. I think local-first is more promising. On top of the agency that selfhosting offers, local-first software solves many more of the problems that traditional client-server applications sold by cloud providers have.

We all love having our data available everywhere. Local-first is not local-only, and has a strong focus on collaboration and sync across users and devices. In practice, this might look like “trust minimized sync servers”: application-agnostic relays that just move data. I quite like the story laid out in in Nature’s many attempts to evolve a Nostr as an argument for relays. In some utopian future, standardized relays are public digital infrastructure for the greater good. Maybe someday Cloudflare or some other megainfraprovider will offer them. At least you won’t need to trust them.

I’m also interested in peer-to-peer-powered local-first software. It is easier than ever to make direct connections between devices. Sprinkle in some CRDTs and you have sync. This approach requires even less application-specific infrastructure. Giving all nodes in the system similar capabilities and having them speak the same protocols seems powerful. You can still have managed hosted nodes (perhaps as your business model), and you can let your technically-inclined users selfhost the same node that the cloud service provides for more control. You can also not have any long-running nodes, and just swap data between devices when both are online. If your device turns on, the software is up. If your device has an internet connection, sync is up. Your data is replicated between your devices (and backed up yourself), or replicated to a remote service (and backed up at scale). To me, this beats selfhosting.

How do we get there? I’m keeping an eye on Keyhive and other projects at Ink & Switch. I’m very excited about Iroh as a foundational p2p library for my future projects. I have some software to write, when I get the chance. I invite you to join me. Thanks for reading :)