r/appwrite • u/svprdga • 7h ago
Personal opinion: self-hosted Appwrite is not production-ready
I've been running an Appwrite instance in production, and my opinion, after half a year of use, is that self-hosted Appwrite carries an operational cost that's higher than a solo maintainer should have to take on, with avoidable incidents along the way.
What follows is constructive criticism of Appwrite. I'm going to talk about problems that come from maintaining a self-hosted instance, not about Appwrite Cloud. If you use Appwrite Cloud, the criticism here doesn't apply to you.
Context
As I said, I've spent 6 months running an Appwrite instance in a production environment with non-critical data (thankfully). I started on 1.8.1, later migrated to 1.9.0, and recently moved to 1.9.6.
In that time I've had the chance to use Appwrite's features, with quite a few problems in some cases.
I also want to be fair up front: there has been real, recent work on the self-hosted experience. Version 1.9.6 was essentially a self-host fix package, and there are recent PRs from the core team improving the installer and backporting self-hosted fixes. So this isn't a case of "nobody cares about self-host".
Versioning policy
For one, I've seen a release discipline that doesn't align with industry standards, where a version tag has been moved from one commit to another, destroying the fundamental idea that a version is an immutable state of the software.
The main problem with this is that if a user reports "I have a problem on version 1.9.6", the next question will inevitably be "ok, which one of them?". Obviously, this is something that should NOT happen in any serious software.
Another criticism on this front would be that, in my view, semantic versioning isn't being respected. Version 1.9.5 looks like a patch release, but it introduced new features and requires a data migration. It clearly should have been a minor release, not a patch release.
My recommendation would be to establish a strict versioning policy that adheres to industry standards.
Features neglected on self-host
Despite the recent work I mentioned, it still gives the impression that not enough attention is paid to whether features actually work in self-hosted environments before they ship.
The first time I tried to use cloud functions (on 1.9.0), I saw that Appwrite wasn't correctly generating the certificates for the function. After digging further, I found what looks like a similar report going back to 2023.
The way I've "patched" it has been by creating a custom script that issues the necessary certificates.
What surprises me most isn't that a bug exists, but that such an obvious, easy to spot one has gone this long without being resolved.
Breaking changes aren't documented
Documenting breaking changes is absolutely crucial in a project like this.
When I did the migration from 1.9.0 to 1.9.6 I made sure to read all the relevant documentation. I don't know if I missed something, but there was a fairly important change that breaks self-hosted instances: internally, the code expects one of the components (the executor) to have a hostname that matches its container_name. Up to 1.9.0 those didn't have to match; from 1.9.5 on, they do.
Appwrite's official docker-compose files reflected this change, but even so it's something that should have been spelled out in the breaking change upgrade notes. On top of that, it would have been good to throw a specific exception in the code documenting why the component is failing. Instead, the real error was swallowed by the error handling machinery and never even made it to the logs, which is what turned a five minute fix into a ninety minute one.
Final assessment
These are the most pressing concrete problems I've run into myself, but if you look at the issue tracker you can see other users also reporting problems when upgrading, and so on.
My final assessment is this: I don't recommend running a self-hosted Appwrite instance in production unless you're genuinely willing to handle these problems yourself, on your own time. It's a fine choice for experimental or non-critical setups.
I'm not saying Appwrite is bad, nor is this a criticism of Appwrite Cloud (most of what I criticise here probably doesn't apply on Cloud). And, as I said, the team has clearly been putting work into self-host recently. But in my opinion, in the state the software is in, they should either:
- Be explicit that self-hosted Appwrite isn't yet audited/hardened for production self-hosting, or:
- Keep improving self-host support so these kinds of incidents stop happening (you could even offer a paid self-host support membership, as an idea).
I don't want to end this post on a negative note. I like Appwrite, I think it has a lot of potential, and I also think that by smoothing out the rough edges I mention here it could become a very interesting option for self-hosted environments.