Installare KIVO sul tuo server
KIVO self-hosted è lo stesso KIVO del sito, in un'immagine Docker che gira sulla tua rete. Ogni strumento lavora nel browser di chi lo usa: il server consegna solo l'app, non riceve mai un file e non contatta nessuno. Servono dieci minuti.
Cosa ti serve
- Un server Linux x86-64 (anche una VM) con Docker 20.10 o successivo, oppure Docker Desktop su Windows o macOS.
- 1 CPU e 512 MB di RAM bastano: il server consegna file, il lavoro lo fanno i browser.
- 2 GB di spazio su disco per l'immagine.
- Il file dell'immagine
kivo-selfhost-….tar.gze la licenzalicense.key, entrambi nell'email d'acquisto.
1Scarica l'immagine e la licenza
Dopo l'acquisto ricevi un'email con la licenza in allegato (license.key) e il link per scaricare l'immagine. Lo stesso link resta disponibile nella pagina del tuo ordine su Lemon Squeezy.
Crea una cartella sul server e mettici dentro i due file:
mkdir -p ~/kivo && cd ~/kivo
ls
# kivo-selfhost-1.0.0.tar.gz license.keySalva la licenza dall'allegato, non ricopiandola a mano. Se la incolli dal testo dell'email va bene lo stesso: KIVO ignora gli a capo e gli spazi aggiunti dai programmi di posta.
2Carica l'immagine in Docker
docker load -i kivo-selfhost-*.tar.gzDocker risponde con Loaded image: kivo-selfhost:latest e la versione precisa, per esempio kivo-selfhost:1.0.0. Le due etichette indicano la stessa immagine.
3Avvia KIVO
Il modo consigliato è Docker Compose, perché la configurazione resta scritta in un file. Crea docker-compose.yml nella stessa cartella:
services:
kivo:
image: kivo-selfhost:latest
container_name: kivo
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./license.key:/app/license.key:rodocker compose up -dSe preferisci un solo comando, senza file:
docker run -d --name kivo --restart unless-stopped \
-p 3000:3000 \
-v "$PWD/license.key:/app/license.key:ro" \
kivo-selfhost:latestAvvia il container dopo aver messo license.key nella cartella. Se il file non esiste, Docker crea al suo posto una cartella vuota con lo stesso nome e KIVO non trova la licenza. KIVO te lo segnala con un avviso, e «Problemi comuni» spiega come rimediare.
4Controlla che funzioni
Apri http://indirizzo-del-server:3000 nel browser. Se in cima alla pagina non compare nessun avviso giallo, la licenza è attiva.
Dal server puoi controllare anche da terminale:
curl http://localhost:3000/api/health
curl http://localhost:3000/api/licenseLa prima risposta dice che KIVO è in piedi e quale versione stai usando:
{"ok":true,"edition":"selfhost","version":"…","released":"…"}La seconda mostra la licenza: "state":"valid", a chi è intestata, il piano e fino a quando sono inclusi gli aggiornamenti.
5Mettilo dietro HTTPS
Su localhost KIVO funziona già del tutto. Da altri computer della rete serve HTTPS: i browser attivano funzioni come l'uso offline, la fotocamera del lettore QR, il microfono del registratore e la copia negli appunti solo su connessioni sicure.
Il modo più semplice è Caddy, che ottiene e rinnova il certificato da solo. Basta un file Caddyfile:
kivo.example.com {
reverse_proxy localhost:3000
}Se hai già nginx con un certificato aziendale:
server {
listen 443 ssl;
server_name kivo.example.com;
ssl_certificate /etc/ssl/kivo.crt;
ssl_certificate_key /etc/ssl/kivo.key;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Con un proxy davanti puoi esporre la porta solo in locale: nel file compose scrivi "127.0.0.1:3000:3000" al posto di "3000:3000".
Riferimento
Aggiornamenti
Ogni nuova versione arriva come nuovo file kivo-selfhost-….tar.gz, allo stesso link. Per aggiornare:
docker load -i kivo-selfhost-*.tar.gz
docker compose up -dLa licenza resta quella che hai: non va reinstallata. Se una versione nuova ti dà problemi, torni a quella prima indicando la versione al posto di latest nel file compose (per esempio image: kivo-selfhost:1.0.0) e rilanciando docker compose up -d. La versione precedente è ancora in Docker finché non la cancelli.
Come funziona la licenza
- È perpetua. La versione che hai la puoi usare per sempre.
- Gli aggiornamenti hanno una scadenza, di solito 12 mesi dall'acquisto (illimitati con il piano lifetime). Copre ogni versione uscita entro quella data.
- Se installi una versione uscita dopo la scadenza, KIVO funziona comunque ma mostra un avviso finché non rinnovi gli aggiornamenti.
- Viene verificata sul tuo server, con una firma digitale. KIVO non contatta mai i nostri server, nemmeno per controllarla.
- Quando rinnovi ricevi una nuova
license.key. Sostituisci il file: l'avviso sparisce al caricamento successivo della pagina, senza riavviare.
Per rinnovare incolla la licenza su kivotool.com/it/self-host/renew. I termini completi sono su /self-host/license, anche nella tua installazione.
Reti isolate, senza Internet
L'immagine contiene già tutto: i motori per PDF, video e audio, il riconoscimento del testo con le lingue, il modello che toglie lo sfondo. Non scarica nulla all'avvio e non apre connessioni in uscita: niente statistiche, niente CDN, niente controllo della licenza da remoto.
Per una rete senza Internet ti basta portare i due file sul server (con una chiavetta, per esempio) e seguire i passi qui sopra. Se vuoi verificarlo, blocca il traffico in uscita del container sul firewall: KIVO continua a funzionare uguale.
Configurazione
| Variabile | A cosa serve |
|---|---|
PORT | La porta su cui KIVO ascolta dentro il container. Predefinita 3000. |
KIVO_LICENSE_FILE | Dove cercare la licenza. Predefinito /app/license.key. |
KIVO_LICENSE | Il testo della licenza direttamente, al posto del file. Comodo con i secret di Kubernetes o Portainer. |
Per esempio, con la licenza passata come variabile:
docker run -d -p 3000:3000 -e KIVO_LICENSE="$(cat license.key)" kivo-selfhost:latestNon c'è nient'altro da salvare nei backup oltre a license.key e al file compose. Le Ricette e le preferenze delle persone restano nei loro browser, non sul server.
Problemi comuni
| Cosa vedi | Cosa fare |
|---|---|
| «Questa installazione di KIVO non ha una licenza» | Il file non è dove KIVO lo cerca. Controlla che license.key sia nella stessa cartella di docker-compose.yml, oppure che KIVO_LICENSE_FILE punti al percorso giusto. |
| «license.key è una cartella, non un file» | Il container è partito prima che il file esistesse. docker compose down, cancella la cartella con rm -r license.key, rimetti il file e docker compose up -d. |
| «Non è stato possibile verificare la licenza» | Il file è stato modificato o è incompleto. Salvalo di nuovo dall'allegato dell'email, senza aprirlo in un editor. |
| «La tua licenza copre gli aggiornamenti usciti fino al…» | Questa versione è uscita dopo la fine del tuo periodo di aggiornamenti. Rinnova dal link nell'avviso, oppure torna all'ultima versione coperta. |
| «license.key c'è, ma KIVO non riesce a leggerlo» | KIVO non gira come root dentro il container, quindi il file deve essere leggibile da tutti: chmod 644 license.key. Il motivo esatto è anche in docker logs kivo. |
port is already allocated | La porta 3000 è già usata da un altro servizio. Cambia la prima parte della mappatura, per esempio "8080:3000", e apri http://server:8080. |
| Fotocamera, microfono o modalità offline non funzionano | Stai aprendo KIVO in HTTP da un altro computer. Mettilo dietro HTTPS (passo 5). |
exec format error all'avvio | Il server non è x86-64 (per esempio ARM). Scrivici: prepariamo l'immagine per la tua architettura. |
Disinstallare
docker compose down
docker image rm kivo-selfhost:latestSul server non resta altro. Se ti serve aiuto in qualsiasi momento, rispondi all'email della licenza indicando il suo codice (KV-…) e la risposta di /api/health.