跳轉至

Documenso

概述

Documenso 係一套開源、可自託管嘅電子簽署平台,用於替代 DocuSign 等商業服務,強調數據自主權同埋可審計性。本機部署採用 Docker Compose 方式,喺 Oracle Cloud Infrastructure(OCI)私有雲環境運行。此實例對應 Documenso Stack,提供數位簽署、文件追蹤、簽署流程管理等功能,適合企業內部合約、授權文件等需要法律效力嘅簽署場合。

架構

Documenso 以 Node.js / Next.js 編寫,前後端整合喺同一個容器內。實際部署包含以下組件:

  • 應用容器:使用 documenso/documenso:v2.16.0 鏡像,容器名稱 documenso。容器連接到外部網絡 cf_network,並分配固定 IPv4 地址 172.21.0.62。此網絡同時連接 Cloudflare Tunnel 同其他服務,讓 Documenso 可以透過內部域名互相訪問。
  • 資料庫:共用 PostgreSQL 容器 pg-main,Documenso 使用獨立資料庫名稱 documenso。透過 NEXT_PRIVATE_DATABASE_URLNEXT_PRIVATE_DIRECT_DATABASE_URL 設定連接字串,用戶名為 documenso,密碼由環境變數注入,避免明文儲存。
  • 網絡:採用外部 Docker network cf_network,類型為 bridge。好處係容器之間可以透過容器名或固定 IP 通訊,同時唔暴露主機連接埠,由 Cloudflare Tunnel 負責對外 HTTPS 流量。
  • 資源限制:容器設定 mem_limit: 2gcpus: 2.0,確保唔會耗盡宿主机資源,尤其喺同一主機運行多個容器(如 litellm)時。

部署

部署步驟簡述:

  1. 準備環境:安裝 Docker Engine 同 Docker Compose Plugin,並確保全然網絡 cf_network 已建立(docker network create cf_network)。
  2. 取得鏡像:執行 docker pull documenso/documenso:v2.16.0
  3. 設定環境變數:喺 .env 檔案定義所有 DOCUMENSO_* 變數,包括 NEXTAUTH_SECRETENCRYPTION_KEY、資料庫密碼、SMTP 密碼等。
  4. 放置簽署憑證:將自簽 p12 檔案放喺 /home/opc/documenso/cert.p12,以唯讀方式掛載入容器 /opt/documenso/cert.p12
  5. 啟動服務:執行 docker compose up -d,然後用 docker compose logs -f 檢查啟動日誌。

配置

  • 公開網址NEXT_PUBLIC_WEBAPP_URL 設定為 https://sign.benhoweb.com,內部網址 NEXT_PRIVATE_INTERNAL_WEBAPP_URL 則用 http://localhost:3000,藉此避免回撥時走外網。
  • 資料庫連線:使用 PostgreSQL 字串,指向 pg-main:5432/documenso。因為 pg-main 喺同一 Docker network,所以直接以服務名解析到容器 IP。
  • 電子郵件:透過 Oracle Email Delivery SMTP,設定 NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth,並提供主機、連接埠(通常 587)、帳號同密碼。寄件人名稱設為 Documenso,地址由 DOCUMENSO_SMTP_FROM_ADDRESS 提供。
  • 簽署憑證:使用本機 p12 檔案,並設定 NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/opt/documenso/cert.p12。為確保簽名喺憑證過期後仍然有效,加入 RFC 3161 時間戳權威 http://timestamp.digicert.com
  • 遙測:設定 DOCUMENSO_DISABLE_TELEMETRY=true 以停用遙測數據收集,符合企業數據隱私政策。

維運與監控

  • 健康檢查:容器使用 node -ehttp://localhost:3000/ 發送 fetch,每 30 秒執行一次,容許 90 秒啟動寬限,確保服務真正就緒先至被標記為 healthy。
  • 日誌管理:使用 docker logs documenso 檢視應用日誌。OCI 層面可以將 Docker logs 導向 OCI Logging,方便集中查詢。
  • 更新流程:定期檢查 Documenso 上游發行版本,執行 docker compose pulldocker compose up -d 升級。升級前應備份資料庫。
  • 備份策略:備份 PostgreSQL 中嘅 documenso 資料庫,以及 /home/opc/documenso/cert.p12 憑證檔案。建議仲要備份 .env 中嘅機密變數。
  • 安全事項:容器固定 IP 令到 Cloudflare Tunnel 可以精準轉發流量,同時避免主機連接埠暴露。另外,cf_network 係外部網絡,與其他服務(例如 litellm)隔離對外,必須透過內部網絡先至可以訪問。

常見問題

  • 容器無法啟動:檢查環境變數是否齊全,特別係 NEXTAUTH_SECRETNEXT_PRIVATE_ENCRYPTION_KEY。同時確認 cf_network 已建立,否則容器會因網絡唔存在而啟動失敗。
  • 簽名失敗或證書錯誤:如果 p12 憑證損壞或密碼錯誤,簽署功能會異常。檢查檔案掛載路徑同權限(ro),並確保證書格式正確。
  • 電郵發送唔到:Oracle Email Delivery 可能需要喺雲端控制台設定寄件人驗證。確認 SMTP_PORT(通常 587)同 SMTP_HOST 正確,並檢查 SMTP_FROM_ADDRESS 有冇被 SMTP 伺服器拒絕。
  • 連線逾時:如果容器訪問 pg-main 或 Cloudflare Tunnel 出現 timeout,檢查容器是否喺同一 cf_network,以及防火牆規則有無阻擋內部通訊。

相關鏈接

  • docker – 容器執行環境及 Compose 編排
  • litellm – 同網絡下嘅 AI 代理服務
  • cloudflare-tunnel – 對外提供 HTTPS 存取嘅通道
  • postgres – 共用資料庫服務
  • OCI – Oracle Cloud 私有雲架構基礎

來源

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