직접 호스팅
내 서버에서 Golem Docs를 운영하세요.
Golem Docs는 무료이며 서버가 전혀 없어도 됩니다. 서버가 있으면 기기 간 동기화, 공유, 실시간 공동 편집이 추가됩니다. golemdocs.com은 월 3달러에 서버를 운영하지만, 내 Cloudflare 계정에서 직접 운영할 수도 있으며 그러면 파일과 계정은 모두 내 것입니다.
작동 방식
서버는 Cloudflare Worker 하나입니다. 앱도 함께 제공하므로, 내 주소가 내가 초대한 사람들에게는 Golem Docs가 됩니다. 모든 데이터는 내 계정에 있는 네 가지 Cloudflare 제품에 보관됩니다.
| Workers | 앱의 파일, 그리고 사람들의 로그인과 문서 보관을 맡는 API. |
|---|---|
| D1 | 데이터베이스 하나: 계정, 세션, 공유, 사람마다의 문서와 폴더 목록. |
| R2 | 문서 자체, 문서의 이미지, 이전 버전. |
| Durable Objects | 여러 사람이 함께 편집하는 동안 쓰는 문서별 방. |
지금은 Cloudflare에서만 실행됩니다. 내 컴퓨터나 다른 서비스 등 다른 곳에서 운영하고 싶다면 알려 주십시오. Cloudflare 없이 실행하는 방안을 마련해 보겠습니다.
비용
가정에서 쓰기에는 비용이 들지 않을 수도 있습니다. Cloudflare 무료 요금제에는 하루 100,000건의 요청과 10GB의 파일 저장 공간이 포함되며, 10GB를 넘는 저장 공간은 GB당 월 0.015달러라서 100GB면 약 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. 테이블을 만들고 온라인에 올리기
두 번째 명령이 앱을 빌드해 서버와 함께 올리고, 접속 주소를 보여 줍니다.
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 이름과 로고는 이 프로젝트의 것입니다.