SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor · 已更新 2026-08-13

自架 Trello 替代方案比較:Planka、Vikunja 等

比較 Planka、Vikunja、Focalboard、Wekan 與 Kanboard 的最低 RAM、資料庫、SSO、Trello 匯入支援及維護狀態,避開 Focalboard 新專案風險。

應該選哪個自架 Trello 替代方案?

以下 3 個自架 Trello 替代方案值得考慮:如果你需要與 Trello 完全相同的看板,以及 Trello 的匯入檔案,選擇 Planka;團隊需要單一登入,而且需求不只是一個看板時,選擇 Vikunja;VPS(virtual private server)資源較少時,選擇 Kanboard。請勿在 Focalboard 上開始新專案。其獨立伺服器已有 783 天未發布新版本,README 現在也在尋找維護者。

Wekan 是本文列出的 5 個工具中的第 5 個。它可以正常運作,但記憶體用量是其他工具總和的數倍。以下每個版本、授權與日期,均已於 5 August 2026 完成確認。

每個 board 工具需要多少 RAM?

ChartTypical idle memory per stack in MB, Docker on Ubuntu 24.04
The data behind this chart
[
  {
    "tool": "Planka + Postgres",
    "idle_memory_mb": 280
  },
  {
    "tool": "Vikunja + SQLite",
    "idle_memory_mb": 110
  },
  {
    "tool": "Focalboard + SQLite",
    "idle_memory_mb": 120
  },
  {
    "tool": "Wekan + FerretDB",
    "idle_memory_mb": 750
  },
  {
    "tool": "Kanboard + SQLite",
    "idle_memory_mb": 70
  }
]

這些是全新安裝、尚未有人使用時的典型閒置數值,也就是服務堆疊啟動後約 1 分鐘,docker stats 回報的數值。可先用這些數值規劃方案,再測量自己的環境。整體趨勢比精確的 MB 數值更重要。

Kanboard 的最低需求是 70 MB,因為它是 PHP 搭配 SQLite。沒有長時間執行的應用程式程序將看板保留在記憶體中,因此容器在請求之間幾乎不占用資源。Vikunja 是單一 Go binary,需求為 110 MB;SQLite 是其預設資料庫,因此整個服務堆疊只需一個容器。Planka 需要 280 MB,因為它固定包含兩個容器:Node server 和 PostgreSQL。Planka 不支援 SQLite,因此資料庫無法省略。

Wekan 需要 750 MB,因為它是 Meteor 應用程式。Meteor 會在 Node 記憶體中保留即時查詢層,並透過 WebSocket 將每項看板變更推送給所有開啟看板的瀏覽器。因此,它的記憶體使用量會隨連線人數增加,而不是維持平坦。在 1 GB VPS 上,Wekan 可以啟動,但幾個人一開啟大型看板就會停止。其症狀是容器消失後重新出現,並回傳 exit code 137;docker compose ps 會將此顯示為重啟迴圈。請在主機上使用 dmesg -T | grep -i "out of memory" 確認,因為 kernel out-of-memory killer 不會通知應用程式。

資料庫相依性會決定一半的備份工作,以下各項各用一行說明。Planka 需要 PostgreSQL。Vikunja 預設使用 SQLite,也支援 PostgreSQL 和 MySQL 或 MariaDB。Kanboard 預設使用 SQLite,也支援 MySQL、MariaDB 和 PostgreSQL;其文件建議使用 PostgreSQL,並警告不要在 NFS(network file system)上使用 SQLite。Focalboard 預設使用 SQLite。Wekan 使用 MongoDB wire protocol;其預設 Compose file 現在會隨附使用內嵌 SQLite backend 的 FerretDB v1,而不是真正的 MongoDB server。如果需要 MongoDB,可使用獨立的 MongoDB 7 Compose file。

哪些專案仍在維護?

ChartAge of the newest stable release in days, checked 5 August 2026
The data behind this chart
[
  {
    "tool": "Planka 2.1.1",
    "release_age": 109
  },
  {
    "tool": "Vikunja 2.5.0",
    "release_age": 1
  },
  {
    "tool": "Focalboard 8.0.0",
    "release_age": 783
  },
  {
    "tool": "Wekan 10.67",
    "release_age": 1
  },
  {
    "tool": "Kanboard 1.2.53",
    "release_age": 12
  }
]

Focalboard 是其中的例外,距離上次發布已經過了 783 天。它最後一次獨立發布的版本 v8.0.0 來自 2024 年 6 月。Mattermost 已將 board 的開發移至另一個 repository 中的 plugin,而獨立版本的 README 表示該 repository 目前沒有維護。這是本次比較中唯一明確的「否」。其他專案則各有取捨。

