セルフホスト
自分のサーバーで Golem Docs を動かす。
Golem Docs は無料で、サーバーがなくても使えます。サーバーがあると、デバイス間の同期、共有、リアルタイムの共同編集が加わります。golemdocs.com は月額 $3 でサーバーを提供していますが、自分の Cloudflare アカウントで自分のサーバーを動かすこともでき、その場合ファイルもアカウントもあなたのものです。
しくみ
サーバーは 1 つの Cloudflare Worker です。アプリ自体も配信するので、あなたのアドレスが、招いた人にとっての Golem Docs になります。データはすべて、あなたのアカウントにある 4 つの Cloudflare 製品に保存されます。
| Workers | アプリのファイルと、ユーザーのサインインやドキュメントの保存を受け持つ API。 |
|---|---|
| D1 | データベース 1 つ: アカウント、セッション、共有、各ユーザーのドキュメントとフォルダーの一覧。 |
| R2 | ドキュメント本体、その画像、以前のバージョン。 |
| Durable Objects | 複数の人が一緒に編集している間の、ドキュメントごとのルーム。 |
今のところ動くのは Cloudflare 上だけです。自分のコンピューターや別のサービスなど、ほかの場所で動かしたい場合はご連絡ください。Cloudflare なしで動かす方法を検討します。
費用
家庭で使う程度なら無料で済むこともあります。Cloudflare の無料プランには 1 日 100,000 リクエストと 10 GB のファイル保存が含まれ、10 GB を超える分は 1 GB あたり月 $0.015 なので、100 GB で月 $1.35 ほどです。無料プランはリクエストごとの計算時間が短いため、長いドキュメントには Workers の有料プラン (月額 $5、上限がずっと高い) が必要になることがあります。最新の金額は Cloudflare の料金をご確認ください。
必要なもの
- Cloudflare アカウント。ドメインは任意です。なければ、サーバーには無料の workers.dev アドレスが付きます。
- Node 22.13 以降と pnpm が入ったコンピューター (設定と更新に使います)。その後、そこで動き続けるものはありません。
- サインイン用アプリを作るための GitHub アカウント。Google、Microsoft、Apple でのサインインも使えます。
設定
30 分ほどかかります。コマンドはすべて、コードをダウンロードしたフォルダーでターミナルから実行します。
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 を有効にします。無料枠の範囲内でも、支払い方法の登録を求められることがあります。次のコマンドでデータベースとストレージのバケットが作られ、データベースの 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. テーブルを作って公開する
2 つ目のコマンドがアプリをビルドしてサーバーと一緒にアップロードし、公開先のアドレスを表示します。
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: 全員のドキュメント一覧を 1 つのデータベースに置くので、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 の名前とロゴはこのプロジェクトのものです。