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.gzy la licencialicense.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:
mkdir -p ~/kivo && cd ~/kivo
ls
# kivo-selfhost-1.0.0.tar.gz license.keyGuarda 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
docker load -i kivo-selfhost-*.tar.gzDocker 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:
services:
kivo:
image: kivo-selfhost:latest
container_name: kivo
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./license.key:/app/license.key:rodocker compose up -dSi prefieres un solo comando, sin archivo:
docker run -d --name kivo --restart unless-stopped \
-p 3000:3000 \
-v "$PWD/license.key:/app/license.key:ro" \
kivo-selfhost:latestArranca 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:
curl http://localhost:3000/api/health
curl http://localhost:3000/api/licenseLa primera respuesta dice que KIVO está en marcha y qué versión usas:
{"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:
kivo.example.com {
reverse_proxy localhost:3000
}Si ya usas nginx con un certificado de empresa:
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:
docker load -i kivo-selfhost-*.tar.gz
docker compose up -dTu 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
| Variable | Qué hace |
|---|---|
PORT | El puerto en el que escucha KIVO dentro del contenedor. Por defecto 3000. |
KIVO_LICENSE_FILE | Dónde buscar la licencia. Por defecto /app/license.key. |
KIVO_LICENSE | El 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:
docker run -d -p 3000:3000 -e KIVO_LICENSE="$(cat license.key)" kivo-selfhost:latestNo 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 ves | Qué 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 allocated | Otra 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 funcionan | Estás abriendo KIVO por HTTP simple desde otro ordenador. Ponlo detrás de HTTPS (paso 5). |
exec format error al arrancar | El servidor no es x86-64 (ARM, por ejemplo). Escríbenos: prepararemos la imagen para tu arquitectura. |
Desinstalar
docker compose down
docker image rm kivo-selfhost:latestNo 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.