自行架設
在你自己的伺服器上執行 Golem Docs。
Golem Docs 是免費的,完全不需要伺服器。有了伺服器,就能在裝置之間同步、共用,並即時共同編輯。golemdocs.com 以每月 3 美元的價格執行一部伺服器,你也可以在自己的 Cloudflare 帳戶上執行自己的伺服器,這樣檔案和帳戶都屬於你。
原理
伺服器就是一個 Cloudflare Worker。它同時提供應用程式本身,所以對你邀請的人來說,你的位址就是 Golem Docs。所有資料都存放在四種 Cloudflare 產品中,全部在你的帳戶裡:
| Workers | 應用程式的檔案,以及負責使用者登入和保存文件的 API。 |
|---|---|
| D1 | 一個資料庫:帳戶、工作階段、共用,以及每個人的文件和資料夾清單。 |
| R2 | 文件本身、其中的圖片以及先前的版本。 |
| Durable Objects | 多人一起編輯時,每份文件各有一個房間。 |
目前它只能在 Cloudflare 上執行。如果你想把它放在別處,例如你自己的電腦或其他服務商,告訴我,我會擬定一個不依賴 Cloudflare 的執行方案。
費用
一個家庭使用,可能完全免費。Cloudflare 的免費方案包含每天 100,000 次請求和 10 GB 檔案儲存空間;超過 10 GB 的儲存空間每 GB 每月 0.015 美元,100 GB 約 1.35 美元。免費方案每次請求可用的運算時間很少,因此長文件可能需要 Workers 付費方案:每月 5 美元,限額高得多。最新價格請查看 Cloudflare 的價格。
你需要
- 一個 Cloudflare 帳戶。網域可有可無:沒有網域時,你的伺服器會得到一個免費的 workers.dev 位址。
- 一台裝有 Node 22.13 或更新版本和 pnpm 的電腦,用於設定和更新。之後它上面不需要執行任何東西。
- 一個 GitHub 帳戶,用來建立登入應用程式。也可以用 Google、Microsoft 和 Apple 登入。
設定步驟
大約需要半小時。每個指令都在終端機裡、在你下載程式碼的資料夾中執行。
1. 取得程式碼並登入 Cloudflare
這會下載 Golem Docs,安裝所需的一切,並開啟瀏覽器,讓它可以使用你的 Cloudflare 帳戶。
git clone https://github.com/davidfig/golemdocs.git cd golemdocs pnpm install pnpm --filter @golemdocs/server exec wrangler login
2. 建立資料庫和儲存空間
先在 Cloudflare 主控台中啟用 R2;即使在免費額度內,Cloudflare 也可能要求新增付款方式。然後這個指令會建立資料庫和儲存貯體,並顯示資料庫的 ID。
pnpm --filter @golemdocs/server cf:setup
3. 指定帳戶、資料庫和位址
把 server/wrangler.local.example.json 複製為 server/wrangler.local.json 並填寫:你的 Cloudflare 帳戶 ID、第 2 步得到的資料庫 ID,以及你的網域。如果要使用免費位址,網域就寫 workers.dev。
{
"ACCOUNT_ID": "…",
"DIRECTORY_ID": "…",
"DIRECTORY_DEV_ID": "",
"DOMAIN": "docs.example.com"
}
4. 建立資料表並上線
第二個指令會建置應用程式,連同伺服器一起上傳,並顯示它所在的位址。
pnpm --filter @golemdocs/server cf:migrate pnpm --filter @golemdocs/server deploy:prod
5. 建立登入應用程式
在 GitHub 上開啟 Settings › Developer settings › OAuth Apps › New OAuth App。填寫你伺服器的位址,回呼 URL 填 https://<你的位址>/api/auth/callback/github。然後產生一個 client secret。
6. 設定誰可以登入
每個指令都會詢問一個值。請在 server 資料夾中執行。
cd server pnpm exec wrangler secret put SINGLE_DATABASE --env="" pnpm exec wrangler secret put ALLOWED_EMAILS --env="" pnpm exec wrangler secret put ADMIN_EMAILS --env="" pnpm exec wrangler secret put GITHUB_CLIENT_ID --env="" pnpm exec wrangler secret put GITHUB_CLIENT_SECRET --env=""
SINGLE_DATABASE | true:所有人的文件清單都放在同一個資料庫裡,因此伺服器不需要 Cloudflare API 權杖。 |
|---|---|
ALLOWED_EMAILS | 誰可以登入:完整的位址(me@example.com)或整個網域(@example.com),以逗號分隔。一定要設定,否則任何找到你位址的人都能註冊,並用你的費用存放檔案。 |
ADMIN_EMAILS | 你自己的位址。管理員隨時可以登入,並能閱讀大家傳來的意見。 |
LINK_WEBSITE, LINK_SUPPORT… | 選用:讓「說明」功能表和歡迎文件的連結指向別處,而不是 golemdocs.com。完整指南列出了全部選項。 |
7. 登入
開啟你的位址,用 GitHub 登入。登入後建立的文件現在都保存在你的伺服器上,名單裡的人可以互相共用。
保持更新
有新版本時,用同樣的方法取得並上線。請先閱讀日誌:如果某個版本改變了檔案或帳戶的儲存方式,那裡會寫明。
git pull pnpm install pnpm --filter @golemdocs/server cf:migrate pnpm --filter @golemdocs/server deploy:prod
與 golemdocs.com 的不同
- 請在瀏覽器中使用。桌面和手機應用程式目前只連線到 golemdocs.com。
- 沒有任何付費項目。你邀請的每個人都能使用同步、共用和即時共同編輯。
- 你伺服器上的使用者之間可以共用,但不能與 golemdocs.com 或其他伺服器的帳戶共用。
- 由你來維護:更新,以及資料庫和儲存空間的備份。
應用程式和伺服器採用 AGPL-3.0 授權:如果你為他人執行修改過的版本,請向他們提供原始碼。Golem Docs 的名稱和標誌屬於本專案。