Eseguire il server Crunu con Docker Compose
Ospita il server Crunu su una tua macchina con Docker Compose: Caddy per il TLS automatico o Cloudflare Tunnel senza porte aperte, e SQLite o Postgres.
- Supporto
- Funziona con Crunu oggi: il supporto per Docker fa parte del prodotto.
- Funzionalità di Crunu
- Self-hosting e Vault cifrato
- Verificato
- Con Crunu 6.0.0 il 28 ottobre 2026
Funzionalità di Crunu che funzionano con Docker
Ogni funzionalità qui sotto funziona allo stesso modo in ogni integrazione: il server conserva testo cifrato, e solo le persone, le macchine e i token a cui concedi l’accesso possono decifrare.
Self-hosting
Esegui lo stesso server Crunu sul tuo host Docker, su Cloudflare Workers, Vercel o Google Cloud Run, e spostati dall’uno all’altro con un solo archivio.
Scopri di più
Vault cifrato
Conserva file .env, credenziali cloud e chiavi API in progetti e ambienti, cifrati sui tuoi dispositivi prima che qualcosa raggiunga il server.
Scopri di più
Come funziona con Docker
In questa pagina
Cosa fa Crunu con Docker
Crunu funziona nel cloud su app.crunu.com, quindi la maggior parte dei team non esegue mai il deploy di un server. Se preferisci tenerlo su una tua macchina, il server include una configurazione Docker Compose: il container del server più Caddy, che emette da solo il certificato TLS per il tuo dominio.
Il server è cieco ovunque giri. Il suo database contiene testo cifrato, chiavi pubbliche, documenti firmati e metadati, e non ha nessuna chiave in grado di decifrare un valore. Vedi self-hosting per un confronto tra le opzioni.
Che cosa ti occorre
- Una macchina con Docker e un dominio con un record A o AAAA che punta a essa.
- Le porte 80 e 443 aperte, così Caddy può ottenere un certificato.
- Node.js 24 e i file del server Crunu su quella macchina. I comandi qui sotto si eseguono dalla directory del server.
Avviare il server
Scegli l’indirizzo del server una volta sola. Le firme di accesso, i link di condivisione, le passkey e le macchine registrate sono tutti legati a quell’indirizzo, e passare in seguito a un’altra piattaforma mantiene lo stesso indirizzo.
node scripts/server-init.mjs --origin https://vault.company.example --out deploy/docker/.env
docker compose -f deploy/docker/compose.yml up -d --buildserver-init scrive un file .env con permessi 0600 e nuovi valori per SERVER_KEY, BOOTSTRAP_TOKEN e CRON_SECRET. Salvane subito una copia in un password manager: senza di esso il server non si può ripristinare. Il database è SQLite in un volume Docker per impostazione predefinita. Per Postgres accanto al server, esegui server-init con --docker-postgres.
Poi controlla il deployment e crea il primo proprietario con la chiave di bootstrap presa da .env:
node scripts/doctor.mjs https://vault.company.exampleCloudflare Tunnel invece di porte aperte
Il server può anche raggiungere internet tramite un Cloudflare Tunnel. Sulla macchina non viene pubblicato nulla, cloudflared si collega direttamente al server e il TLS lo termina Cloudflare. Metti il token del tunnel in deploy/docker/.env, punta l’hostname pubblico del tunnel al servizio server:8080 e aggiungi il file del tunnel sopra quello principale:
docker compose -f deploy/docker/compose.yml -f deploy/docker/compose.tunnel.yml up -d --buildIl file del tunnel dà a cloudflared un indirizzo fisso sulla propria rete Docker, e il server si fida dell’intestazione con l’indirizzo del client solo da quell’indirizzo, così le restrizioni di rete vedono il vero indirizzo del client.
Come gira il container
La configurazione Compose esegue il server con un filesystem root di sola lettura, nessuna capability Linux e un utente senza privilegi, ed è testata per riavviarsi sullo stesso database. Il server applica da solo le migrazioni dello schema all’avvio. Un aggiornamento è lo stesso docker compose … up -d --build dopo aver scaricato la nuova versione.
L’immagine incorpora un client web già pronto da dist/web/. Se quella directory manca, o contiene una versione diversa da quella del server, la build si ferma invece di compilare da sola un client web non firmato.
Backup e spostamenti
crunu-server export scrive l’intero database in un unico archivio senza valori in chiaro, e crunu-server import lo carica in un database vuoto su qualsiasi piattaforma supportata: Docker, Cloudflare Workers, Vercel o Google Cloud Run. Mantieni lo stesso .env e lo stesso indirizzo, e cambia solo il record DNS.
Quell’archivio sposta un server che gestisci tu. Passare da app.crunu.com a un tuo server non si fa in un solo passaggio, perché solo il gestore può raggiungere il database del cloud. Esporta ogni ambiente come file .env o scarica una copia offline, poi aggiungi i file al tuo server. Cronologia, impostazioni di accesso e registro di audit non si trasferiscono in questo modo.
L’agente crunu nei container
Lo script di installazione dell’agente crunu ha una modalità senza root per CI e container. È testato nelle immagini node:24, Ubuntu 24.04 e Alpine 3.22. Nella CI e in altri container di breve durata, crunu funziona con un token di servizio: accede e decifra all’interno del proprio processo, senza file di stato. Un’immagine minimale senza ca-certificates non può verificare il certificato del server, e crunu ti dice quale pacchetto installare.
Il servizio dell’agente in background ha bisogno di systemd e gira su host Linux. Vedi systemd.
Correlati
Dubbi frequenti
Non trovi la risposta? Scrivi a support@crunu.com e ti risponderà una persona.
Dove trovo il server?
Il server non è pubblicato come download pubblico. Scrivi a support@crunu.com.
Quale database usa?
SQLite in un volume Docker per impostazione predefinita, oppure Postgres accanto al server.
Posso evitare di aprire porte?
Sì. Eseguilo dietro Cloudflare Tunnel con il file Compose del tunnel, e il TLS lo termina Cloudflare.
Posso passare da app.crunu.com a un mio server?
Non in un solo passaggio. Esporta ogni ambiente come file .env o scarica una copia offline. Cronologia, impostazioni di accesso e registro di audit non si trasferiscono in questo modo.