Свой сервер
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 ГБ хранилища файлов; сверх 10 ГБ хранение стоит 0,015 $ за ГБ в месяц, то есть 100 ГБ обойдутся примерно в 1,35 $. Бесплатный тариф даёт мало процессорного времени на запрос, поэтому для длинных документов может понадобиться тариф Workers Paid: 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. Создайте базу данных и хранилище
Сначала включите R2 в панели Cloudflare; Cloudflare может попросить способ оплаты даже в пределах бесплатного объёма. Затем эта команда создаёт базу данных и бакет хранилища и выводит идентификатор базы.
pnpm --filter @golemdocs/server cf:setup
3. Укажите учётную запись, базу и адрес
Скопируйте server/wrangler.local.example.json в server/wrangler.local.json и заполните: идентификатор учётной записи Cloudflare, идентификатор базы из шага 2 и ваш домен. Напишите 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. Укажите адрес вашего сервера и 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: списки документов всех людей хранятся в одной базе, поэтому серверу не нужен API-токен Cloudflare. |
|---|---|
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 остаются за этим проектом.