2026 年 10 月 17 日更新

Zeabur 搬家指南:先止血,再搬家

Zeabur 宣布 12 月 31 日全面停止營運,共享叢集 12 月 1 日就會暫停。 先說一句:謝謝 Zeabur 這幾年讓台灣開發者可以用中文、用熟悉的介面把東西部署上線。 我們同樣在做基礎設施,知道這條路有多難。

接下來六週大家手上的服務要搬家。這一頁分三段:今天就該做的止血清單、不管搬去哪都適用的搬家順序、以及搬到 Containarium 長什麼樣。 前兩段跟我們沒有關係,直接拿去用。

今天

換掉所有秘密

兩次事件都外洩了環境變數,key 在外面已經在被用了。

12 月 1 日

共享叢集暫停

專用伺服器同日停止續費,依各自到期日關機。

12 月 31 日

全面關閉

資料刪除日與最後匯出期限尚未公布。不要等到這天。

第一段

先止血:今天就做,和搬去哪無關

8 月 27 日那次外洩了專案的環境變數;10 月 14 日那次攻擊者拿到共享叢集的管理權限,直接在使用者容器裡執行指令,並讀取了平台資料庫。 只要你的 key 還在外面能用,它就是最緊急的事。照這個順序做:

  1. 1

    AI key 先撤銷重發

    OpenAI、Anthropic、Gemini、OpenRouter 全部 revoke 再重發,並查 10 月 14 日之後的用量。這些 key 已經被觀察到在外面被盜用,是最先失血的地方。

  2. 2

    其他第三方 key

    AWS、Stripe、SMTP、OAuth client secret、webhook secret。換 webhook secret 的同時要更新接收端。

  3. 3

    資料庫密碼要在資料庫裡面改

    先在 Postgres / MySQL / Redis 內部改密碼,再更新環境變數,再重啟每一個連它的服務。只改環境變數,資料庫本身什麼都沒變。

  4. 4

    應用程式秘密

    所有 *_SECRET 與 JWT_SECRET。換 JWT_SECRET 會把所有使用者登出,先公告再換。

  5. 5

    n8n:順序錯了 credential 全部讀不出來

    先匯出所有 workflow,再動 N8N_ENCRYPTION_KEY。只換金鑰不匯出,既有 credential 會變成一堆解不開的密文。底層的服務憑證各自去原服務輪替,然後在新的 n8n 重建。

  6. 6

    關掉不需要對外的資料庫

    Postgres、Redis 若沒有外部系統直連,把 public access 關掉。關之前先確認真的沒有人在連。

  7. 7

    平台帳號本身

    重新產生 Zeabur API token 與 zSend / Email key。有 Google Cloud 專用伺服器的人,改 root 密碼並清掉不認識的 SSH key。

  8. 8

    留證據

    每個 key、每個服務的每日用量與帳單截圖留下來。餘額退款與資安賠償要分開申請,用量紀錄不一定會留很久。

第二段

搬家順序:不管搬去哪都適用

這段沒有任何一步需要 Containarium。搬去 Render、Fly、自己租 VM 都一樣。

步驟 會踩到的坑
1. 確認每個服務的到期日 專用伺服器是各自到期就關,不是統一 12/31。先排出最早關的那一台。
2. 資料庫 dump 並三重核對 row count 從統計值來的不可靠;row count 一樣內容不一定一樣。對幾張關鍵表的 content hash。Postgres 大版本換了掛載路徑會進 restart loop。
3. 上傳的檔案另外搬 volume 裡的檔案不在 DB dump 裡。n8n 的 community node 也不在 dump 裡。
4. 環境變數全部抄一份 Zeabur 自動注入的 ${ZEABUR_*} 搬過去會變空字串。NEXT_PUBLIC_* 這類是 build time 固定的,要在 build 之前設好。
5. 新網址先測通 用一個新 subdomain 把整條業務流程走一遍,不要直接切正式網域。
6. 憑證與 DNS Cloudflare 橘雲開著 Let's Encrypt 會驗證失敗,先轉 DNS only。切之前把 TTL 調低。
7. 切換 舊端停寫入、再 dump 一次、核對、切 DNS。舊的留一週當 rollback。
8. 切完之後 確認告警真的會送、備份任務真的有在跑、auto-deploy 沒有被新防火牆擋掉。備份不要只留在同一台機器上。

坑的清單整理自台灣社群這幾天公開的搬家經驗,以及 Zeabur 官方狀態頁。若發現有誤或有新的坑, 開 issue 告訴我們,我們會更新這頁。

第三段

為什麼不只是換一家 PaaS

這次事件最痛的一點:一組共享叢集的管理權限外洩,所有租戶的容器一起被進去。 這不只是一家公司的問題,是「大家擠在同一個叢集、由平台持有所有鑰匙」這個架構的問題。 Containarium 一開始就選了另一條路。

PaaS 共享叢集的作法

  • 你的服務是叢集裡的一個容器,旁邊是別人的。
  • 平台持有一組能進所有容器的管理權限。
  • 環境變數放在平台資料庫裡,平台被讀就是全部被讀。
  • 你不知道自己的資料、秘密、設定實際存在哪裡。
  • 平台結束營運,你得在六週內把東西「挖」出來。

