自行架設

在你自己的伺服器上執行 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 的價格。

你需要

設定步驟

大約需要半小時。每個指令都在終端機裡、在你下載程式碼的資料夾中執行。

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_DATABASEtrue:所有人的文件清單都放在同一個資料庫裡,因此伺服器不需要 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 的不同

應用程式和伺服器採用 AGPL-3.0 授權:如果你為他人執行修改過的版本,請向他們提供原始碼。Golem Docs 的名稱和標誌屬於本專案。