Ir al contenido
kivo

Instala KIVO en tu propio servidor

KIVO self-hosted es el mismo KIVO de la web, en una imagen Docker que funciona en tu red. Cada herramienta trabaja en el navegador del usuario: el servidor solo entrega la aplicación, nunca recibe un archivo y nunca contacta con nadie. Se tarda diez minutos.

Qué necesitas

  • Un servidor Linux x86-64 (una VM sirve) con Docker 20.10 o posterior, o Docker Desktop en Windows o macOS.
  • Bastan 1 CPU y 512 MB de RAM: el servidor entrega archivos, los navegadores hacen el trabajo.
  • 2 GB de disco para la imagen.
  • El archivo de imagen kivo-selfhost-….tar.gz y la licencia license.key, ambos del email de compra.

1Descarga la imagen y la licencia

Después de comprar recibes un email con la licencia adjunta (license.key) y un enlace para descargar la imagen. El mismo enlace sigue disponible en la página de tu pedido en Lemon Squeezy.

Crea una carpeta en el servidor y pon ahí los dos archivos:

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

Guarda la licencia desde el adjunto en lugar de copiarla a mano. Pegarla desde el cuerpo del email también funciona: KIVO ignora los saltos de línea y espacios que añaden los clientes de correo.

2Carga la imagen en Docker

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

Docker responde con Loaded image: kivo-selfhost:latest y la versión exacta, por ejemplo kivo-selfhost:1.0.0. Las dos etiquetas son la misma imagen.

3Arranca KIVO

Docker Compose es la vía recomendada, porque la configuración queda escrita en un archivo. Crea docker-compose.yml en la misma carpeta:

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

Si prefieres un solo comando, sin archivo:

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

Arranca el contenedor después de poner license.key en la carpeta. Si el archivo no existe, Docker crea en su lugar una carpeta vacía con el mismo nombre y KIVO no encuentra la licencia. KIVO te lo dice en un aviso, y en «Problemas habituales» está la solución.

4Comprueba que funciona

Abre http://tu-servidor:3000 en un navegador. Si no aparece ningún aviso amarillo arriba, la licencia está activa.

Desde el servidor también puedes comprobarlo en una terminal:

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

La primera respuesta dice que KIVO está en marcha y qué versión usas:

shell
{"ok":true,"edition":"selfhost","version":"…","released":"…"}

La segunda muestra la licencia: "state":"valid", a quién está emitida, el plan y cuándo terminan las actualizaciones incluidas.

5Ponlo detrás de HTTPS

En localhost KIVO ya funciona del todo. Desde otros ordenadores de la red necesita HTTPS: los navegadores solo activan el uso sin conexión, la cámara del lector QR, el micrófono de la grabadora y la copia al portapapeles en conexiones seguras.

La vía más sencilla es Caddy, que obtiene y renueva el certificado solo. Basta un Caddyfile:

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

Si ya usas nginx con un certificado de empresa:

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 delante puedes exponer el puerto solo en local: escribe "127.0.0.1:3000:3000" en lugar de "3000:3000" en el archivo compose.


Referencia

Actualizaciones

Cada versión nueva llega como un nuevo archivo kivo-selfhost-….tar.gz, en el mismo enlace. Para actualizar:

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

Tu licencia se queda como está: no hay nada que reinstalar. Si una versión nueva te da problemas, vuelve atrás indicando la versión en lugar de latest en el archivo compose (por ejemplo image: kivo-selfhost:1.0.0) y ejecutando de nuevo docker compose up -d. La versión anterior sigue en Docker hasta que la borres.

Cómo funciona la licencia

  • Es perpetua. Puedes usar la versión que tienes para siempre.
  • Las actualizaciones tienen fecha de fin, normalmente 12 meses desde la compra (ilimitadas en el plan de por vida). Toda versión publicada antes de esa fecha está cubierta.
  • Si instalas una versión publicada después de esa fecha, KIVO sigue funcionando pero muestra un aviso hasta que renueves las actualizaciones.
  • Se comprueba en tu propio servidor, con una firma digital. KIVO nunca contacta con nuestros servidores, ni siquiera para comprobarla.
  • Al renovar recibes un nuevo license.key. Sustituye el archivo: el aviso desaparece en la siguiente carga de página, sin reiniciar.

Para renovar, pega tu licencia en kivotool.com/es/self-host/renew. Los términos completos están en /self-host/license, también en tu propia instalación.

Redes aisladas, sin Internet

La imagen ya lo contiene todo: los motores de PDF, vídeo y audio, el reconocimiento de texto con sus idiomas, el modelo para quitar fondos. No descarga nada al arrancar y no abre conexiones salientes: sin analítica, sin CDN, sin comprobación remota de la licencia.

Para una red sin Internet, lleva los dos archivos al servidor (en una memoria USB, por ejemplo) y sigue los pasos de arriba. Para verificarlo, bloquea en el cortafuegos el tráfico saliente del contenedor: KIVO sigue funcionando exactamente igual.

Configuración

VariableQué hace
PORTEl puerto en el que escucha KIVO dentro del contenedor. Por defecto 3000.
KIVO_LICENSE_FILEDónde buscar la licencia. Por defecto /app/license.key.
KIVO_LICENSEEl texto de la licencia en sí, en lugar de un archivo. Útil con los secretos de Kubernetes o Portainer.

Por ejemplo, con la licencia pasada como variable:

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

No hay nada que copiar aparte de license.key y el archivo compose. Las Recetas y preferencias de cada persona viven en su propio navegador, no en el servidor.

Problemas habituales

Lo que vesQué hacer
«Esta instalación de KIVO no tiene licencia»El archivo no está donde KIVO lo busca. Comprueba que license.key esté en la misma carpeta que docker-compose.yml, o que KIVO_LICENSE_FILE apunte a la ruta correcta.
«license.key es una carpeta, no un archivo»El contenedor arrancó antes de que existiera el archivo. docker compose down, borra la carpeta con rm -r license.key, vuelve a poner el archivo y docker compose up -d.
«No se ha podido verificar la licencia de esta instalación»El archivo se ha modificado o está incompleto. Guárdalo de nuevo desde el adjunto del email, sin abrirlo en un editor.
«Tu licencia cubre las actualizaciones publicadas hasta…»Esta versión salió después de que terminara tu periodo de actualizaciones. Renueva desde el enlace del aviso o vuelve a la última versión cubierta.
«license.key existe, pero KIVO no puede leerlo»KIVO no se ejecuta como root dentro del contenedor, así que el archivo debe poder leerlo cualquiera: chmod 644 license.key. El motivo exacto también aparece en docker logs kivo.
port is already allocatedOtra cosa usa el puerto 3000. Cambia la primera mitad del mapeo, por ejemplo "8080:3000", y abre http://servidor:8080.
La cámara, el micrófono o el modo sin conexión no funcionanEstás abriendo KIVO por HTTP simple desde otro ordenador. Ponlo detrás de HTTPS (paso 5).
exec format error al arrancarEl servidor no es x86-64 (ARM, por ejemplo). Escríbenos: prepararemos la imagen para tu arquitectura.

Desinstalar

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

No queda nada más en el servidor. Si necesitas ayuda en cualquier momento, responde al email de tu licencia con su código (KV-…) y la salida de /api/health.