Vai al contenuto
kivo

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.gz e la licenza license.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:

shell
mkdir -p ~/kivo && cd ~/kivo
ls
# kivo-selfhost-1.0.0.tar.gz  license.key

Salva 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

shell
docker load -i kivo-selfhost-*.tar.gz

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

docker-compose.yml
services:
  kivo:
    image: kivo-selfhost:latest
    container_name: kivo
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./license.key:/app/license.key:ro
shell
docker compose up -d

Se preferisci un solo comando, senza file:

shell
docker run -d --name kivo --restart unless-stopped \
  -p 3000:3000 \
  -v "$PWD/license.key:/app/license.key:ro" \
  kivo-selfhost:latest

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

shell
curl http://localhost:3000/api/health
curl http://localhost:3000/api/license

La prima risposta dice che KIVO è in piedi e quale versione stai usando:

shell
{"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:

Caddyfile
kivo.example.com {
  reverse_proxy localhost:3000
}

Se hai già nginx con un certificato aziendale:

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

shell
docker load -i kivo-selfhost-*.tar.gz
docker compose up -d

La 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

VariabileA cosa serve
PORTLa porta su cui KIVO ascolta dentro il container. Predefinita 3000.
KIVO_LICENSE_FILEDove cercare la licenza. Predefinito /app/license.key.
KIVO_LICENSEIl testo della licenza direttamente, al posto del file. Comodo con i secret di Kubernetes o Portainer.

Per esempio, con la licenza passata come variabile:

shell
docker run -d -p 3000:3000 -e KIVO_LICENSE="$(cat license.key)" kivo-selfhost:latest

Non 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 vediCosa 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 allocatedLa 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 funzionanoStai aprendo KIVO in HTTP da un altro computer. Mettilo dietro HTTPS (passo 5).
exec format error all'avvioIl server non è x86-64 (per esempio ARM). Scrivici: prepariamo l'immagine per la tua architettura.

Disinstallare

shell
docker compose down
docker image rm kivo-selfhost:latest

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