Servidor próprio
Golem Docs no seu próprio servidor.
O Golem Docs é gratuito e não precisa de servidor nenhum. Um servidor adiciona sincronização entre dispositivos, compartilhamento e edição ao vivo. O golemdocs.com mantém um por US$ 3 por mês, ou você pode manter o seu na sua própria conta da Cloudflare, e os arquivos e as contas são seus.
Como funciona
O servidor é um único Cloudflare Worker. Ele também entrega o app, então o seu endereço vira o Golem Docs para as pessoas que você deixar entrar. Ele guarda tudo em quatro produtos da Cloudflare, todos na sua conta:
| Workers | Os arquivos do app e a API que faz o login das pessoas e guarda os documentos delas. |
|---|---|
| D1 | Um banco de dados: contas, sessões, compartilhamentos e a lista de documentos e pastas de cada pessoa. |
| R2 | Os próprios documentos, suas imagens e suas versões anteriores. |
| Durable Objects | Uma sala para cada documento enquanto as pessoas o editam juntas. |
Por enquanto, ele roda só na Cloudflare. Se você quiser hospedar em outro lugar, no seu próprio computador ou em outro provedor, me escreva e eu monto um plano para rodá-lo sem a Cloudflare.
Quanto custa
Para uma família, pode não custar nada. O plano gratuito da Cloudflare inclui 100.000 requisições por dia e 10 GB de armazenamento de arquivos; acima de 10 GB, o armazenamento custa US$ 0,015 por GB por mês, então 100 GB saem por cerca de US$ 1,35. O plano gratuito permite pouco tempo de processamento por requisição, então documentos longos podem precisar do plano Workers Paid: US$ 5 por mês, com limites bem maiores. Veja os preços da Cloudflare para os valores atuais.
O que você precisa
- Uma conta da Cloudflare. Um domínio nela é opcional: sem ele, seu servidor ganha um endereço workers.dev gratuito.
- Um computador com Node 22.13 ou mais recente e pnpm, para configurar e atualizar. Nada roda nele depois.
- Uma conta do GitHub, para criar o app de login. Login com Google, Microsoft e Apple também funciona.
Configurando
Leva cerca de meia hora. Cada comando roda em um terminal, na pasta para onde você baixar o código.
1. Baixe o código e entre na Cloudflare
Isso baixa o Golem Docs, instala o que ele precisa e abre o navegador para que ele possa usar sua conta da Cloudflare.
git clone https://github.com/davidfig/golemdocs.git cd golemdocs pnpm install pnpm --filter @golemdocs/server exec wrangler login
2. Crie o banco de dados e o armazenamento
Primeiro ative o R2 no painel da Cloudflare; a Cloudflare pode pedir uma forma de pagamento, mesmo dentro da cota gratuita. Depois, isso cria o banco de dados e o bucket de armazenamento, e mostra o id do banco.
pnpm --filter @golemdocs/server cf:setup
3. Informe a conta, o banco e o endereço
Copie server/wrangler.local.example.json para server/wrangler.local.json e preencha: o id da sua conta da Cloudflare, o id do banco do passo 2 e o seu domínio. Escreva workers.dev como domínio para usar o endereço gratuito.
{
"ACCOUNT_ID": "…",
"DIRECTORY_ID": "…",
"DIRECTORY_DEV_ID": "",
"DOMAIN": "docs.example.com"
}
4. Crie as tabelas e coloque no ar
O segundo comando compila o app, envia com o servidor e mostra o endereço em que ele está.
pnpm --filter @golemdocs/server cf:migrate pnpm --filter @golemdocs/server deploy:prod
5. Crie um app de login
No GitHub, abra Settings › Developer settings › OAuth Apps › New OAuth App. Informe o endereço do seu servidor e https://<seu endereço>/api/auth/callback/github como URL de callback. Depois gere um client secret.
6. Defina quem pode entrar
Cada comando pede um valor. Rode-os na pasta 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: a lista de documentos de todos fica no único banco de dados, então o servidor não precisa de um token da API da Cloudflare. |
|---|---|
ALLOWED_EMAILS | Quem pode entrar: endereços completos (me@example.com) ou um domínio inteiro (@example.com), separados por vírgulas. Defina, ou qualquer pessoa que encontrar seu endereço pode se cadastrar e guardar arquivos na sua conta. |
ADMIN_EMAILS | O seu próprio endereço. Administradores sempre podem entrar e ler os comentários que as pessoas enviam. |
LINK_WEBSITE, LINK_SUPPORT… | Opcional: para onde apontam os links do menu Ajuda e do documento de boas-vindas, em vez do golemdocs.com. O guia completo lista todos. |
7. Entre
Abra o seu endereço e entre com o GitHub. Os documentos que você criar com o login feito agora ficam no seu servidor, e as pessoas da sua lista podem compartilhá-los entre si.
Mantendo atualizado
Quando sair uma versão nova, baixe e coloque no ar do mesmo jeito. Leia antes o Diário: uma versão que muda como arquivos ou contas são guardados avisa lá.
git pull pnpm install pnpm --filter @golemdocs/server cf:migrate pnpm --filter @golemdocs/server deploy:prod
O que muda em relação ao golemdocs.com
- Use no navegador. Por enquanto, os aplicativos para computador e celular se conectam só ao golemdocs.com.
- Nada é vendido. Todos que você deixar entrar têm sincronização, compartilhamento e edição ao vivo.
- As pessoas do seu servidor podem compartilhar entre si, mas não com contas do golemdocs.com ou de outros servidores.
- Quem cuida é você: as atualizações e os backups do banco de dados e do armazenamento.
O app e o servidor estão sob a AGPL-3.0: se você roda uma versão modificada para outras pessoas, ofereça a elas o código-fonte. O nome e o logotipo do Golem Docs ficam com este projeto.