對於每年發布幾個版本的專案而言,Planka 的 109 天仍屬正常。版本 2.1.1 來自 2026 年 4 月。Kanboard 在檢查前 12 天發布 v1.2.53,而在此之前的兩個版本分別於 2026 年 3 月和 4 月發布。

Vikunja 和 Wekan 都在檢查前 1 天內發布版本,但這兩項資訊的解讀方式不同。Vikunja 將 v2.5.0 標記為一般的小版本發布。Wekan 則在同一天標記 v10.65、v10.66 和 v10.67,這是它正常的發布節奏。頻繁發布不代表目標版本穩定。選用 Wekan 就代表要追蹤快速變動的版本號,因此應固定 tag,並在每次升級前閱讀發布說明。

你得到的不只是一個看板嗎?

多數比較文章只會停在「看起來像 Trello」。這個面向比 RAM 更能決定選擇,因為看板不適合處理任何有截止期限的工作。

  • Planka 只有看板功能:專案、看板、清單、卡片、標籤、檢查清單、留言和附件。截至 2026 年 8 月,行事曆和地圖檢視是 Pro 功能。
  • Vikunja 可從同一組工作提供 4 種檢視:List、Kanban、Table 和 Gantt。每項工作只存在一次,切換檢視即可,不必建立副本。
  • Kanboard 提供具備進行中工作限制、子工作、附件、留言、自動動作及小型查詢語言的看板,可用於篩選。其官方首頁表示「功能數量是刻意限制的」,這是合理的描述。
  • Wekan 提供具備泳道的看板,另外支援檢查清單、自訂欄位、REST(representational state transfer)API 和 webhooks。
  • Focalboard 可針對同一批卡片提供看板、表格和行事曆檢視。此處列出是為了完整性。

如果你真正需要的是附帶部分工作追蹤功能的 wiki,這不是適合的比較方向。BookStack、Wiki.js 和 Outline 涵蓋這類型的工具,而自架 Notion 替代方案則涵蓋整合式工作區。

多使用者存取與單一登入

Planka 的免費 Community edition 支援 OpenID Connect。官方 Compose 檔案已將設定註解掉,其中包括 OIDC_ISSUEROIDC_CLIENT_IDOIDC_CLIENT_SECRET,因此只需取消註解,不必升級。讓組織外部人員使用 Guest 角色則是 Pro 功能。

Vikunja 可同時支援多個 OpenID Connect provider。設定 VIKUNJA_AUTH_OPENID_ENABLED=true,然後為每個 provider 新增一組 VIKUNJA_AUTH_OPENID_PROVIDERS_<ID>_* 變數。它也提供團隊與依專案分享功能,這才是 20 人組織實際需要的功能。

Wekan 支援 LDAP(輕量級目錄存取協定)、OAuth2、OIDC 和 SAML。Kanboard 內建 LDAP,也提供通用 OAuth2 plugin 以支援其他情況,另有依專案設定的角色與群組。Focalboard 的獨立伺服器完全不支援單一登入,這是排除它的第二個理由。

上述任一組合都能搭配自行執行的 Authentik identity provider。通常這比讓 20 人為每個應用程式各自設定一組密碼更合適。

可以匯入 Trello 看板嗎?

Planka 提供最簡單的流程。先將看板從 Trello 匯出為 JSON,在 Planka 建立看板,按一下 Import,然後選擇 Trello。請先閱讀限制,因為這些限制確實存在:不會匯入使用者和附件,每張卡片只會匯入一個檢查清單,而且 Trello 的預設 JSON 匯出會在 1,000 個動作後停止,且不會警告檔案已遭截斷。請自行檢查檔案,再確認匯入結果可信。

Vikunja 透過 Trello 的 OAuth 流程匯入,位置在 Settings,接著選擇「從其他服務匯入」。每個 migrator 都必須先在設定中啟用,該圖示才會顯示;VIKUNJA_SERVICE_PUBLICURL 必須正確,因為 OAuth 重新導向是在瀏覽器中進行,而不是從伺服器發出。Vikunja 也支援匯入 Todoist、Microsoft To Do、TickTick 和 Wekan。

Wekan 可在匯入表單中貼上 Trello 看板 JSON。Kanboard 沒有內建的 Trello 匯入工具;如果你要搬移多年的 Trello 歷史資料,這是跳過 Kanboard 的主要原因。

行動裝置體驗如何?

Vikunja 是這 5 個專案中唯一提供官方行動應用程式的專案。Android 和 iOS 版本會隨每次發行一同提供,而應用程式儲存庫將自身描述為 alpha,因此應將它視為 Web 介面的輔助工具,而不是主要的使用方式。Planka 沒有專案官方提供的應用程式,但其 Web 介面支援回應式設計,且有第三方用戶端可用。Wekan 和 Kanboard 僅提供 Web 介面,而 Kanboard 的介面明顯是以桌面螢幕為設計對象。

