[{"data":1,"prerenderedAt":158},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-supabase-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},60,"heberger-supabase-vps","Hosting Supabase on a VPS","Self-host Supabase on your Cloud VPS: Postgres, Auth, Storage, and a REST API in one Docker stack, compared to Appwrite.",9,2960,false,"2026-04-21T00: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-supabase-vps-poster.svg",{"categorySlug":18,"appSlug":27},"supabase","Supabase is the open source alternative to Firebase built on PostgreSQL: database, authentication, storage, edge functions, and an auto-generated API. Self-hosting it on a VPS gives you a complete self-hosted backend, with no project cap or usage-based billing, with your data in your own Postgres.",[30,34,44,47,69,109],{"type":31,"title":32,"body":33},"h2","Why self-host Supabase on a VPS","Supabase is not a black box: it's a set of open source services (PostgreSQL, GoTrue for auth, PostgREST for the API, Realtime, Storage, Kong as the gateway) orchestrated together. The cloud version bills per project and per active user, and pauses inactive free projects. By self-hosting on a VPS, you get a complete backend-as-a-service without these limits, with direct access to your PostgreSQL for migrations, extensions (`pgvector`, `PostGIS`), and tuning. It's ideal for an agency hosting several client apps, a startup SaaS wanting to control its costs, or any project requiring data sovereignty. You handle updates and backups yourself, in exchange for total freedom.",{"type":35,"title":36,"items":37},"ul","The concrete benefits of a self-hosted Supabase",[38,39,40,41,42,43],"Complete backend: Postgres database, Auth, Storage, Realtime, and REST\u002FGraphQL API in one stack.","Direct access to the underlying PostgreSQL: SQL migrations, extensions, and RLS policies without limit.","No pausing and no billing per monthly active user.","Studio included: a web administration interface to manage tables, auth, and buckets.","AI extensions via `pgvector` for RAG and semantic search, enabled freely.","Multiple projects on a single VPS: convenient for an agency or a development studio.",{"type":31,"title":45,"body":46},"Hardware and software prerequisites","Self-hosted Supabase launches around a dozen containers (Postgres, Kong, GoTrue, PostgREST, Realtime, Storage, Studio, Meta, Imgproxy...), so it's a more demanding stack than a simple database. Count on a minimum of 2 vCPU and 4 GB of RAM for a test environment, and rather 4 vCPU with 8 GB of RAM and 80 GB of SSD for production. On the software side: Ubuntu 22.04\u002F24.04 LTS, Docker and Docker Compose v2, a domain name pointing to the VPS (e.g., `api.mysaas.com`) to expose the gateway over HTTPS, and a reverse proxy like Caddy, Traefik, or Nginx to handle SSL. Also plan to generate robust secrets (`JWT_SECRET`, `anon` and `service_role` keys).",{"type":48,"title":49,"steps":50},"steps","Deploying self-hosted Supabase with Docker",[51,54,57,60,63,66],{"title":52,"body":53},"Clone the official repository and prepare the environment","Get the `docker` folder from the Supabase repository, copy `.env.example` to `.env`, then generate unique secrets: `POSTGRES_PASSWORD`, `JWT_SECRET`, and the `ANON_KEY` \u002F `SERVICE_ROLE_KEY` keys derived from the JWT. Never deploy with the example values.",{"title":55,"body":56},"Configure the URLs and the Studio password","In `.env`, set `SITE_URL`, `API_EXTERNAL_URL`, and `SUPABASE_PUBLIC_URL` with your domain, and protect Supabase Studio with `DASHBOARD_USERNAME` and `DASHBOARD_PASSWORD`: the Studio gives full admin access to your project.",{"title":58,"body":59},"Launch the stack","Start with `docker compose up -d`, then follow the services' startup via `docker compose ps`. The first Postgres initialization and the application of internal migrations take one to two minutes; check for the absence of errors in `docker compose logs`.",{"title":61,"body":62},"Set up a reverse proxy with SSL","Put Caddy or Traefik in front of Kong (the gateway's port 8000) to expose your API over HTTPS. Caddy automatically obtains and renews Let's Encrypt certificates: a simple `mysaas.com { reverse_proxy localhost:8000 }` block is enough. Never expose Postgres (5432) publicly.",{"title":64,"body":65},"Enable RLS policies","Log in to the Studio, create your tables, then enable Row Level Security on each one and define your policies. Without RLS, your `anon` key exposes all your data: this is the number one security point of a self-hosted Supabase.",{"title":67,"body":68},"Back up Postgres and the Storage","Schedule a daily `pg_dump` of the database and archive the Storage volume (file buckets) to external storage. Test a full restore on a staging VPS before relying on it in production.",{"type":70,"title":71,"headers":72,"rows":76},"comparison","Supabase vs Appwrite: which self-hosted BaaS to choose?",[73,74,75],"Criterion","Supabase","Appwrite",[77,81,85,89,93,97,101,105],[78,79,80],"Database","Native PostgreSQL, full SQL","MariaDB internally, document\u002Fcollection API",[82,83,84],"Data model","Relational, Postgres RLS","Documents and collections, rule-based permissions",[86,87,88],"Auto-generated API","REST (PostgREST) + GraphQL","REST, GraphQL, and multiple SDKs",[90,91,92],"Authentication","GoTrue, OAuth, magic links","Built-in Auth, OAuth, teams, JWT",[94,95,96],"Resource footprint","Heavier (~10 containers)","Moderate, more compact stack",[98,99,100],"Vector \u002F AI search","Native via pgvector","Not native, must be externalized",[102,103,104],"Ideal for","Relational apps, RAG, advanced SQL","Document-oriented mobile\u002Fweb apps",[106,107,108],"Learning curve","Comfortable if you know SQL","Fast for front-end\u002Fmobile developers",{"type":110,"body":111},"tip","Update Supabase with caution: since the images are versioned in the `docker-compose.yml`, always take a full `pg_dump` and a VPS snapshot before a `docker compose pull && docker compose up -d`. Some version upgrades touch the internal schema of the services. For production, isolate Postgres on a dedicated high-IOPS volume and enable `pgvector` from the start if you plan on semantic search: adding it later requires a schema migration.","Self-host your Supabase backend","The ServOrbit Cloud VPS with a preconfigured Docker template and generous RAM hosts the entire Supabase stack: Postgres, Auth, Storage, and API, over HTTPS.","Launch 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",1785628447566]