Pular para o conteúdo
EmbutidoServidores e contêineres

Rode o servidor do Crunu com Docker Compose

Hospede o servidor do Crunu na sua máquina com Docker Compose: Caddy para TLS automático ou Cloudflare Tunnel sem portas abertas, e SQLite ou Postgres.

Compatibilidade
Funciona com o Crunu hoje: o suporte a Docker faz parte do produto.
Recursos do Crunu
Hospedagem própria e Cofre criptografado
Conferido
Com o Crunu 6.0.0 em 28 de outubro de 2026
Exemplo. A Kiteline é uma empresa fictícia.

Recursos do Crunu que funcionam com Docker

Cada recurso abaixo funciona do mesmo jeito em todas as integrações: o servidor guarda texto cifrado, e só as pessoas, máquinas e tokens que você autorizar conseguem descriptografar.

  • Hospedagem própria

    Rode o mesmo servidor do Crunu no seu host Docker, no Cloudflare Workers, na Vercel ou no Google Cloud Run, e mude entre eles com um único arquivo.

    Saiba mais

  • Cofre criptografado

    Guarde arquivos .env, credenciais de nuvem e chaves de API em projetos e ambientes, criptografados nos seus dispositivos antes que qualquer coisa chegue ao servidor.

    Saiba mais

Como funciona com Docker

Nesta página

O que o Crunu faz com o Docker

O Crunu roda na nuvem em app.crunu.com, então a maioria das equipes nunca faz o deploy de um servidor. Se você prefere mantê-lo na sua própria máquina, o servidor vem com uma configuração de Docker Compose: o contêiner do servidor e o Caddy, que emite sozinho o certificado TLS do seu domínio.

O servidor é cego onde quer que rode. O banco de dados dele guarda texto cifrado, chaves públicas, documentos assinados e metadados, e ele não tem nenhuma chave que descriptografe um valor. Veja em hospedagem própria como as opções se comparam.

O que você precisa

  • Uma máquina com Docker e um domínio com um registro A ou AAAA apontando para ela.
  • As portas 80 e 443 abertas, para que o Caddy consiga um certificado.
  • Node.js 24 e os arquivos do servidor do Crunu nessa máquina. Os comandos abaixo rodam a partir do diretório do servidor.

Inicie o servidor

Escolha o endereço do servidor uma vez. As assinaturas de login, os links de compartilhamento, as passkeys e as máquinas registradas ficam todos vinculados a ele, e mudar de plataforma depois mantém o mesmo endereço.

Shell
node scripts/server-init.mjs --origin https://vault.company.example --out deploy/docker/.env
docker compose -f deploy/docker/compose.yml up -d --build

O server-init grava um arquivo .env com permissões 0600 e valores novos para SERVER_KEY, BOOTSTRAP_TOKEN e CRON_SECRET. Guarde uma cópia dele num gerenciador de senhas na mesma hora: sem ele, o servidor não pode ser restaurado. O banco de dados é SQLite num volume do Docker, por padrão. Para Postgres ao lado do servidor, rode o server-init com --docker-postgres.

Depois, confira o deploy e crie o primeiro Owner com a chave de inicialização do .env:

Shell
node scripts/doctor.mjs https://vault.company.example

Cloudflare Tunnel em vez de portas abertas

O servidor também pode chegar à internet por um Cloudflare Tunnel. Nada é publicado na máquina, o cloudflared se conecta direto ao servidor, e o Cloudflare encerra o TLS. Coloque o token do túnel em deploy/docker/.env, aponte o hostname público do túnel para o serviço server:8080 e adicione o arquivo do túnel por cima do principal:

Shell
docker compose -f deploy/docker/compose.yml -f deploy/docker/compose.tunnel.yml up -d --build

O arquivo do túnel dá ao cloudflared um endereço fixo na própria rede do Docker, e o servidor só confia no cabeçalho com o endereço do cliente vindo desse endereço, então as restrições de rede veem o endereço real do cliente.

Como o contêiner roda

A configuração do Compose roda o servidor com o sistema de arquivos raiz somente leitura, sem capabilities do Linux e com um usuário sem privilégios, e ela é testada para reiniciar com o mesmo banco de dados. O próprio servidor aplica as migrações de esquema ao iniciar. Uma atualização é o mesmo docker compose … up -d --build depois de você baixar a versão nova.

A imagem embute um cliente web pronto, de dist/web/. Se esse diretório estiver faltando, ou tiver uma versão diferente da do servidor, o build para, em vez de montar por conta própria um cliente web sem assinatura.

Backups e mudança de plataforma

O crunu-server export grava o banco de dados inteiro num único arquivo sem valores em texto puro, e o crunu-server import o carrega num banco de dados vazio em qualquer plataforma compatível: Docker, Cloudflare Workers, Vercel ou Google Cloud Run. Mantenha o mesmo .env e o mesmo endereço, e só o registro DNS muda.

Esse arquivo leva um servidor que você opera. Passar do app.crunu.com para um servidor próprio não é um único passo, porque só o operador tem acesso ao banco de dados da nuvem. Exporte cada ambiente como um arquivo .env ou baixe uma cópia offline e depois adicione os arquivos ao seu servidor. O histórico, as configurações de acesso e o log de auditoria não vão junto dessa forma.

O agente crunu em contêineres

O script de instalação do agente crunu tem um modo sem root para CI e contêineres. Ele é testado nas imagens node:24, Ubuntu 24.04 e Alpine 3.22. No CI e em outros contêineres de vida curta, o crunu funciona com um token de serviço: ele entra e descriptografa dentro do próprio processo, sem arquivos de estado. Uma imagem mínima sem ca-certificates não consegue verificar o certificado do servidor, e o crunu diz qual pacote instalar.

O serviço do agente em segundo plano precisa do systemd e roda em hosts Linux. Veja systemd.

Veja também

Dúvidas e respostas

Não encontrou a resposta? Escreva para support@crunu.com, e uma pessoa vai responder.

Onde eu consigo o servidor?

O servidor não é publicado como download público. Escreva para support@crunu.com.

Qual banco de dados ele usa?

SQLite num volume do Docker, por padrão, ou Postgres ao lado do servidor.

Dá para evitar abrir portas?

Sim. Rode-o atrás do Cloudflare Tunnel com o arquivo Compose do túnel, e o Cloudflare encerra o TLS.

Posso passar do app.crunu.com para o meu próprio servidor?

Não num único passo. Exporte cada ambiente como um arquivo .env ou baixe uma cópia offline. O histórico, as configurações de acesso e o log de auditoria não vão junto dessa forma.

Experimente com Docker

Crie a sua organização em app.crunu.com, adicione um ambiente e conecte-o. Grátis durante o acesso antecipado.