Pruebas independientes Actualizado agosto 2026 387 guías de autoalojamiento 5 proveedores VPS probados

guide

Cómo Autoalojar Jan Server en un VPS (Guía Completa)

Despliega Jan Server en un VPS con Docker Compose: ejecuta el asistente, elige inferencia remota o local, y asegura antes Keycloak y la puerta de enlace Kong.

Jan Server es la mitad autoalojable del proyecto Jan: un conjunto de microservicios en Go que exponen una API compatible con OpenAI, con integración de herramientas MCP, autenticación mediante Keycloak y una puerta de enlace Kong por delante. No es un contenedor único, y el despliegue lo refleja.

La buena noticia es que el proyecto incluye un asistente de configuración que escribe la configuración por ti. La decisión principal que tomas durante el proceso es dónde se ejecuta la inferencia.

Antes de empezar

La mayoría de VPS baratos son de 4 GB y no sirven. Estos superan el suelo:

ProveedorPlanvCPU / RAM / DiscoPrecioEnlace
ContaboCloud VPS 44 / 8 GB / 100 GB5.50 EUR/mes sin IVAContabo
Hetzner CloudCX334 / 8 GB / 80 GB NVMe8.49 EUR/mes sin IVAHetzner Cloud
DigitalOceannivel de droplet de 8 GB8 GBconsulta la tarifa actualDigitalOcean
Vultrnivel de instancia de 8 GB8 GBconsulta la tarifa actualVultr
Linodenivel compartido de 8 GB8 GBconsulta la tarifa actualLinode

Para un desglose más completo de estos planes, consulta nuestra comparativa de VPS.

Paso 1: Conéctate e instala las dependencias

ssh user@your-vps-ip
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-v2 make git
sudo systemctl enable --now docker

Confirma que tienes Compose v2, porque el fichero compose de Jan Server usa la clave include:, que v1 no entiende:

docker compose version

Paso 2: Clona el repositorio

A diferencia de la mayoría de apps autoalojadas, aquí no escribes tu propio docker-compose.yml. El fichero compose del repositorio incorpora fragmentos para la infraestructura, los servicios de API, las herramientas MCP, la app web y la inferencia.

git clone https://github.com/janhq/server.git
cd server

Paso 3: Ejecuta el asistente de configuración

make quickstart

El asistente escribe un único .env en la raíz y luego arranca Compose. Pregunta tres cosas:

Si no puedes ejecutar el asistente de forma interactiva, copia la plantilla y rellénala tú mismo:

cp .env.template .env
nano .env
make setup

make setup comprueba las dependencias, crea los directorios y descarga las imágenes base sin arrancar nada.

Paso 4: Arranca la pila

make up-full

Una vez que los contenedores se estabilizan, tienes:

ServicioPuertoFunción
API Gateway (Kong)8000El punto de entrada para todo
LLM API8080Chat completions compatibles con OpenAI
Response API8082Orquestación de herramientas multi-paso
Media API8285Subidas e IDs de media
MCP Tools8091Búsqueda, scraping, ejecución de código
Web chat UI3001El cliente de navegador
Keycloak8085Consola de autenticación

La documentación de la API se sirve en http://your-vps-ip:8000/api/swagger/index.html.

Paso 5: Asegúralo antes de exponerlo

Este es el paso que no debes saltarte. Dos valores por defecto son inseguros en un servidor público:

  1. La consola de Keycloak viene con admin / admin. Cámbialo de inmediato en el puerto 8085. Keycloak emite los tokens que Kong valida, así que esta única credencial protege toda la superficie de la API.
  2. Solo el puerto 8000 debería ser accesible desde fuera. Kong aplica las comprobaciones de JWT y clave de API; los puertos de servicio detrás de él no lo hacen. Vincula el resto a localhost o bloquéalos en el firewall.
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw enable

Después, termina el TLS con Caddy, Traefik o Nginx y haz proxy al puerto 8000. Dejar un endpoint de LLM sin autenticación en internet hace que alguien lo encuentre y lo use, normalmente en cuestión de días.

Ejecutar la inferencia en local

Si elegiste vLLM en local, el fragmento de inferencia define dos perfiles. El perfil de GPU ejecuta vllm/vllm-openai:v0.11.2 con janhq/Jan-v1-4B como modelo por defecto y reserva un dispositivo NVIDIA, así que no arrancará en un VPS típico. El perfil de CPU funciona sin GPU y es realmente utilizable para pruebas, pero la generación de tokens en vCPU compartidas es lo bastante lenta como para no quererlo delante de usuarios reales.

Alquilar capacidad de GPU y apuntar Jan Server a ella como endpoint remoto suele salir más barato que tener un servidor con GPU parado entre peticiones.

Operación del día a día

Actualizar a una versión más reciente:

git pull
docker compose pull
make up-full

Haz copia de seguridad del volumen de Postgres y de tu .env raíz. El .env guarda los secretos que generó el asistente, y restaurar una base de datos sin él te deja con sesiones que no puedes descifrar.

Comprueba qué está haciendo un servicio con docker compose logs -f llm-api, sustituyendo por el servicio que te interese.

Problemas comunes

SíntomaCausa
include no es una clave válida de composeTienes instalado Docker Compose v1; necesitas v2
Los contenedores se matan durante el arranqueCon menos de 8 GB de RAM, la pila recibe un OOM-kill
Todas las llamadas a la API devuelven 401Las peticiones llegan directamente a un puerto de servicio en vez de a Kong en el 8000
El contenedor de vLLM nunca queda healthyEl perfil de GPU está activo en un host sin dispositivo NVIDIA

Jan Server exige más a un VPS que una app autoalojada típica, sobre todo porque trae su propia puerta de enlace, proveedor de identidad y base de datos en vez de asumir que ya los tienes. Dimensiona para 8 GB, pon Kong detrás de TLS, y cambia la contraseña de Keycloak antes que nada.

Frequently asked questions

¿Necesito una GPU para autoalojar Jan Server en un VPS?

No, si eliges un endpoint remoto compatible con OpenAI cuando el asistente de configuración pregunte por tu proveedor de LLM. El VPS entonces solo ejecuta los servicios de API, orquestación y autenticación. La opción de vLLM en local tiene un perfil de GPU que espera una tarjeta NVIDIA y un perfil de CPU que funciona sin ella a mucha menos velocidad.

¿Por qué la consola de Keycloak acepta admin como usuario y como contraseña?

Esa es la credencial por defecto que trae la configuración de compose, y está bien en un portátil pero no en un servidor público. Cámbiala antes de abrir cualquier puerto a internet, porque el realm de Keycloak es lo que protege cada ruta de la API detrás de la puerta de enlace Kong.

¿Qué puerto debo poner detrás de mi proxy inverso?

El puerto 8000, la puerta de enlace de API Kong. Es el punto de entrada documentado y aplica las comprobaciones de JWT y clave de API delante de los servicios individuales. Publicar los puertos de los servicios directamente permitiría a quien llame saltarse por completo la puerta de enlace y su autenticación.