[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-supabase-docker-self-hosting-guide-zh":3,"article-related-supabase-docker-self-hosting-guide-zh":34,"series-tools-f45d93f2-b8a6-45cd-ac56-b4d349df410b":85},{"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":25,"views":30,"created_at":31,"published_at":32,"topic_cluster_id":33},"f45d93f2-b8a6-45cd-ac56-b4d349df410b","supabase-docker-self-hosting-guide-zh","Supabase Docker 自架更實用了","\u003Cp data-speakable=\"summary\">Supabase 的 \u003Ca href=\"\u002Ftag\u002Fdocker\">Docker\u003C\u002Fa> 指南把整套後端搬到自家伺服器，還把安裝、密碼、埠號和更新流程講清楚。\u003C\u002Fp>\u003Cp>這份文件不是在講概念。它直接告訴你，Linux 上 15 分鐘內可以起來，最低要 4 GB RAM、2 核心 CPU、40 GB SSD。說真的，這種寫法比一堆空話實在多了。\u003C\u002Fp>\u003Cp>對台灣開發團隊來說，這很有用。你想要 \u003Ca href=\"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fself-hosting\u002Fdocker\" target=\"_blank\" rel=\"noopener\">Supabase Docker 指南\u003C\u002Fa> 的價值，不是因為它很潮，而是因為它把自架最煩的地方先處理掉。\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>項目\u003C\u002Fth>\u003Cth>數值\u003C\u002Fth>\u003Cth>意義\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>快速啟動時間\u003C\u002Ftd>\u003Ctd>&lt; 15 分鐘\u003C\u002Ftd>\u003Ctd>Linux 上可快速上線\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>最低 RAM\u003C\u002Ftd>\u003Ctd>4 GB\u003C\u002Ftd>\u003Ctd>小型開發或測試可用\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>建議 RAM\u003C\u002Ftd>\u003Ctd>8 GB+\u003C\u002Ftd>\u003Ctd>比較適合正式環境\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>最低 CPU\u003C\u002Ftd>\u003Ctd>2 核心\u003C\u002Ftd>\u003Ctd>足夠跑完整套服務\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>最低磁碟\u003C\u002Ftd>\u003Ctd>40 GB SSD\u003C\u002Ftd>\u003Ctd>放得下服務和資料\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>建議磁碟\u003C\u002Ftd>\u003Ctd>80 GB+ SSD\u003C\u002Ftd>\u003Ctd>比較有成長空間\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>它交出的不是教學，是可直接跑的部署方案\u003C\u002Fh2>\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase\" target=\"_blank\" rel=\"noopener\">Supabase\u003C\u002Fa> 這次給的東西很務實。它把 Postgres、Auth、Storage、Realtime、\u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa> gateway 一起包進 Docker Compose。你不用自己拼 service，也不用先研究一堆零碎設定。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780916611381-kymc.png\" alt=\"Supabase Docker 自架更實用了\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這種做法很像把自架的坑先填掉。真正麻煩的通常不是啟動容器，而是 secrets、\u003Ca href=\"\u002Fnews\u002Fportainer-docker-standalone-upgrade-checklist-zh\">port\u003C\u002Fa>、proxy、健康檢查。文件裡還放了 \u003Ccode>run.sh\u003C\u002Fcode> 這種腳本，目的就是少讓人手動打字出錯。\u003C\u002Fp>\u003Cp>它還把路線分得很清楚。你要快，就走 Linux quick start。你要控管每個檔案，就手動 clone repo。兩條路都能跑，但使用情境完全不同。\u003C\u002Fp>\u003Cul>\u003Cli>Quick start：只支援 Linux，會自動裝依賴\u003C\u002Fli>\u003Cli>手動安裝：有 Git 和 Docker 就能做\u003C\u002Fli>\u003Cli>API gateway 預設 port：8000\u003C\u002Fli>\u003Cli>Supavisor 連線：session mode 5432，transaction mode 6543\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>這份指南最有價值的地方，是把坑先講明白\u003C\u002Fh2>\u003Cp>自架最常死在第一步。不是 Docker 不會跑，是你忘了改密碼、忘了設 URL、或把某個環境變數留成範例值。Supabase 把這些風險直接寫進流程裡，還在 quick start 裡幫你生好 secrets。\u003C\u002Fp>\u003Cp>它不是只丟一份 compose 檔給你。它會先問網站網址、API 網址、登入回呼網址，接著產生 JWT key 和 dashboard 密碼。這些步驟看起來很瑣碎，但實際上就是避免你半夜救火。\u003C\u002Fp>\u003Cp>我覺得這裡最聰明的地方，是它承認不同平台的差異。Linux 是最快路線，macOS 和 Windows 也能手動跑。這比那種「理論上都\u003Ca href=\"\u002Fnews\u002Foracle-oke-kubernetes-support-schedule-zh\">支援\u003C\u002Fa>」的文件好多了。\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>這句話很直白。它不是在吹 Docker，很像在說：別浪費時間自己手刻。對很多團隊來說，這句話其實很中肯。\u003C\u002Fp>\u003Cp>文件也提醒你，預設密碼和 key 只是範例。這點很重要。很多事故不是架構太差，而是大家懶得換掉預設值。\u003C\u002Fp>\u003Ch2>埠號和 URL 配法，決定你之後會不會痛苦\u003C\u002Fh2>\u003Cp>Supabase 的公開入口通常走 8000。這代表你在本機測試時很直覺，但一旦上 VPS 或前面加 reverse proxy，就要把對外網址和內部服務分開看。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780916587323-8u7o.png\" alt=\"Supabase Docker 自架更實用了\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>文件把幾個環境變數拆得很細。\u003Ccode>SUPABASE_PUBLIC_URL\u003C\u002Fcode> 管 dashboard 和 API，\u003Ccode>API_EXTERNAL_URL\u003C\u002Fcode> 給 Auth callback，\u003Ccode>SITE_URL\u003C\u002Fcode> 決定預設轉址。這些名字看起來很像，但用途完全不同。\u003C\u002Fp>\u003Cp>資料庫連線也不是單一路徑。它用 \u003Ca href=\"https:\u002F\u002Fsupavisor.com\" target=\"_blank\" rel=\"noopener\">Supavisor\u003C\u002Fa> 做 pooler，session mode 走 5432，transaction mode 走 6543。你如果連線字串寫錯，問題通常不是資料庫壞掉，而是你接錯層。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>SUPABASE_PUBLIC_URL\u003C\u002Fcode>：dashboard、API、storage 的基底網址\u003C\u002Fli>\u003Cli>\u003Ccode>API_EXTERNAL_URL\u003C\u002Fcode>：Auth callback 用\u003C\u002Fli>\u003Cli>\u003Ccode>SITE_URL\u003C\u002Fcode>：Auth 預設轉址目標\u003C\u002Fli>\u003Cli>\u003Ccode>DASHBOARD_PASSWORD\u003C\u002Fcode>：保護 Studio\u003C\u002Fli>\u003Cli>\u003Ccode>POSTGRES_SECRET\u003C\u002Fcode>：不該外露\u003C\u002Fli>\u003Cli>\u003Ccode>SUPABASE_SECRET_KEY\u003C\u002Fcode>：必須留在伺服器端\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你前面放了 reverse proxy，事情又會再多一層。外部看到的是 HTTPS 和 443，內部還是 Docker network 那套。這種切分沒什麼浪漫，但很實際。\u003C\u002Fp>\u003Cp>Windows 使用者也要小心。文件提到，如果 Kong 出現 entrypoint error，常見原因是 CRLF 換行。這種問題很煩，但至少文件先幫你點出來了。\u003C\u002Fp>\u003Ch2>更新策略比拉最新 image 更重要\u003C\u002Fh2>\u003Cp>這段我覺得最值得管理者看。Supabase 說，各版本是一起測過的。意思很簡單：不要看到 Docker Hub 有新 image 就亂 pull。\u003C\u002Fp>\u003Cp>這跟很多人的直覺相反。大家常以為新就是好，但後端 stack 不是單一容器。Postgres、Auth、Realtime、Storage、gateway 彼此都要對得上。\u003C\u002Fp>\u003Cp>所以它建議你從 repo 套最新變更，再重啟服務。這種模式比較保守，但也比較穩。對正式環境來說，穩通常比快重要。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>sh run.sh start\u003C\u002Fcode> 等同 \u003Ccode>docker compose up -d --wait\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>\u003Ccode>docker compose ps\u003C\u002Fcode> 可看服務是否健康\u003C\u002Fli>\u003Cli>\u003Ccode>sh run.sh logs storage\u003C\u002Fcode> 可單看某個服務\u003C\u002Fli>\u003Cli>\u003Ccode>sh run.sh recreate functions\u003C\u002Fcode> 才會更新 Edge Functions\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這裡也能看出 Supabase 的操作哲學。它不是要你天天追 image，而是要你按版本節奏升級。這對有維運流程的團隊很友善。\u003C\u002Fp>\u003Cp>對小團隊來說，這也代表一件事：你得安排維護窗。別把自架想成裝完就沒事。它只是把責任從平台搬回你手上。\u003C\u002Fp>\u003Ch2>跟其他自架後端比，Supabase 的優勢很直接\u003C\u002Fh2>\u003Cp>如果拿 \u003Ca href=\"https:\u002F\u002Fwww.postgresql.org\u002F\" target=\"_blank\" rel=\"noopener\">PostgreSQL\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhasura\u002Fgraphql-engine\" target=\"_blank\" rel=\"noopener\">Hasura\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fappwrite\u002Fappwrite\" target=\"_blank\" rel=\"noopener\">Appwrite\u003C\u002Fa> 這類方案來比，Supabase 的強項不是單點功能，而是整包整合。你不用自己把資料庫、驗證、檔案、即時通訊和 API gateway 湊起來。\u003C\u002Fp>\u003Cp>Hasura 很強，但它偏向 GraphQL 中心。Appwrite 也完整，但它的抽象層和操作習慣和 Supabase 不一樣。Supabase 比較像把開發者常用的資料後端，直接整理成一個可部署的工作台。\u003C\u002Fp>\u003Cp>和自己從零組 Docker stack 比，Supabase 省掉的是時間，不是複雜度。你還是要懂 port、secret、proxy、備份和升級，只是不用從第一顆螺絲開始鎖。\u003C\u002Fp>\u003Cul>\u003Cli>Supabase：整合度高，適合 SQL 導向團隊\u003C\u002Fli>\u003Cli>Hasura：GraphQL 能力強，但整體後端要自己補\u003C\u002Fli>\u003Cli>Appwrite：功能完整，偏另一套開發習慣\u003C\u002Fli>\u003Cli>純自組 stack：彈性最高，但維運成本也最高\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你的團隊已經很熟 Postgres，Supabase 會比較順手。你不需要先轉換資料模型，也不用為了後端服務再學一套奇怪 DSL。\u003C\u002Fp>\u003Cp>如果你們很在意資料主權，這份 Docker 指南就更有吸引力。至少你知道資料在哪，服務怎麼跑，升級怎麼做。\u003C\u002Fp>\u003Ch2>這份文件透露的，是 Supabase 對自架市場的判斷\u003C\u002Fh2>\u003Cp>我認為這份指南最大的\u003Ca href=\"\u002Fnews\u002Fmicrosoft-openai-split-already-visible-zh\">訊號\u003C\u002Fa>，是 Supabase 沒把自架寫成英雄任務。它把流程縮短、把參數寫死一部分、把常見錯誤提前講出來。這代表它知道很多團隊其實想要的是可落地，不是可炫技。\u003C\u002Fp>\u003Cp>它也反映出一個現實。現在很多團隊都想保留雲端彈性，但又不想把核心資料全交出去。自架方案如果太硬，大家就會放棄。Supabase 這次做的是把門檻壓低。\u003C\u002Fp>\u003Cp>對台灣團隊來說，這很像在說：你可以先用一台便宜 VPS 試跑，再決定要不要上正式環境。先驗證流程，再談規模，這才是比較正常的做法。\u003C\u002Fp>\u003Ch2>先跑一輪，再決定要不要放進正式環境\u003C\u002Fh2>\u003Cp>如果你現在就在評估自架，我會建議先用一台 Linux VM 跑 quick start。先看健康檢查、登入流程、資料庫連線和 reverse proxy 有沒有問題。這四件事過了，才值得往下一步走。\u003C\u002Fp>\u003Cp>別一開始就把它丟進正式環境。先把 4 GB RAM、2 核心、40 GB SSD 這些條件跑過一次，再決定要不要升到 8 GB 以上。這樣比較不會因為一個小設定，讓整套服務卡住。\u003C\u002Fp>\u003Cp>講白了，這份 Docker 指南的價值很明確。它不是要你膜拜 Supabase，而是要你少踩坑。如果你接下來要做的是自架後端，我會先問一句：你準備好照著 repo 的節奏更新了嗎？\u003C\u002Fp>","Supabase 的 Docker 自架指南把整套服務、密碼、埠號和更新流程寫清楚，適合想把後端搬到自家伺服器的團隊。","supabase.com","https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fself-hosting\u002Fdocker",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780916611381-kymc.png","tools","zh","e8ef7289-0643-4567-b316-5c2f5cef5d9f",[17,18,19,20,21,22,23,24],"Supabase","Docker","self-hosting","自架","PostgreSQL","Supavisor","VPS","Linux",[26,27,28,29],"Supabase 的 Docker 指南把自架流程寫得很細，連 secrets、ports 和更新方式都列出來。","Linux quick start 最快，但正式環境還是要自己管升級、proxy 和健康檢查。","Supabase 的版本更新偏向整包同步，不適合隨便追最新 Docker image。","對熟 Postgres 的團隊來說，這是把後端搬回自己手上的實用方案。",0,"2026-06-08T11:02:31.738639+00:00","2026-06-08T11:02:31.719+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":35,"relatedLang":44,"relatedPosts":48},[36,37,39,40,42],{"name":19,"slug":19},{"name":17,"slug":38},"supabase",{"name":20,"slug":20},{"name":21,"slug":41},"postgresql",{"name":18,"slug":43},"docker",{"id":15,"slug":45,"title":46,"language":47},"supabase-docker-self-hosting-guide-en","Supabase’s Docker self-hosting guide gets practical","en",[49,55,61,67,73,79],{"id":50,"slug":51,"title":52,"cover_image":53,"image_url":53,"created_at":54,"category":13},"41f49cc3-fa13-466f-87e5-575cfa2c9fb8","rust-worth-the-hype-2026-right-jobs-zh","Rust 在 2026 年值得追捧，但只適合對的工作","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780921978132-e1b0.png","2026-06-08T12:32:20.943246+00:00",{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":13},"eaafcfeb-80da-44b6-9b20-06e9846d52a5","portainer-docker-standalone-upgrade-checklist-zh","Portainer 升級文把 Docker 更新變清單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780915698308-56pt.png","2026-06-08T10:47:47.228222+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":13},"8a892f4a-7b09-41e6-aca0-c1295694ae58","cursor-teams-pricing-adds-96-premium-seat-zh","Cursor Teams 加推 $96 Premium 座位","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780909379891-7ue2.png","2026-06-08T09:02:25.073041+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":13},"aa52c4a3-9a96-402b-8153-e152f9fd96bc","awesome-ai-summerschool-ai-events-shortlist-zh","Awesome AI Summer School 變短名單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780905804300-zfvf.png","2026-06-08T08:02:46.455036+00:00",{"id":74,"slug":75,"title":76,"cover_image":77,"image_url":77,"created_at":78,"category":13},"2f526e1b-9aa1-4503-9927-31ce0009741c","rustup-rust-official-toolchain-installer-zh","Rustup 是 Rust 官方工具鏈安裝器","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780903080771-8z56.png","2026-06-08T07:17:37.219276+00:00",{"id":80,"slug":81,"title":82,"cover_image":83,"image_url":83,"created_at":84,"category":13},"871c382b-188c-4eb7-a2b6-978e0183f18f","rust-cli-project-5-practical-steps-zh","Rust CLI 天氣工具五步實作","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780898582793-87p5.png","2026-06-08T06:02:31.211769+00:00",[86,91,96,101,106,111,116,121,126,131],{"id":87,"slug":88,"title":89,"created_at":90},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":92,"slug":93,"title":94,"created_at":95},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":97,"slug":98,"title":99,"created_at":100},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":102,"slug":103,"title":104,"created_at":105},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":107,"slug":108,"title":109,"created_at":110},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":112,"slug":113,"title":114,"created_at":115},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":117,"slug":118,"title":119,"created_at":120},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":122,"slug":123,"title":124,"created_at":125},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":127,"slug":128,"title":129,"created_at":130},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":132,"slug":133,"title":134,"created_at":135},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]