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:

WorkersOs arquivos do app e a API que faz o login das pessoas e guarda os documentos delas.
D1Um banco de dados: contas, sessões, compartilhamentos e a lista de documentos e pastas de cada pessoa.
R2Os próprios documentos, suas imagens e suas versões anteriores.
Durable ObjectsUma 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

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_DATABASEtrue: 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_EMAILSQuem 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_EMAILSO 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

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.