[{"data":1,"prerenderedAt":158},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-appwrite-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":26,"intro":28,"sections":29,"ctaTitle":112,"ctaBody":113,"ctaButton":114,"ctaUrl":115,"relatedPosts":116},61,"heberger-appwrite-vps","Hosting Appwrite on a VPS","Self-host Appwrite on your Cloud VPS: a complete BaaS backend in Docker for web and mobile apps, compared to Supabase.",9,657,false,"2026-04-20T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},6,"Databases","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-appwrite-vps-poster.svg",{"categorySlug":18,"appSlug":27},"appwrite","Appwrite is an open source backend-as-a-service designed for web and mobile developers: document database, authentication, file storage, serverless functions, and messaging. Self-hosting it on a VPS gives you a complete self-hosted backend, with multi-platform SDKs and no usage-based billing.",[30,34,44,47,69,109],{"type":31,"title":32,"body":33},"h2","Why self-host Appwrite on a VPS","Appwrite brings together in a single platform everything an application needs on the server side: authentication with more than 30 OAuth methods, a document database with granular permissions, file storage with image transformation, serverless functions in several languages, and messaging. Its cloud version bills per usage and per resources; by self-hosting on a VPS, you deploy the whole thing via Docker and drive it from an elegant web console, with no cap. It's particularly suited to Flutter, React Native, or web developers who want a ready-to-use backend with official SDKs, while keeping the data and logic on their own infrastructure. You control the functions, the API keys, and the permissions, and you scale at your own pace.",{"type":35,"title":36,"items":37},"ul","The concrete benefits of a self-hosted Appwrite",[38,39,40,41,42,43],"All-in-one backend: Auth, Databases, Storage, Functions, and Messaging in a single console.","Official SDKs for Flutter, React Native, Web, Android, iOS, Node, Python, and more.","More than 30 built-in OAuth providers (Google, GitHub, Apple...) with no code.","Self-hosted serverless functions: run your business logic without an external service.","Granular permissions at the document and collection level, managed from the console.","No billing per execution and no user quota: a fixed VPS plan.",{"type":31,"title":45,"body":46},"Hardware and software prerequisites","Appwrite orchestrates several services (API, console, MariaDB, Redis, workers, and the functions runtime via Docker-in-Docker). For a development instance, 2 vCPU and 4 GB of RAM with 40 GB of SSD are enough. For production with active serverless functions and several apps, aim for 4 vCPU, 8 GB of RAM, and 80 GB of SSD, because each function runs in its own ephemeral container. On the software side: Ubuntu 22.04\u002F24.04 LTS, Docker and Docker Compose v2 (Appwrite manages its own built-in Traefik for routing and SSL), and a domain name pointing to the VPS (e.g., `api.myapp.com`). Ports 80 and 443 must be free for Traefik to obtain the Let's Encrypt certificates.",{"type":48,"title":49,"steps":50},"steps","Deploying self-hosted Appwrite with Docker",[51,54,57,60,63,66],{"title":52,"body":53},"Prepare the VPS and the domain","Install Docker, point your domain to the VPS IP, and make sure ports 80 and 443 are open in `ufw`: Appwrite's built-in Traefik needs them for the Let's Encrypt ACME challenge.",{"title":55,"body":56},"Run the official installer","Run the installation command `docker run ... appwrite\u002Fappwrite install`: an interactive wizard asks you for the domain, the HTTP\u002FHTTPS port, and generates the `docker-compose.yml` as well as the `.env` file with the secrets. This is the recommended method rather than a hand-written compose.",{"title":58,"body":59},"Configure the domain and SSL","Fill in `_APP_DOMAIN` and `_APP_DOMAIN_TARGET` with your domain name. Traefik then automatically generates the HTTPS certificate. Check console access at `https:\u002F\u002Fapi.myapp.com` and create your root administrator account.",{"title":61,"body":62},"Create a project and its first application","From the console, create a project, add a platform (Web, Flutter, Apple...) by declaring the allowed hostname, and retrieve the project ID. This information feeds the client-side SDK initialization.",{"title":64,"body":65},"Harden the production configuration","In `.env`, set `_APP_OPTIONS_ABUSE` and `_APP_OPTIONS_FORCE_HTTPS` to `enabled`, configure SMTP (`_APP_SMTP_*`) for verification emails, and restrict `_APP_CONSOLE_WHITELIST_*` if you want to limit console access.",{"title":67,"body":68},"Back up MariaDB and the Storage","Schedule a daily dump of Appwrite's MariaDB database and archive the Storage volume (uploads). Since Appwrite encrypts some data with `_APP_OPENSSL_KEY_V1`, back up this secret too: without it, the encrypted files are unrecoverable.",{"type":70,"title":71,"headers":72,"rows":76},"comparison","Appwrite vs Supabase: which one to self-host?",[73,74,75],"Criterion","Appwrite","Supabase",[77,81,85,89,93,97,101,105],[78,79,80],"Database","MariaDB, document model","Native PostgreSQL, full SQL",[82,83,84],"Approach","SDK- and mobile-app-oriented","SQL- and relational-app-oriented",[86,87,88],"Serverless functions","Native, multi-language built-in","Edge Functions (Deno)",[90,91,92],"Installation","Official interactive installer","Compose to configure manually",[94,95,96],"SSL \u002F routing","Built-in Traefik, automatic","External reverse proxy to add",[98,99,100],"Vector \u002F AI search","Not native","Native via pgvector",[102,103,104],"Ideal for","Flutter, React Native, mobile-first","Advanced SQL, RAG, relational",[106,107,108],"Administration console","Rich, guided console","Studio focused on SQL tables",{"type":110,"body":111},"tip","Be sure to back up the `_APP_OPENSSL_KEY_V1` variable from your `.env` in a separate vault: Appwrite uses it to encrypt files and some sensitive data, and a restore without this key makes the encrypted content unreadable. For serverless functions in production, monitor the disk consumption tied to the ephemeral runtime containers and schedule a regular `docker system prune` to avoid saturating the SSD with intermediate images.","Self-host your Appwrite backend","The ServOrbit Cloud VPS with a ready-to-use Docker template, NVMe SSD, and dedicated CPU hosts the entire Appwrite stack, serverless functions included, over HTTPS.","Deploy my Cloud VPS","\u002Fvps-cloud",[117,131,145],{"id":118,"slug":119,"title":120,"excerpt":121,"readTime":122,"views":123,"isPinned":13,"publishedAt":124,"category":125,"categories":126,"featuredImage":23,"bgImage":24,"posterImage":128,"relatedSolution":129},56,"heberger-postgresql-vps","PostgreSQL on a VPS: a reliable and controlled database","Host PostgreSQL on a VPS: volumes, backups, restricted network access and sound configuration for your applications.",8,2240,"2026-04-25T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[127],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fheberger-postgresql-vps-poster.svg",{"categorySlug":18,"appSlug":130},"postgresql",{"id":132,"slug":133,"title":134,"excerpt":135,"readTime":136,"views":137,"isPinned":13,"publishedAt":138,"category":139,"categories":140,"featuredImage":23,"bgImage":24,"posterImage":142,"relatedSolution":143},57,"heberger-mysql-vps","Hosting MySQL on a VPS","Host MySQL on your Cloud VPS: Docker deployment, hardening, InnoDB tuning, and automated backups, step by step.",7,509,"2026-04-24T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[141],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fheberger-mysql-vps-poster.svg",{"categorySlug":18,"appSlug":144},"mysql",{"id":146,"slug":147,"title":148,"excerpt":149,"readTime":136,"views":150,"isPinned":13,"publishedAt":151,"category":152,"categories":153,"featuredImage":23,"bgImage":24,"posterImage":155,"relatedSolution":156},58,"heberger-redis-vps","Hosting Redis on a VPS","Deploy Redis on your Cloud VPS: ultra-fast cache, sessions, and queues, with persistence, security, and memory tuning.",546,"2026-04-23T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[154],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fheberger-redis-vps-poster.svg",{"categorySlug":18,"appSlug":157},"redis",1785628433874]