[{"data":1,"prerenderedAt":159},["ShallowReactive",2],{"seo-verification":3,"blog-supabase-vs-appwrite-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":20,"featuredImage":22,"bgImage":23,"posterImage":24,"relatedSolution":25,"intro":28,"sections":29,"ctaTitle":111,"ctaBody":112,"ctaButton":113,"ctaUrl":114,"relatedPosts":115},94,"supabase-vs-appwrite","Supabase vs Appwrite: which self-hosted backend for your VPS?","Supabase or Appwrite self-hosted on a VPS? Backend comparison (auth, DB, storage), Docker prerequisites and complete deployment guide.",9,678,false,"2026-03-18T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},5,"Comparison","comparatif","bg-info\u002F10 text-info",[21],{"id":16,"name":17,"slug":18,"color":19,"icon":18},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fsupabase-vs-appwrite-poster.svg",{"categorySlug":26,"appSlug":27},"bases-de-donnees","supabase","Supabase and Appwrite are the two heavyweights of the open-source backend-as-a-service. Both provide authentication, database, storage and functions, but with opposing philosophies: Supabase is centered on PostgreSQL, Appwrite on a developer-oriented multi-database abstraction. Here's how to choose and self-host them on your VPS.",[30,34,44,83,86,108],{"type":31,"title":32,"body":33},"h2","Why host your BaaS backend yourself","A BaaS saves you from rewriting authentication, permissions, file storage and real-time APIs for every project. But the cloud offerings of Supabase and Appwrite bill by usage (rows read, storage, MAU) and limit access to the underlying database. By self-hosting on a VPS, you regain direct SQL access, predictable fixed costs and total sovereignty over user data, which is decisive for compliance. Supabase relies entirely on PostgreSQL and exposes an auto-generated REST\u002FGraphQL API plus real-time via the WAL. Appwrite abstracts persistence behind its own API and natively includes multi-runtime serverless functions, a permission system granular down to the document, and an image transcoding engine.",{"type":35,"title":36,"items":37},"ul","The advantages of self-hosting a BaaS",[38,39,40,41,42,43],"Direct SQL access to PostgreSQL (Supabase) for queries, views and migrations with no intermediary.","Fixed costs tied to the VPS, with no billing by number of rows read or active users.","User data and files hosted locally: control over data residency.","Customization of serverless functions with your own runtimes and dependencies.","No cold start or execution quotas imposed by a third-party cloud.","Integration into the private Docker network with your other internal services.",{"type":45,"headers":46,"rows":50},"comparison",[47,48,49],"Criterion","Supabase","Appwrite",[51,55,59,63,67,71,75,79],[52,53,54],"Database","Native PostgreSQL (full SQL access)","Own abstraction (MariaDB underneath)",[56,57,58],"Exposed API","Auto-generated REST + GraphQL (PostgREST)","REST + GraphQL + multi-language SDK",[60,61,62],"Real-time","Subscriptions on PostgreSQL changes","Real-time channels per collection",[64,65,66],"Serverless functions","Edge Functions (Deno)","Multi-runtime Functions (Node, Python, PHP, Dart…)",[68,69,70],"Permissions","PostgreSQL Row Level Security","Permissions per document and per role",[72,73,74],"Container architecture","Composed stack (~10 services)","Composed stack around a main container",[76,77,78],"Recommended self-hosted RAM","4 GB minimum","2 to 4 GB",[80,81,82],"Target audience","Teams comfortable with SQL","Developers seeking a unified API",{"type":31,"title":84,"body":85},"Prerequisites for a healthy deployment","Supabase self-hosted is a stack composed of about ten containers (Postgres, GoTrue, PostgREST, Realtime, Storage, Kong, Studio…). Plan for a VPS of at least 2 vCPU and 4 GB of RAM, with 20 GB of SSD\u002FNVMe disk for the database and files. Appwrite is more modest at bootstrap: 2 vCPU and 2 GB of RAM are enough to start, but move up to 4 GB as soon as the serverless functions run, because each execution launches a container. In both cases: Docker Compose v2 mandatory, a dedicated domain (`api.mydomain.com`), and a reverse proxy handling HTTPS and WebSockets (indispensable for real-time).",{"type":87,"title":88,"steps":89},"steps","Deploy your self-hosted backend",[90,93,96,99,102,105],{"title":91,"body":92},"Get the official stack","For Supabase: `git clone --depth 1 https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase` then copy `docker\u002F.env.example` to `.env`. For Appwrite, installation is done via `docker run` of an init script that generates the `docker-compose.yml` and the `.env`.",{"title":94,"body":95},"Generate and harden the secrets","This is the most critical step. You must regenerate `POSTGRES_PASSWORD`, `JWT_SECRET`, `ANON_KEY` and `SERVICE_ROLE_KEY` for Supabase; the default keys are public. For Appwrite, set `_APP_OPENSSL_KEY_V1` and a strong admin password.",{"title":97,"body":98},"Configure the domain and public URLs","Set `API_EXTERNAL_URL=https:\u002F\u002Fapi.mydomain.com` and `SITE_URL` on the Supabase side, or `_APP_DOMAIN` and `_APP_DOMAIN_TARGET` on the Appwrite side, so that OAuth redirects and email links are correct.",{"title":100,"body":101},"Launch the stack","Run `docker compose up -d`. Watch `docker compose ps`: all services must reach `healthy`. Supabase Studio is served via Kong on port `8000`, the Appwrite interface on the internal `80\u002F443`.",{"title":103,"body":104},"Put Kong\u002FAppwrite behind HTTPS","With Traefik or Caddy, route `api.mydomain.com` to the exposed port and enable WebSocket passthrough (`Upgrade`\u002F`Connection`) for real-time. Force the redirect from HTTP to HTTPS.",{"title":106,"body":107},"Initialize and test","Create your first project\u002Fuser via the Studio (Supabase) or the console (Appwrite), then test auth and a query from a client SDK. Check that the real-time subscriptions properly relay the changes.",{"type":109,"body":110},"tip","For Supabase in production, never store the database on the default Docker volume: mount a dedicated volume and schedule encrypted `pg_dump`s to external storage, because restoring from a corrupted volume is unmanageable. Also enable Row Level Security on all your tables from creation, otherwise your `ANON_KEY` grants full access. On the Appwrite side, limit the function runtime and the number of concurrent execution containers via `_APP_FUNCTIONS_*` to prevent a spike of requests from saturating the VPS.","Your complete backend on a dedicated VPS","Deploy Supabase or Appwrite on a ServOrbit Cloud VPS with Docker, NVMe storage and scalable resources. The preconfigured template saves you the installation step.","Launch my VPS backend","\u002Fvps-cloud",[116,131,145],{"id":117,"slug":118,"title":119,"excerpt":120,"readTime":121,"views":122,"isPinned":13,"publishedAt":123,"category":124,"categories":125,"featuredImage":22,"bgImage":23,"posterImage":127,"relatedSolution":128},4,"coolify-vs-dokploy","Coolify vs Dokploy: which tool should you choose to deploy on your VPS?","A complete Coolify vs Dokploy comparison: features, simplicity, use cases. Which tool should you choose to host and deploy your applications on a VPS?",8,2600,"2026-06-07T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[126],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fcoolify-vs-dokploy-poster.svg",{"categorySlug":129,"appSlug":130},"deploiement","coolify",{"id":132,"slug":133,"title":134,"excerpt":135,"readTime":121,"views":136,"isPinned":13,"publishedAt":137,"category":138,"categories":139,"featuredImage":22,"bgImage":23,"posterImage":141,"relatedSolution":142},93,"n8n-vs-node-red","n8n vs Node-RED: which self-hosted automation tool to choose?","n8n or Node-RED to automate your workflows on a VPS? Technical comparison, Docker prerequisites and self-hosted deployment guide.",641,"2026-03-19T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[140],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fn8n-vs-node-red-poster.svg",{"categorySlug":143,"appSlug":144},"automatisation","n8n",{"id":146,"slug":147,"title":148,"excerpt":149,"readTime":121,"views":150,"isPinned":13,"publishedAt":151,"category":152,"categories":153,"featuredImage":22,"bgImage":23,"posterImage":155,"relatedSolution":156},95,"nextcloud-vs-owncloud","Nextcloud vs ownCloud: which private cloud to host?","Nextcloud or ownCloud for your private cloud on a VPS? Comparison of features, performance, prerequisites and Docker deployment guide.",715,"2026-03-17T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[154],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fnextcloud-vs-owncloud-poster.svg",{"categorySlug":157,"appSlug":158},"self-hosting","nextcloud",1785628462695]