授權問題,以及 Planka 為何不同

Planka 已不再是開放原始碼軟體,這是多數比較文章遺漏的事實。它最初採用 MIT 授權,於 2023 年改用 AGPL-3.0;自 2.0 系列起,則改以 PLANKA Community License 發布。這是一種由 PLANKA Software GmbH 持有的 fair-code 授權。GitHub 將其授權標示為「Other」,因為該授權未獲 OSI 核准。為自有團隊自行架設服務是免費且明確獲允許的,涵蓋個人、內部、非營利及教育用途。若要轉售其存取權,或將其作為服務提供給其他公司,則需要商業授權。

對兩人來說,這是合理的條件。對公司而言,則應在 20 人的工作投入其中之前先閱讀相關條款。其餘 4 個專案都是一般的開放原始碼軟體:Vikunja 採用 AGPL-3.0,Wekan 和 Kanboard 採用 MIT,而 Focalboard 混用 Apache 2.0 與 AGPL-3.0。

兩個選定方案的固定版本 Compose 檔案

固定 image tag。latest 表示下一次 docker compose pull 可能會跨越 major version,而 major version 會執行難以還原的資料庫 migration。下方兩個檔案都是上游版本,且已將 tag 固定至實際發行版本。

使用 SQLite 的 Vikunja,單一容器:

services:
  vikunja:
    image: vikunja/vikunja:2.5.0
    restart: unless-stopped
    environment:
      VIKUNJA_SERVICE_PUBLICURL: https://tasks.example.com
      VIKUNJA_SERVICE_SECRET: replace-with-a-long-random-string
      VIKUNJA_SERVICE_TIMEZONE: Europe/Berlin
      VIKUNJA_DATABASE_TYPE: sqlite
      VIKUNJA_DATABASE_PATH: /app/vikunja/files/vikunja.db
    ports:
      - "127.0.0.1:3456:3456"
    volumes:
      - ./files:/app/vikunja/files

先以正確的擁有者建立資料目錄,因為容器會以 UID 1000 執行,無法寫入 root 擁有的目錄:

mkdir -p files && sudo chown 1000 files
docker compose up -d
docker compose ps
curl -sf http://127.0.0.1:3456/api/v1/info

健康的 stack 會將服務顯示為 running,而 info endpoint 會回傳包含 version 欄位的 JSON。此處若出現 connection refused,表示容器已結束。docker compose logs vikunja 會指出原因,其中最常見的是資料庫檔案權限錯誤。

使用 PostgreSQL 的 Planka,兩個容器:

services:
  planka:
    image: ghcr.io/plankanban/planka:2.1.1
    restart: unless-stopped
    volumes:
      - data:/app/data
    ports:
      - "127.0.0.1:3000:1337"
    environment:
      - BASE_URL=https://boards.example.com
      - DATABASE_URL=postgresql://postgres@postgres/planka
      - SECRET_KEY=replace-with-openssl-rand-hex-64
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=planka
      - POSTGRES_HOST_AUTH_METHOD=trust
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  data:
  db-data:

POSTGRES_HOST_AUTH_METHOD=trust 表示 PostgreSQL 接受任何未附密碼的連線。這只有在資料庫埠從未發布至主機時才安全,因此唯一能連線的對象是同一個 Compose network 上的另一個容器。請勿在 postgres 服務中加入 ports: 項目。

兩個 stack 都不應直接面向網際網路。兩者都綁定至 127.0.0.1,因此請在前方放置反向代理,並在該處終止 TLS(transport layer security)。當你託管的服務超過一個時,通常會使用 在多個 Compose 應用程式前方配置 Traefik,而 Docker Compose 基礎指南 涵蓋本頁略過的這些檔案相關內容。

您的 board 是資料庫,因此請建立備份

board 工具可能會靜默失敗。直到儲存區遺失後,才有人注意到備份不存在;損毀的 SQLite 檔案也可能正常開啟,並在 database disk image is malformed 週後才回報錯誤。

請勿使用 cp 複製正在使用中的 SQLite 檔案。複製時可能正好遇到寫入作業,導致封存檔看似完整,但還原後的資料庫缺少資料列。請在複製所需的幾秒鐘內停止服務:

docker compose stop vikunja
tar czf vikunja-$(date +%F).tgz files
docker compose start vikunja

對於 Planka,請傾印 PostgreSQL,而不要複製正在執行之 cluster 的資料目錄;另外也要單獨備份 uploads volume,因為附件不儲存在資料庫中:

docker compose exec -T postgres pg_dump -U postgres -Fc planka > planka-db.dump
docker volume ls
docker run --rm -v planka_data:/data -v "$PWD":/backup alpine \
  tar czf /backup/planka-files.tgz -C /data .

