匯出與自行託管
把你的應用程式帶離平台:下載原始碼、在本機運行,並把後端遷移到你自己的 Supabase 專案。
你的應用程式不會被鎖定在 MeDo。你可以下載完整原始碼,在自己的基礎設施上運行。
甚麼時候需要這樣做
- 出於合規或公司政策,你需要在自己的伺服器上託管。
- 有開發者接手專案,希望放進自己的程式碼庫。
- 你想在平台生成的基礎上繼續開發。
- 你要把專案交給希望擁有一切的客戶。
如果以上都不適用,留在 MeDo 更簡單:託管、後端和更新都由平台代你處理。
成本與所需投入
每次下載需要 300 積分。除此之外,自行託管意味着你要接手 MeDo 原本負責的部分:準備資料庫、部署函式、管理密鑰,以及託管前端。首次遷移請預留一小時,並預期需要使用終端機。
注意: 如果你的應用程式是純前端、沒有儲存資料,只需完成第 1 至 4 節,然後按第 9 節在本機運行即可。如果應用程式會儲存資料,請走完整個流程,在自己的 Supabase 專案上重建結構。
1. 下載內容包含與不包含甚麼
你從 Download Code(下載程式碼) 取得的 ZIP 包含後端的結構與函式程式碼——不含資料、不含檔案、不含密鑰。這決定了遷移需要做哪些事。
注意:
.env中的 URL 和 anon key 指向 MeDo 託管的後端。如果不替換,你的本機應用程式仍會連到平台,而不是你自己的資料庫。遷移的核心就是「重建結構,然後換掉這兩個值」。
2. 下載應用程式程式碼
- 在編輯器中打開應用程式。下載是 Pro 和 Max 的功能,並且需要一次已完成的生成——請等待生成結束。
- 點擊頂欄的 Download Code 圖示(在你的積分餘額左側)。彈出視窗會說明套件包含一個
README.md,方便後續開發。 - 點擊 Download Code 確認。下載需要 300 積分。

你會取得目前正在編輯的版本。如果你在 Edit 模式或 Code 檢視中更改了字型、顏色或內容,請先發佈,讓套件包含這些變更。
3. 解壓原始碼
解壓下載的套件並進入目錄:
典型結構如下:
注意: 如果存在
schema.sql,請使用它(第 5 節,完整匯入)。如果沒有,執行supabase db push套用遷移。
4. 準備工具
你可以使用 VSCode、IntelliJ IDEA 或任何你喜歡的 IDE 編輯程式碼。要運行和遷移應用程式,你需要三個工具:Node.js 20 或更新版本、Supabase CLI 和 psql(Postgres 客戶端)。
在 macOS 上使用 Homebrew:
注意:
libpq是 keg-only。如果psql仍提示「command not found」,用echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc把它加到 PATH,然後重新打開終端機。
在 Windows 上,安裝 Node.js LTS、透過 Scoop 安裝 Supabase CLI(scoop install supabase),以及 PostgreSQL(包含 psql)。下面的指令完全相同;只有 export PATH=... 那一行是 macOS 專用。
在 Linux 上,安裝 Node 20 或更新版本、從發行版二進位檔安裝 Supabase CLI,並透過套件管理器安裝 psql(例如 sudo apt install postgresql-client)。
確認三者都能輸出版本號:
注意: 如果你的應用程式是純前端、沒有後端,請直接跳到第 9 節,現在就在本機運行。Supabase 相關步驟(第 5 至 8 節)只適用於有後端資料儲存的應用程式。
5. 建立你自己的 Supabase 專案
如果你還沒有 Supabase 帳戶
前往 https://supabase.com,點擊 Start your project,用 GitHub 或電郵註冊(免費)。Free 方案足以遷移一個 MeDo 應用程式。

注意: Free 方案最多同時允許 2 個活躍專案。如果你已有 2 個,請先暫停其中一個,否則無法建立新專案。
建立專案
在組織首頁點擊 New project 並填寫:
- Project name,例如
taskflow-migrate - Database password:點擊 Generate a password 生成強密碼,並務必複製保存(匯入 schema 時需要;遺失的話只能重設)
- Region:選擇離你的使用者最近的區域

