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
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.
node scripts/server-init.mjs --origin https://vault.company.example --out deploy/docker/.env
docker compose -f deploy/docker/compose.yml up -d --buildO 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:
node scripts/doctor.mjs https://vault.company.exampleCloudflare 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:
docker compose -f deploy/docker/compose.yml -f deploy/docker/compose.tunnel.yml up -d --buildO 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.