Containarium 的作法

  • 每個人一台自己的 box:ssh 進去是一台完整 Linux,有 systemd、有 docker compose、有 root。
  • 租戶之間網路隔離,你持有的是只開給自己 box 的 SSH key,不是平台管理權限。
  • 秘密與備份是你的:secrets 可匯出,備份用你自己的金鑰加密,存到你指定的地方。
  • 主機在台灣(GCP asia-east1),不用繞東京。
  • 整個平台 Apache 2.0 開源:同一套 CLI,拉一台 Ubuntu VM 五分鐘自己架。

平台哪天不在了,你的東西還在你手上:程式碼在你的 git、資料在你的備份、秘密在你能匯出的地方、網域在你的註冊商。 搬家變成「重新部署、切 DNS」,而不是「從一個快關門的平台把資料挖出來」。

我們不會跟你說的話

  • ・我們沒有「一鍵部署 n8n」的模板市集。你拿到的是一台主機和 docker compose,這是刻意的。
  • ・託管在共享主機上的 box,與同一台主機上的其他租戶共用主機核心。如果你剛被共享叢集燙到,請改用獨立的 box,或直接自架。
  • ・我們是一家台灣的小公司。能承諾的是開源、你的資料你帶得走,不是永遠不會出事。

實際怎麼搬:n8n + Postgres 為例

下面是用 Containarium Cloud 的流程。自架 OSS 的話指令一模一樣,只是第 0 步多一行安裝。

  1. 1

    開一台 box

    在 Cloud 建立,或用 CLI。拿到一個 ssh 別名。

  2. 2

    ssh 進去,把原本的 compose 跑起來

    Zeabur 上的服務本來就是容器,大多可以直接寫成 compose。

  3. 3

    把 dump 灌回去

    pg_restore 進新的 Postgres,照第二段核對。

  4. 4

    掛上網域

    expose-port 之後 HTTPS 憑證自動簽發。先用新 subdomain 測,再切正式網域。

  5. 5

    秘密與備份收好

    新的 key 放進 secrets,開加密備份,金鑰自己留。

zsh — 從 Zeabur 搬到 Containarium
# 0. (只有自架才需要)在一台 Ubuntu 24.04 VM 上安裝
$ curl -fsSL https://containarium.dev/install.sh | sudo bash

# 1. 開一台 box,並寫好 ssh 設定
$ containarium create n8n
$ containarium ssh-config sync

# 2. 進去,把 n8n + postgres 跑起來
$ ssh n8n
n8n$ mkdir app && cd app && vim docker-compose.yml   # n8n + postgres
n8n$ docker compose up -d

# 3. 把 Zeabur 的 dump 灌回去,然後核對
n8n$ docker compose exec -T postgres pg_restore -U n8n -d n8n < zeabur.dump
n8n$ docker compose exec postgres psql -U n8n -c 'select count(*) from workflow_entity'

# 4. 掛上網域,HTTPS 自動
$ containarium expose-port n8n --container-port 5678 --domain n8n.example.com

# 5. 新 key 放 secrets,開加密備份
$ containarium secrets set n8n N8N_ENCRYPTION_KEY "$(openssl rand -hex 32)"
$ containarium backup create n8n

完整的 CLI 說明在 GitHub README。 我們會在這週錄一支 60 秒的實際搬家影片,放在這裡。

Zeabur 用戶限定・到 2026/12/31

你 Zeabur 帳上剩多少,我們補多少

註冊 Containarium Cloud 之後,把你 Zeabur 帳戶餘額的截圖寄到 [email protected], 我們把等額的 Containarium 點數加到你的帳戶。Zeabur 那邊的退款你照樣去申請,這份是另外送的。

註冊 Containarium Cloud

搬家卡住了

直接來問,不限搬來我們這

  • 在 Threads 上的那串貼文留言,或私訊。
  • 寫信到 [email protected],標題寫「Zeabur 搬家」。
  • 上面兩段的清單是通用的,搬去別家平台卡住一樣可以問。
看開源 repo

常見問題

Zeabur 什麼時候停止服務?

依 2026 年 10 月 17 日的公告:共享叢集 12 月 1 日暫停運行,專用伺服器 12 月 1 日起停止續費並在各自到期日關機,所有服務最晚 12 月 31 日全面關閉。資料刪除日期與最後匯出期限尚未公布,不要等到那天才搬。

搬家之前最先該做什麼?

先止血,再搬家。兩次資安事件可能外洩了環境變數與資料庫內容,所以第一步是撤銷並重發所有 AI key 與第三方 key、在資料庫內部更改密碼、輪替 JWT_SECRET 等應用秘密,n8n 要先匯出 workflow 再碰加密金鑰。這些與搬去哪無關,今天就做。

從 Zeabur 搬到 Containarium 大概怎麼做?

開一台 box,ssh 進去用 docker compose 把原本的服務跑起來,把資料庫 dump 灌回去,再用 expose-port 掛上你的網域,HTTPS 憑證自動簽發。你拿到的是一台完整的 Linux 主機,不是一個平台抽象層。

Containarium 也會倒嗎?我的東西會不會又被鎖在平台裡?

Containarium 整個平台以 Apache 2.0 開源,同一套 CLI 可以在你自己的 Ubuntu VM 上五分鐘架起來。你的程式碼在你的 git、資料庫 dump 和備份在你手上、秘密在你能匯出的 secrets 裡、網域在你的註冊商。平台哪天不在了,你的東西還在你手上。

六週很短。先止血,再搬家。

不要等公告的刪除日期。

想先了解產品本身?繁中首頁 · 安全性 · 部落格