跳轉至

CloudBeaver

概述

CloudBeaver 是 DBeaver 團隊開發的開源 Web 資料庫管理工具,可視為 DBeaver 的 Web 版。本部署用於提供 pg-main(PostgreSQL 主資料庫)的瀏覽器介面。使用者只需要開啟 https://pg.benhoweb.com 即可執行 SQL 查詢、管理資料庫結構及匯出資料。由於網址由 Cloudflare Access(CF Access)保護,所有請求都必須先通過身份驗證,才可到達 CloudBeaver 服務。

架構

此實例以 Docker Compose 部署,使用映像 dbeaver/cloudbeaver:26.1.2,容器名為 cloudbeaver,並採用 restart: unless-stopped。關鍵網絡配置如下: - 容器指定掛接外部網絡 cf_network; - 靜態 IPv4 位址為 172.21.0.51; - 主機沒有直接發布連接埠。

CloudBeaver 預設監聽 8978,但此連接埠只存在於 cf_network。請求流程是:使用者 → Cloudflare Access → Cloudflare Tunnel → 172.21.0.51:8978 → CloudBeaver → PostgreSQL pg-main。這樣可避免 PostgreSQL 5432 連接埠暴露至公網。

資料持久化透過 volume 完成,宿主機目錄 /home/opc/cloudbeaver/workspace 掛載至容器 /opt/cloudbeaver/workspace,保存資料庫連線定義、SQL 歷史及憑證資訊。

部署

以下為 Docker Compose 節選:

networks:
  cf_network:
    external: true

services:
  cloudbeaver:
    image: dbeaver/cloudbeaver:26.1.2
    container_name: cloudbeaver
    restart: unless-stopped
    volumes:
      - /home/opc/cloudbeaver/workspace:/opt/cloudbeaver/workspace
    networks:
      cf_network:
        ipv4_address: 172.21.0.51
    environment:
      TZ: Asia/Hong_Kong
      CB_SERVER_URL: https://pg.benhoweb.com
      CLOUDBEAVER_APP_GRANT_CONNECTIONS_ACCESS_TO_ANONYMOUS_TEAM: ${CLOUDBEAVER_APP_GRANT_CONNECTIONS_ACCESS_TO_ANONYMOUS_TEAM:-false}

部署前必須先建立 cf_network

docker network create cf_network

然後在 /home/opc/cloudbeaver/ 執行 docker compose up -d

配置

環境變數的作用如下: - TZ=Asia/Hong_Kong:使容器使用香港時區,方便查看日誌時間。 - CB_SERVER_URL=https://pg.benhoweb.com:設定對外完整 URL,避免反向代理及 Tunnel 環境下產生錯誤的 redirect。 - CLOUDBEAVER_APP_GRANT_CONNECTIONS_ACCESS_TO_ANONYMOUS_TEAM:控制匿名團隊能否存取已設定的連線。此處透過 ${VAR:-false} 預設為 false,即所有連線都需要登入指定團隊後才可見,防止匿名使用者取得資料庫連接資訊。

此外,pg.benhoweb.com 在 Cloudflare Access 的 Application 中應設定嚴格政策,只容許已註冊的電郵或 Zero Trust group 進入。即使 CF Access 被誤放行,CloudBeaver 本身亦不會開放連線予匿名團隊。

維運與監控

日常維運包括: - 使用 docker compose ps 檢查容器狀態; - 使用 docker compose logs -f cloudbeaver 查看應用日誌; - 定期備份 /home/opc/cloudbeaver/workspace,因為內含連線配置及 SQL 腳本; - 監控宿主機磁碟使用量,避免 workspace 不斷增長; - 升級時先拉取新映像,再 docker compose up -d,並做好回滾準備。

如果 Cloudflare Tunnel 與容器之間連線異常,可用 docker network inspect cf_network 確認容器 IP 是否仍是 172.21.0.51,並檢查 tunnel route 是否指向 http://172.21.0.51:8978

常見問題

  • 開啟 https://pg.benhoweb.com 被 CF Access 攔截? 表示尚未通過身份驗證,請檢查 Cloudflare Zero Trust 的 Access policy。
  • CloudBeaver 能登入但連不到 pg-main? 需要檢查 PostgreSQL 是否有允許來自 cf_network 網段及 172.21.0.51 的連線,以及帳戶權限是否正確。
  • 容器重啟後設定消失? 多數是 volume 掛載路徑不正確,請確認 /home/opc/cloudbeaver/workspace 存在且屬正確使用者。

相關鏈接

來源

自動生成(2026-08-19 容器覆蓋率補完第二批)