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 容器覆蓋率補完第二批)