指南
自行託管
你可以在自己的伺服器上執行 Oloproof 工作台:地端機房、私有雲,或加拿大的雲端服務商皆可。 deploy/self-hosted/ 中的套件執行與 oloproof.com 相同的兩個映像檔(web 與 worker)以及 PostgreSQL,皆依摘要拉取。你的資料留在你執行它的地方,不會傳送任何內容給 Oloproof。
需求
- 一台裝有 Docker Engine 與 Compose 外掛的 Linux 主機。一個團隊用 4 GB 記憶體與 2 顆 CPU 即可;worker 上限為 1.5 GB,web 為 768 MB。
- 供 PostgreSQL 使用的磁碟。你推送的每次執行都儲存在那裡。
- 用於 HTTPS 的反向代理(Caddyfile.example 是可用的範例;nginx 也可以)。
- 能存取 ghcr.io/etobicoke/oloproof,或已將映像檔複製到你自己的映像檔倉庫。
安裝
cd deploy/self-hosted
sh generate-env.sh # writes .env and fills every secret在 .env 中設定 OLOPROOF_WEB_IMAGE、OLOPROOF_WORKER_IMAGE(皆為 ...@sha256: 摘要)與 OLOPROOF_PUBLIC_URL,並至少提供一種登入方式:用於密碼帳戶的郵件(OLOPROOF_MAIL_FROM 加上 OLOPROOF_SMTP_URL 或 OLOPROOF_RESEND_API_KEY),或一個 OAuth 提供者。兩者皆無時 web 拒絕啟動。接著啟動它:
docker compose --env-file .env up -d
curl -fsS http://127.0.0.1:3000/api/healthmigrate 服務會在 web 與 worker 啟動前把資料庫更新到最新。註冊採邀請制,邀請透過 OLOPROOF_OPERATOR_TOKEN 發出(deploy/README.md,「Signup」)。
設定
.env.example 列出 web 與 worker 讀取的每個變數,並逐一標明必填、自動產生或選用。選用變數留空即關閉對應功能。請保留產生的密鑰:換新的資料庫密碼會讓你無法進入資料庫,換新的簽署金鑰則會開始一個新的簽署者。自行託管的套件沒有計費,因此每個工作區都使用免費方案的每月案例數;請為你的團隊調高 OLOPROOF_FREE_TIER_PUSHED_MONTHLY 與 OLOPROOF_FREE_TIER_MANAGED_MONTHLY。
預設不連外網路
這個堆疊不傳送遙測資料,也不呼叫任何 Oloproof 服務。它只為你開啟的功能連上網路:郵件(你網路內的 SMTP 中繼,或 Resend)、OAuth 登入、Turnstile,以及工作區存有金鑰的模型提供者。這些都不設定時,它在沒有任何對外路由的情況下執行。對於實體隔離的主機,請把三個映像檔複製到你自己的映像檔倉庫,並讓映像檔變數指向它。密碼帳戶需要郵件,因此在隔離網路中請把 OLOPROOF_SMTP_URL 設為網路內部的中繼。
備份
sh backup.sh /srv/backups/oloproofbackup.sh 會把壓縮的 pg_dump 寫入你選擇的目錄。用 cron 或 systemd 計時器排程執行,並自行把該目錄複製到主機之外。腳本會顯示還原指令。
轉儲不包含 .env,而 .env 保存著 OLOPROOF_CONTENT_KEY 和其他產生的金鑰:沒有它,還原的資料庫無法讀取其加密內容。請在建立 .env 時以及每次修改後備份它,與轉儲分開並離線保存(密碼管理器或加密磁碟),切勿放在轉儲旁邊。
升級
把新版本的兩個摘要寫入 .env,然後執行:
sh upgrade.sh /srv/backups/oloproof它會備份、拉取、遷移並重新啟動 web 與 worker。會有短暫中斷。如需回復,寫回先前的摘要並還原它做的備份。
支援範圍
- 單台主機。沒有高可用性:堆疊的可用性取決於它所在的機器。
- 資料存放在你執行它的地方。Oloproof 不持有你的任何資料。
- 沒有零停機發布。那只屬於託管服務。
- 套件由 deploy/self-hosted/check.sh 檢查:它以獨立的專案名稱啟動套件,等待 /api/health,取得公開頁面,然後將其移除。