Vai al contenuto
IntegratoServer e container

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
Esempio. Kiteline è un’azienda fittizia.

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.

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

server-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:

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

Cloudflare 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:

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

Il 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.

Provalo con Docker

Crea la tua organizzazione su app.crunu.com, aggiungi un ambiente e collegalo. Gratis durante l’accesso anticipato.