docker volume ls 會列出實際的 volume 名稱。該名稱是 Compose 專案名稱後接 _data。如果傳入不存在的名稱,系統會建立空的 volume,並在沒有任何錯誤的情況下產生有效但空白的封存檔,因此請在之後檢查檔案大小。

接著,請在同一台主機上的 scratch stack 中還原一次,並開啟您記得的某張卡片。從未還原過的備份只是猜測。也請將封存檔傳送到伺服器之外,因為儲存在受保護 VPS 上的副本並不算備份。從 VPS 使用 restic 備份涵蓋這一部分。

兩項建議

2 GB VPS 上供兩人使用:執行 Planka。它在外觀與操作方式上最接近 Trello,Trello 匯入內容是可直接拖曳加入的檔案,而 280 MB 的閒置記憶體用量,能讓 2 GB 中大部分記憶體留給反向代理及其他託管服務。Community License 可免費涵蓋兩人的內部團隊。若不想依賴 source-available 授權,Vikunja 搭配 SQLite 只需 110 MB,是同一台主機上的開源選擇。

組織中有 20 人:執行搭配 PostgreSQL 的 Vikunja。達到這個規模後,應使用 OpenID Connect,避免管理 20 組本機密碼;也需要團隊與個別專案共用功能。許多工作不適合放在看板上,因此 List、Table 與 Gantt 檢視不再只是額外功能。AGPL-3.0 也表示隨著人數增加,不必再討論授權問題。讓它使用 PostgreSQL 而非 SQLite,置於反向代理後方,並將每日 dump 儲存於其他伺服器。

如果主機的 RAM 少於 1 GB,以上兩種方案都不適用。改用 70 MB 的 Kanboard,接受必須重新輸入 Trello 卡片,並將節省的記憶體用於 2026 年自架服務候選清單中的其他項目。無論選擇哪項工具,完整安裝方式都應放在獨立指南中。本頁只負責選擇。

FAQ

哪個自架 Trello 替代方案最省 RAM?

Kanboard 最省,閒置時約為 70 MB,因為它使用 PHP 搭配 SQLite,每次請求之間不會在記憶體中保留資料。其次是 Vikunja,單一 Go binary 約使用 110 MB。Wekan 最耗用資源,約使用 750 MB,因為 Meteor 會在 Node 記憶體中,為每個已連線的瀏覽器維持即時查詢層。堆疊閒置後,使用 docker stats 測量自己的數值,因為這些只是常見數據,不代表固定結果。

我可以將 Trello board 匯入自架工具嗎?

Planka 和 Wekan 都能直接匯入 Trello 的 JSON board 匯出檔。Vikunja 透過 Trello 的 OAuth 流程匯入,且必須先在設定中啟用 migrator,該功能才會出現在介面中。Kanboard 沒有內建 importer。請預先考量兩項限制:Planka 不會匯入使用者或附件,而且每張 card 只能處理一個 checklist;Trello 的預設 JSON 匯出最多包含 1,000 個 actions,且不會警告你資料已遭截斷。

Focalboard 在 2026 年仍是好的選擇嗎?

不是。最後一個 standalone release 是 v8.0.0,發布於 2024 年 6 月;在 2026 年 8 月 5 日檢查這份比較時,該版本已是 783 天前的版本,README 也表示目前未維護該 repository。Mattermost 只在另一個 repository 中以 plugin 的形式繼續開發 board,因此停止維護的是你會自架的 server 部分。請改選 Planka 或 Vikunja。

Planka 仍是 open source 嗎?

依 OSI 定義,不是。Planka 原本採用 MIT,於 2023 年改用 AGPL-3.0,並自 version 2.0 起以 PLANKA Community License 發布。個人、內部、非營利及教育用途可免費自架。若要轉售存取權,或為第三方以 service 形式執行,則需要 commercial licence;calendar view、guest roles 和 recurring cards 則屬於 Pro tier。若 OSI 核准的 licence 是硬性要求,Vikunja 採用 AGPL-3.0,Kanboard 採用 MIT。

我需要 PostgreSQL,還是 SQLite 就夠了?

Vikunja、Kanboard 和 Focalboard 預設使用 SQLite;單一 server 上只有少數使用者時,這樣已足夠。Planka 需要 PostgreSQL,不提供 SQLite 選項。當同時有多位使用者寫入時,請改用 PostgreSQL,因為 SQLite 會將寫入序列化,忙碌的 instance 會開始回傳 database is locked。也不要將 SQLite file 放在 network share 上:Kanboard 文件明確警告不要在 NFS 上使用 SQLite,原因正是如此。

#kanban#project-management#planka#vikunja#self-hosting#docker