[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-supabase-docker-self-hosting-guide-en":3,"article-related-supabase-docker-self-hosting-guide-en":30,"series-tools-e8ef7289-0643-4567-b316-5c2f5cef5d9f":82},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"e8ef7289-0643-4567-b316-5c2f5cef5d9f","supabase-docker-self-hosting-guide-en","Supabase’s Docker self-hosting guide gets practical","\u003Cp data-speakable=\"summary\">Supabase’s \u003Ca href=\"\u002Ftag\u002Fdocker\">Docker\u003C\u002Fa> guide explains how to run the full stack on your own server.\u003C\u002Fp>\u003Cp>Supabase says the Docker setup can get you running in less than 15 minutes on supported Linux systems, and the default stack expects at least 4 GB of RAM, 2 CPU cores, and 40 GB of SSD storage. That makes this guide useful for teams that want the control of self-hosting without stitching together every service by hand.\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Item\u003C\u002Fth>\u003Cth>Value\u003C\u002Fth>\u003Cth>Why it matters\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>Quick-start time\u003C\u002Ftd>\u003Ctd>&lt; 15 minutes\u003C\u002Ftd>\u003Ctd>Fast path for Linux users\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Minimum RAM\u003C\u002Ftd>\u003Ctd>4 GB\u003C\u002Ftd>\u003Ctd>Enough for small production or dev use\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Recommended RAM\u003C\u002Ftd>\u003Ctd>8 GB+\u003C\u002Ftd>\u003Ctd>Better fit for heavier workloads\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Minimum CPU\u003C\u002Ftd>\u003Ctd>2 cores\u003C\u002Ftd>\u003Ctd>Baseline for the full stack\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Minimum disk\u003C\u002Ftd>\u003Ctd>40 GB SSD\u003C\u002Ftd>\u003Ctd>Space for services and data\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Recommended disk\u003C\u002Ftd>\u003Ctd>80 GB+ SSD\u003C\u002Ftd>\u003Ctd>More room for growth\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>What Supabase is really shipping here\u003C\u002Fh2>\u003Cp>The \u003Ca href=\"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fself-hosting\u002Fdocker\" target=\"_blank\" rel=\"noopener\">Supabase Docker guide\u003C\u002Fa> is a practical deployment recipe, not a high-level overview. It bundles the core services, the \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa> gateway, authentication, storage, realtime, and database access into a stack that can run on a VPS or a local machine.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780916582916-5t5w.png\" alt=\"Supabase’s Docker self-hosting guide gets practical\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>That matters because self-hosting usually fails in the glue code: secrets, ports, reverse proxies, and service health checks. Supabase tries to remove that friction by shipping a ready-made Docker Compose setup inside the main repository and wrapping common actions in scripts like \u003Ccode>run.sh\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>The guide also makes a clear tradeoff. If you want the fastest path, use the Linux quick start. If you want control over every file and every variable, clone the repo and set it up manually. Both routes point to the same stack, but they serve different kinds of operators.\u003C\u002Fp>\u003Cul>\u003Cli>Quick start: Linux only, with automated installs and generated secrets\u003C\u002Fli>\u003Cli>Manual install: works on any OS with Git and Docker\u003C\u002Fli>\u003Cli>Default API gateway port: 8000\u003C\u002Fli>\u003Cli>Postgres access through Supavisor: 5432 for session mode, 6543 for transaction mode\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>The setup flow is opinionated for a reason\u003C\u002Fh2>\u003Cp>Supabase’s quick-start script does a lot in one pass. It installs prerequisites, clones the Docker config, creates a project directory, asks for your URLs, generates keys, and pulls images. That reduces the chance that someone starts a stack with placeholder values or half-finished config.\u003C\u002Fp>\u003Cp>The manual path is more explicit. You clone the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase\" target=\"_blank\" rel=\"noopener\">Supabase repository\u003C\u002Fa>, copy the Docker files into your own project folder, and then pull the images yourself. That extra work is useful if you want to inspect the files, run on macOS or Windows, or keep the deployment process under tight change control.\u003C\u002Fp>\u003Cblockquote>“Docker is the easiest way to get started with self-hosted Supabase.” — \u003Ca href=\"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fself-hosting\u002Fdocker\" target=\"_blank\" rel=\"noopener\">Supabase Docs\u003C\u002Fa>\u003C\u002Fblockquote>\u003Cp>The docs also call out a detail that many teams miss on first run: the default example passwords and keys are placeholders only. Supabase wants you to generate fresh secrets before starting the stack, and the quick-start script does that for you automatically.\u003C\u002Fp>\u003Cp>That includes a random dashboard password and the JWT signing key pair used by Auth. In other words, the setup is trying to solve the boring but dangerous parts of self-hosting before they become an incident.\u003C\u002Fp>\u003Ch2>Ports, URLs, and access paths tell you how the stack is wired\u003C\u002Fh2>\u003Cp>Supabase exposes most services through the same API gateway, usually on port 8000. The docs map the public URL, auth callback URL, and site URL into separate environment variables, which is a small detail with big consequences when you move from localhost to a VPS or a reverse proxy.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780916586523-7d5k.png\" alt=\"Supabase’s Docker self-hosting guide gets practical\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>For database access, the self-hosted stack uses \u003Ca href=\"https:\u002F\u002Fsupavisor.com\" target=\"_blank\" rel=\"noopener\">Supavisor\u003C\u002Fa> as the connection pooler. You can connect in session mode on port 5432 or transaction mode on port 6543, and the tenant-specific username format matters when you use \u003Ccode>psql\u003C\u002Fcode>.\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>SUPABASE_PUBLIC_URL\u003C\u002Fcode> controls the base URL for the dashboard, API, and storage\u003C\u002Fli>\u003Cli>\u003Ccode>API_EXTERNAL_URL\u003C\u002Fcode> feeds Auth callback URLs\u003C\u002Fli>\u003Cli>\u003Ccode>SITE_URL\u003C\u002Fcode> sets the default redirect target for Auth\u003C\u002Fli>\u003Cli>\u003Ccode>DASHBOARD_PASSWORD\u003C\u002Fcode> protects Studio with HTTP basic auth\u003C\u002Fli>\u003Cli>\u003Ccode>POSTGRES_SECRET\u003C\u002Fcode> is not exposed, while \u003Ccode>SUPABASE_SECRET_KEY\u003C\u002Fcode> must stay server-side\u003C\u002Fli>\u003C\u002Ful>\u003Cp>That structure also explains why reverse proxies matter. If you terminate TLS at the proxy, the public-facing URL changes from plain HTTP on port 8000 to HTTPS on port 443, while the internal service layout stays the same.\u003C\u002Fp>\u003Cp>There is a small but important warning for Docker users on Windows too: if Kong fails with an entrypoint error, the files may have CRLF line endings instead of LF. Supabase says a fresh clone should already use LF because of \u003Ccode>.gitattributes\u003C\u002Fcode>, which saves some painful debugging.\u003C\u002Fp>\u003Ch2>Updates are tied to the repo, not Docker Hub hype\u003C\u002Fh2>\u003Cp>This is the part administrators should read twice. Supabase says the versions in each release are tested together, which means the official stack can lag behind the newest images on Docker Hub. If you want to update, the docs tell you to apply the latest changes from the repository and restart the services.\u003C\u002Fp>\u003Cp>That is a very different model from “pull the newest image and hope.” It trades a little speed for coordination across the whole stack, which matters when Postgres, Auth, Realtime, Storage, and the gateway all have to agree on interfaces and config.\u003C\u002Fp>\u003Cp>The docs also separate starting, stopping, and recreating services. A plain restart is fine for many containers, but Edge Functions need a force recreation to pick up code changes. That distinction is easy to miss if you treat every container the same.\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>sh run.sh start\u003C\u002Fcode> is equivalent to \u003Ccode>docker compose up -d --wait\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>\u003Ccode>docker compose ps\u003C\u002Fcode> should show services as healthy after startup\u003C\u002Fli>\u003Cli>\u003Ccode>sh run.sh logs storage\u003C\u002Fcode> helps inspect one service at a time\u003C\u002Fli>\u003Cli>\u003Ccode>sh run.sh recreate functions\u003C\u002Fcode> is required for function updates\u003C\u002Fli>\u003C\u002Ful>\u003Cp>For teams running this in production, that update model is probably the most important operational signal in the guide. It says Supabase wants predictable releases more than image churn, and that should shape how you schedule maintenance windows.\u003C\u002Fp>\u003Ch2>What this means for teams choosing self-hosted Supabase\u003C\u002Fh2>\u003Cp>The guide is less about “can you run Supabase in Docker” and more about “can you run it without guessing.” The answer is yes, if you accept the constraints: Linux is the smoothest path, 8 GB of RAM is a better target than the bare minimum, and updates should come from the repo rather than random image pulls.\u003C\u002Fp>\u003Cp>For a small team, that is a fair deal. You get a full backend stack with a documented startup path, known ports, explicit secrets, and a clean split between quick start and manual setup. For larger deployments, the real question is whether you want to keep operating within Supabase’s release cadence or build your own forked deployment process.\u003C\u002Fp>\u003Cp>My read is simple: if you are evaluating self-hosted Supabase for the first time, start with the quick-start script on a disposable Linux VM and verify the health checks, credentials, and proxy setup before moving to production. If that works cleanly, the next decision is whether your team wants to own updates from the repo on a schedule, or keep the managed platform for the parts of the stack you do not want to babysit.\u003C\u002Fp>\u003C\u002Fh2>","Supabase’s Docker guide shows how to run the stack locally or on a server, with setup scripts, secrets, and ports spelled out.","supabase.com","https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fself-hosting\u002Fdocker",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780916582916-5t5w.png","tools","en","f45d93f2-b8a6-45cd-ac56-b4d349df410b",[17,18,19,20,21],"Supabase","Docker","self-hosting","Postgres","Docker Compose",[23,24,25],"The quick-start script can set up Supabase on supported Linux distros in under 15 minutes.","The default stack needs at least 4 GB RAM, 2 CPU cores, and 40 GB of SSD storage.","Supabase warns that release-tested images may lag behind Docker Hub, so updates should come from the repo.",0,"2026-06-08T11:02:32.314917+00:00","2026-06-08T11:02:32.296+00:00","a7343b93-37cc-4634-a2bc-707f6275bdb6",{"tags":31,"relatedLang":41,"relatedPosts":45},[32,34,36,37,39],{"name":20,"slug":33},"postgres",{"name":21,"slug":35},"docker-compose",{"name":19,"slug":19},{"name":17,"slug":38},"supabase",{"name":18,"slug":40},"docker",{"id":15,"slug":42,"title":43,"language":44},"supabase-docker-self-hosting-guide-zh","Supabase Docker 自架更實用了","zh",[46,52,58,64,70,76],{"id":47,"slug":48,"title":49,"cover_image":50,"image_url":50,"created_at":51,"category":13},"38d3abd2-573b-4755-b9b7-b149bf7bb899","rust-worth-the-hype-2026-right-jobs-en","Rust is worth the hype in 2026, but only for the right jobs","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780921974191-8fed.png","2026-06-08T12:32:21.456662+00:00",{"id":53,"slug":54,"title":55,"cover_image":56,"image_url":56,"created_at":57,"category":13},"4fb85167-2ea8-49c7-bc45-6f94b51526a6","portainer-docker-standalone-upgrade-checklist-en","Portainer’s upgrade doc turns Docker updates into a checklist","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780915699932-pr2l.png","2026-06-08T10:47:47.814734+00:00",{"id":59,"slug":60,"title":61,"cover_image":62,"image_url":62,"created_at":63,"category":13},"99bfce29-7722-4619-9537-0c94c15ad5fc","cursor-teams-pricing-adds-96-premium-seat-en","Cursor Teams pricing adds $96 Premium seat","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780909376960-n787.png","2026-06-08T09:02:25.546066+00:00",{"id":65,"slug":66,"title":67,"cover_image":68,"image_url":68,"created_at":69,"category":13},"a0ebdaf9-3a82-4c5a-9af6-d66ccc860e5e","awesome-ai-summerschool-ai-events-shortlist-en","awesome-ai-summerschool turns AI events into a shortlist","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780905814274-elcy.png","2026-06-08T08:02:47.048945+00:00",{"id":71,"slug":72,"title":73,"cover_image":74,"image_url":74,"created_at":75,"category":13},"071a2cea-17a5-4c4a-87cc-0d20ed20cbbd","rustup-rust-official-toolchain-installer-en","Rustup is Rust’s official toolchain installer","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780903081166-cox8.png","2026-06-08T07:17:37.744868+00:00",{"id":77,"slug":78,"title":79,"cover_image":80,"image_url":80,"created_at":81,"category":13},"736107e8-43ea-4213-b251-b1bbce64a7f2","rust-cli-project-5-practical-steps-en","Rust CLI Project in 5 Practical Steps","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780898582667-xfn1.png","2026-06-08T06:02:31.670073+00:00",[83,88,93,98,103,108,113,118,123,128],{"id":84,"slug":85,"title":86,"created_at":87},"8008f1a9-7a00-4bad-88c9-3eedc9c6b4b1","surepath-ai-mcp-policy-controls-en","SurePath AI's New MCP Policy Controls Enhance AI Security","2026-03-26T01:26:52.222015+00:00",{"id":89,"slug":90,"title":91,"created_at":92},"27e39a8f-b65d-4f7b-a875-859e2b210156","mcp-standard-ai-tools-2026-en","MCP Standard in 2026: Integrating AI Tools","2026-03-26T01:27:43.127519+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"165f9a19-c92d-46ba-b3f0-7125f662921d","rag-2026-transforming-enterprise-ai-en","How RAG in 2026 is Transforming Enterprise AI","2026-03-26T01:28:11.485236+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"6a2a8e6e-b956-49d8-be12-cc47bdc132b2","mastering-ai-prompts-2026-guide-en","Mastering AI Prompts: A 2026 Guide for Developers","2026-03-26T01:29:07.835148+00:00",{"id":104,"slug":105,"title":106,"created_at":107},"3ab2c67e-4664-4c67-a013-687a2f605814","garry-tan-open-sources-claude-code-toolkit-en","Garry Tan Open-Sources a Claude Code Toolkit","2026-03-26T08:26:20.245934+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"66a7cbf8-7e76-41d4-9bbf-eaca9761bf69","github-ai-projects-to-watch-in-2026-en","20 GitHub AI Projects to Watch in 2026","2026-03-26T08:28:09.752027+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"9f332fda-eace-448a-a292-2283951eee71","practical-github-guide-learning-ml-2026-en","A Practical GitHub Guide to Learning ML in 2026","2026-03-27T01:16:50.125678+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"1b1f637d-0f4d-42bd-974b-07b53829144d","aiml-2026-student-ai-ml-lab-repo-review-en","AIML-2026 Is a Bare-Bones Student Lab Repo","2026-03-27T01:21:51.661231+00:00",{"id":124,"slug":125,"title":126,"created_at":127},"6d1bf3f6-e191-4d30-b55b-8a0722fa6afe","ai-trending-github-repos-and-research-feeds-en","AI Trending Tracks Repos and Research Feeds","2026-03-27T01:31:35.709532+00:00",{"id":129,"slug":130,"title":131,"created_at":132},"010539a1-4c3a-4bd3-937a-26616422ee0d","awesome-ai-for-science-research-tools-map-en","Awesome AI for Science Is Becoming a Real Research Map","2026-03-27T01:46:50.89513+00:00"]