點擊 Create new project,等待一至兩分鐘完成佈建。

收集四個憑證
前往 Project Settings,記下以下內容。後續每一步都會用到。
注意: anon key 在設計上就是公開的(由 RLS 保護),可以放進前端的
.env。service_role / secret key 是完全存取權限的密鑰——絕不要放進前端或提交到 git。
6. 匯入資料庫結構
使用第 5 節的資料庫連接字串,把 schema.sql 載入新資料庫。字串格式類似 postgresql://postgres:<your-DB-password>@db.<project-ref>.supabase.co:5432/postgres。
注意: MeDo 的
schema.sql使用防禦性語法(CREATE TABLE IF NOT EXISTS、以DO $$ ... EXECUTE包裹的 storage 政策、帶ON CONFLICT DO UPDATE的 bucket),所以匯入全新專案時不會產生衝突。
如果沒有 schema.sql,改為透過 CLI 套用遷移:
驗證匯入結果
你也可以直接在 Supabase Table Editor 中看到已遷移的資料表。

7. 部署 Edge Functions 並設定 Secrets
先檢查套件中是否有函式:
如果沒有函式(許多應用程式只用 anon 加 RLS,沒有伺服器端函式),跳過本節。
如果有函式,部署它們並重新設定 secrets:
注意: 函式的 secrets 不在原始碼套件中,必須手動重新設定:第三方 API 密鑰,以及函式內部引用的任何
SUPABASE_SERVICE_ROLE_KEY。
8. 遷移資料(可選)
此步驟需要來源資料庫(MeDo 託管的 Supabase)的連接字串。一般使用者通常沒有來源的直接存取權限,這種情況下資料無法自動遷移——只能重新運行應用程式產生資料,或請平台協助匯出。新建立的應用程式沒有資料,可以跳過。
如果你能連到來源資料庫:
確認核心資料表的 select count(*) 在來源和目標之間一致。
9. 替換 .env 並在本機運行
編輯專案根目錄的 .env,把 URL 和 anon key 換成你自己專案的值(第 5 節收集的)。變數前綴取決於框架,請檢查 .env 中現有的名稱:
編輯後,.env 大致如下:
安裝依賴並啟動開發伺服器:
注意: 不要使用
npm run dev。MeDo 把package.json中的dev和build腳本替換成佔位的echo,所以它們不會做任何事。請改用npx vite。
打開終端機顯示的網址(例如 http://127.0.0.1:5173/);應該能看到首頁。

停用電郵確認
新的 Supabase 專案預設啟用電郵確認,所以註冊後需要先收確認電郵才能登入。為方便本機測試,先把它關掉:在控制台前往 Authentication → Sign In / Providers → Email,關閉 Confirm email 並儲存。
注意: 停用確認(以及下面的 admin API 捷徑)只適用於本機測試。上線前請重新開啟 Confirm email,讓真實使用者驗證電郵地址。
Free 方案還有電郵發送速率限制。如果停用確認後仍遇到 email rate limit exceeded,用 service key 透過 admin API 建立一個已預先確認的使用者:
確認資料寫入你的資料庫
在應用程式中註冊或登入並建立一條記錄,然後查詢資料庫:
登入後你會進入工作區,資料來自你自己的 Supabase。

三個資料表都返回對應的記錄,證明整條鏈路——註冊、由觸發器建立的 profile、業務寫入——都落到了你自己的 Supabase。
10. 常見問題
11. 遷移檢查清單
- 工具就緒:
supabase、psql、node20 或更新版本 - 下載並解壓原始碼,確認
supabase/schema.sql存在 - 建立你自己的 Supabase 專案,保存資料庫密碼
- 收集四個憑證:URL、anon key、資料庫連接字串、service key
- 執行
psql -f supabase/schema.sql,驗證資料表、RLS 和觸發器 - 如有函式,部署並設定 secrets(否則跳過)
- 如需資料,進行遷移(僅在能連到來源資料庫時,否則跳過)
- 替換
.env中的 URL 和 anon key - 停用 Confirm email
- 執行
pnpm install和npx vite,然後註冊、登入並建立資料 - 查詢資料庫,確認資料落到你自己的 Supabase