Tutoriales de VPS
Alojar Perplexica, el buscador de IA privado, en un VPS (2026): guía de despliegue con SearXNG, Docker, Ollama/OpenAI y HTTPS
Este tutorial explica cómo autoalojar Perplexica / Vane en un VPS para crear un buscador de IA privado similar a Perplexity. Cubre el backend de búsqueda SearXNG, el despliegue con un solo contenedor Docker, una solución avanzada con SearXNG independiente, la integración de modelos OpenAI/Ollama, HTTPS con Caddy, la privacidad de las búsquedas, la copia de seguridad y actualización, y problemas habituales como el error 502, la ausencia de resultados de búsqueda y los fallos de conexión con el modelo.

Hoy en día, cuando busco información, cada vez dependo menos de las páginas de resultados de búsqueda tradicionales.
No es que los buscadores hayan dejado de ser útiles, sino que muchas preguntas no encajan con ir abriendo página tras página: por ejemplo, «cómo se despliega cierta herramienta», «cómo se corrige este error» o «qué diferencias hay entre varias soluciones». Una búsqueda normal te da 10 enlaces, y aun así tienes que abrirlos tú mismo, compararlos y descartar anuncios y artículos antiguos.
Herramientas de búsqueda con IA como Perplexity se popularizaron precisamente porque combinan «búsqueda + resumen + fuentes citadas» en una sola cosa.
Pero el problema también es evidente: lo que buscas, lo que clicas y lo que preguntas están, por defecto, en la plataforma de otro.
Si quieres un punto de entrada de búsqueda con IA que controles tú mismo, echa un vistazo a Perplexica. Ahora el proyecto va adoptando gradualmente el nombre Vane en GitHub, pero mucha gente sigue buscándolo por el nombre antiguo Perplexica. Para facilitar la comprensión, a continuación lo llamaré principalmente Perplexica.
Su planteamiento es directo:
- Usar SearXNG como backend de búsqueda
- Usar un modelo grande para organizar los resultados de búsqueda
- Darte una respuesta con fuentes citadas
- Puede conectarse a OpenAI, Claude, Groq o modelos locales de Ollama
Este artículo lo aborda desde el autoalojamiento en VPS: cómo desplegar, qué configuración se necesita, cómo configurar HTTPS, por qué el JSON de SearXNG es fundamental y qué errores evitar.
Perplexica no es un buscador normal, ni tampoco un chatbot puro.
Encaja en escenarios como estos:
| Necesidad | ¿Adecuado para Perplexica? | Motivo |
|---|---|---|
| Querer construir un buscador con IA similar a Perplexity | Adecuado | El modelo organiza los resultados de búsqueda en respuestas |
| Querer reducir que las plataformas registren el comportamiento de búsqueda | Adecuado | El punto de entrada de búsqueda y SearXNG están en tu propio VPS |
| Investigación de SEO, competencia y material técnico | Adecuado | Puede resumir rápidamente múltiples fuentes |
| Solo querer montar un cuadro de búsqueda normal | No necesariamente | SearXNG por sí solo es más ligero |
| Querer preguntas y respuestas sobre documentos privados | No muy adecuado | AnythingLLM / Dify son más apropiados |
| Querer ejecutar búsqueda con IA totalmente local | Posible, pero la máquina debe ser suficientemente potente | La inferencia local con Ollama consume muchos recursos |
Yo lo entiendo así: SearXNG se encarga de encontrar material y el modelo grande se encarga de leerlo.
Si solo quieres buscar páginas web, SearXNG es suficiente. Si quieres obtener directamente respuestas con fuentes tras buscar, entonces Perplexica tiene sentido.
Aquí también hay que distinguir dos casos.
Si usas API como OpenAI, Claude, Groq u OpenRouter, la carga del VPS no es alta.
El VPS ejecuta principalmente:
- La aplicación web Perplexica / Vane
- SearXNG integrado o independiente
- SQLite / datos de configuración
- Proxy inverso y HTTPS
Configuración recomendada:
| Uso | Configuración del VPS |
|---|---|
| Pruebas personales | 1 núcleo / 2GB / 20GB SSD |
| Uso personal a largo plazo | 2 núcleos / 4GB / 40GB SSD |
| Uso multiusuario | 4 núcleos / 8GB / 80GB SSD |
Este tipo de despliegue no necesita GPU. La inferencia del modelo ocurre en el proveedor de la API y el VPS solo se encarga de buscar y reenviar solicitudes.
Si quieres que el modelo también se ejecute en el VPS, los requisitos de configuración suben.
| Solución | Configuración recomendada |
|---|---|
| Perplexica + API en la nube | 2 núcleos 4GB es bastante cómodo |
| Perplexica + modelo pequeño de Ollama | A partir de 4 núcleos 16GB |
| Querer ejecutar modelos de más de 14B | VPS con GPU o una máquina local con tarjeta gráfica |
Un VPS pequeño y barato puede ejecutar Perplexica, pero no esperes que 2GB de memoria ejecuten a la vez un modelo Ollama 7B. Poder arrancar y poder usarse son dos cosas distintas.
La forma sencilla recomendada oficialmente es Docker. La imagen full de Perplexica incluye SearXNG dentro, así que no hace falta desplegar el backend de búsqueda por separado.
Primero inicia sesión en el VPS:
ssh root@your_server_ip
Actualiza el sistema:
apt update && apt upgrade -y
Instala Docker:
apt install -y ca-certificates curl gnupg ufw
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Confirma Docker:
docker --version
docker compose version
Ejecuta Perplexica:
docker run -d \
--name perplexica \
--restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-v perplexica-data:/home/perplexica/data \
itzcrazykns1337/perplexica:latest
Aquí he usado deliberadamente:
127.0.0.1:3000:3000
Significa que solo se permite el acceso local y no se expone directamente a internet. Después se usa Caddy como proxy inverso hacia un dominio HTTPS.
Ver el estado del contenedor:
docker ps --filter "name=perplexica"
Ver los registros:
docker logs perplexica --tail=100
Probar en local:
curl -I http://127.0.0.1:3000
Si devuelve 200, 302 o una respuesta similar, el servicio está básicamente en marcha.
Si prefieres un enfoque más mantenible, usa Compose.
Crear el directorio:
mkdir -p /opt/perplexica
cd /opt/perplexica
Escribir docker-compose.yml:
services:
perplexica:
image: itzcrazykns1337/perplexica:latest
container_name: perplexica
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
volumes:
- perplexica-data:/home/perplexica/data
volumes:
perplexica-data:
Iniciar:
docker compose up -d
Comprobar:
docker compose ps
docker logs perplexica --tail=100
Esta solución es adecuada para la mayoría: un contenedor, SearXNG integrado y datos persistidos con un volume.
Supongamos que vas a usar:
search.example.com
Añade un registro A en DNS:
search.example.com -> your_server_ip
Instala Caddy:
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' > /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install -y caddy
Edita la configuración:
nano /etc/caddy/Caddyfile
Escribe:
search.example.com {
reverse_proxy 127.0.0.1:3000
}
Comprueba y recarga:
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy
Ahora visita:
https://search.example.com
Caddy solicitará y renovará automáticamente los certificados HTTPS.
Si usas el proxy inverso de Caddy, solo necesitas abrir SSH, HTTP y HTTPS:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status
No se recomienda exponer el puerto 3000 directamente a internet:
ufw deny 3000/tcp
Si antes Docker ya se ha vinculado a 127.0.0.1:3000:3000, el puerto 3000 no será accesible desde fuera de todos modos, lo que es más seguro.
Tras abrir la página web, configura primero el AI Provider.
Opciones habituales:
| Provider | Para quién es adecuado |
|---|---|
| OpenAI | Quien quiere simplicidad y calidad de respuesta estable |
| Claude | Resúmenes de textos largos y muchas preguntas explicativas |
| Groq | Quien quiere respuestas más rápidas |
| OpenRouter | Quien quiere una sola Key para conectar varios modelos |
| Ollama | Quien quiere ejecutar modelos en local y que los datos salgan lo menos posible de la máquina |
Si es solo para uso personal, te sugiero primero poner en marcha el flujo con un API Provider. Cuando confirmes que realmente necesitas un modelo local, entonces trastea con Ollama.
Una vez completada la configuración, haz una pregunta sencilla para probar:
最近 Docker Compose 部署自托管服务有哪些常见坑?
Fíjate en tres cosas:
- Si puede devolver una respuesta
- Si hay fuentes citadas
- Si los resultados de búsqueda están relacionados con la pregunta
Si no hay fuentes de búsqueda y solo parece un chatbot normal, entonces comprueba si SearXNG funciona correctamente.
Si quieres conectar Ollama, primero instálalo en la máquina anfitriona:
curl -fsSL https://ollama.com/install.sh | sh
Descarga un modelo:
ollama pull qwen2.5:7b
Prueba Ollama:
curl http://127.0.0.1:11434/api/tags
Si Perplexica está en un contenedor Docker, no puede usar localhost para acceder al Ollama de la máquina anfitriona.
En Linux, una forma más fiable es añadir en Compose:
extra_hosts:
- "host.docker.internal:host-gateway"
Ejemplo completo:
services:
perplexica:
image: itzcrazykns1337/perplexica:latest
container_name: perplexica
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- perplexica-data:/home/perplexica/data
volumes:
perplexica-data:
Luego, en la página web, rellena la dirección de Ollama como:
http://host.docker.internal:11434
No rellenes http://localhost:11434. Ese es el propio contenedor, no la máquina anfitriona.
La imagen full de un solo contenedor es adecuada para un despliegue rápido, pero si quieres controlar los motores de búsqueda con más detalle, o quieres que varias herramientas compartan un mismo SearXNG, puedes desplegar SearXNG por separado y conectarlo con la versión slim de Perplexica.
Por ejemplo:
- Perplexica usa SearXNG
- Open WebUI también se conecta a SearXNG para Web Search
- Quieres ajustar por separado los motores de búsqueda, el idioma y la búsqueda segura
- Quieres controlar la política de acceso de SearXNG
En este caso puedes usar perplexica:slim-latest.
Crear el directorio:
mkdir -p /opt/perplexica/searxng
cd /opt/perplexica
Crear la configuración de SearXNG:
cat > searxng/settings.yml << 'EOF'
use_default_settings: true
server:
secret_key: "replace-with-a-long-random-secret"
search:
formats:
- html
- json
EOF
Fíjate en que json aquí es fundamental. Perplexica necesita resultados JSON al llamar a SearXNG; si no está habilitado, a menudo aparece la situación de «SearXNG se abre bien, pero Perplexica no tiene resultados de búsqueda».
Escribir el Compose:
services:
searxng:
image: searxng/searxng:latest
container_name: perplexica-searxng
restart: unless-stopped
volumes:
- ./searxng:/etc/searxng
networks:
- perplexica-net
perplexica:
image: itzcrazykns1337/perplexica:slim-latest
container_name: perplexica
restart: unless-stopped
environment:
- SEARXNG_API_URL=http://searxng:8080
ports:
- "127.0.0.1:3000:3000"
volumes:
- perplexica-data:/home/perplexica/data
depends_on:
- searxng
networks:
- perplexica-net
volumes:
perplexica-data:
networks:
perplexica-net:
Iniciar:
docker compose up -d
Comprobar:
docker compose ps
docker logs perplexica-searxng --tail=80
docker logs perplexica --tail=80
Probar el JSON de SearXNG:
docker exec perplexica-searxng sh -c "wget -qO- 'http://127.0.0.1:8080/search?q=vps&format=json' | head"
Si aquí no hay salida JSON, primero corrige SearXNG y no te apresures a cambiar Perplexica.
Autoalojar Perplexica no equivale a anonimato total.
Lo que puedes controlar es:
- El punto de entrada de búsqueda está en tu propio dominio
- SearXNG no crea perfiles de usuario
- Puedes elegir qué backends de búsqueda usar
- Los registros de consultas no se entregan por defecto a una plataforma de búsqueda con IA
Pero si conectas modelos en la nube como OpenAI, Claude o Groq, las preguntas y los resúmenes de búsqueda se siguen enviando al proveedor de API correspondiente.
Así que una forma más precisa de decirlo es:
- Con modelos en la nube: el punto de entrada de búsqueda y la agregación de búsquedas son autoalojados, y el procesamiento del modelo está en un tercero
- Con Ollama: la búsqueda y el modelo se quedan en tu propia máquina en la medida de lo posible, pero la configuración del VPS debe ser mayor
No entiendas «autoalojamiento» como «todos los datos no salen nunca de casa». Depende del modelo y de las fuentes de búsqueda que conectes.
Los datos clave de Perplexica están en el volume de Docker.
Primero mira el volume:
docker volume ls | grep perplexica
Si usas un volume con nombre, puedes hacer copia de seguridad así:
mkdir -p /opt/backups
docker run --rm \
-v perplexica-data:/data \
-v /opt/backups:/backup \
alpine \
tar -czf /backup/perplexica-data-$(date +%F).tar.gz -C /data .
Si usas un bind mount, como /opt/perplexica/data, empaqueta directamente el directorio:
tar -czf /opt/backups/perplexica-data-$(date +%F).tar.gz /opt/perplexica
Luego sincroniza con el almacenamiento de objetos:
rclone copy /opt/backups/perplexica-data-$(date +%F).tar.gz r2:backup-bucket/perplexica/
Como mínimo, haz copia de seguridad de:
- El volume de datos de Perplexica
- El archivo Compose
- SearXNG settings.yml
- Caddyfile
- Las variables de entorno y las notas de configuración de modelos que uses
Con el método de un solo contenedor:
docker pull itzcrazykns1337/perplexica:latest
docker stop perplexica
docker rm perplexica
docker run -d \
--name perplexica \
--restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-v perplexica-data:/home/perplexica/data \
itzcrazykns1337/perplexica:latest
Con el método Compose:
cd /opt/perplexica
docker compose pull
docker compose up -d
Haz copia de seguridad antes de actualizar. Después de actualizar, comprueba:
docker compose ps
docker logs perplexica --tail=100
curl -I http://127.0.0.1:3000
Luego busca realmente una pregunta en la página web para confirmar que la búsqueda, las citas y las respuestas del modelo funcionan correctamente.
Primero comprueba si Perplexica está en marcha:
docker ps --filter "name=perplexica"
docker logs perplexica --tail=100
Luego mira el puerto local:
curl -I http://127.0.0.1:3000
Si no es accesible ni en local, el problema está en el contenedor. Si en local funciona bien pero el dominio da 502, el problema probablemente está en Caddy:
caddy validate --config /etc/caddy/Caddyfile
journalctl -u caddy -n 100 --no-pager
Si usas la imagen full, primero mira los registros:
docker logs perplexica --tail=100
Si usas SearXNG independiente, céntrate en comprobar el JSON:
docker exec perplexica-searxng sh -c "wget -qO- 'http://127.0.0.1:8080/search?q=test&format=json' | head"
settings.yml debe contener:
search:
formats:
- html
- json
Reinicia tras el cambio:
docker compose restart searxng perplexica
Primero confirma la configuración del Provider.
Si usas OpenAI / OpenRouter:
- Si la API Key es correcta
- Si la cuenta tiene saldo
- Si el modelo seleccionado está disponible
- Si el VPS puede acceder a la dirección de la API
Puedes probar la red en el VPS:
curl -I https://api.openai.com
Si usas Ollama:
curl http://127.0.0.1:11434/api/tags
Para que el contenedor acceda al Ollama de la máquina anfitriona, usa host.docker.internal o la dirección de puerta de enlace de la máquina anfitriona.
La lentitud suele tener tres causas:
- Respuesta lenta de las fuentes de búsqueda
- API del modelo en la nube lenta
- Modelo local de Ollama demasiado grande o máquina demasiado débil
Primero pruébalos por separado.
Probar SearXNG:
time curl -s 'http://127.0.0.1:3000' > /dev/null
Ver recursos:
htop
free -h
docker stats
Si el modelo local de Ollama es lento, cambiar a un modelo más pequeño suele ser más eficaz que añadir un montón de parámetros.
Si usas el proxy de nube naranja de Cloudflare, primero confirma que HTTPS funciona bien y luego activa el proxy.
Cuando encuentres problemas, cambia temporalmente a DNS only para descartar la interferencia de Cloudflare. Las aplicaciones de búsqueda con IA pueden usar conexiones largas o salida en streaming, y con una configuración inadecuada de la capa de proxy pueden producirse interrupciones de respuesta.
Estas herramientas se confunden fácilmente.
| Herramienta | Más adecuada para |
|---|---|
| SearXNG | Metabusca privada, sin necesidad de resumen con IA |
| Perplexica / Vane | Búsqueda con IA tipo Perplexity autoalojada |
| Open WebUI | Punto de entrada de chat, frontend para modelos locales |
| AnythingLLM | Preguntas y respuestas sobre base de conocimiento de documentos privados |
| Dify | Aplicaciones de IA y orquestación de flujos de trabajo |
Mis recomendaciones:
- Solo quieres buscar páginas web: SearXNG
- Quieres «búsqueda + resumen con IA + citas»: Perplexica
- Quieres chatear con modelos: Open WebUI
- Quieres preguntar a tus propios documentos: AnythingLLM
- Quieres crear aplicaciones de IA para que las usen otros: Dify
No instales todas las herramientas. Empieza eligiendo una según tu necesidad principal.
Si fuera para mi propio uso, haría esto:
- VPS: a partir de 2 núcleos 4GB
- Despliegue: poner en marcha primero la imagen full de Perplexica
- Dominio: proxy inverso HTTPS con Caddy
- Puertos: abrir solo 80/443, no abrir 3000
- Modelo: conectar primero OpenRouter u OpenAI para confirmar la experiencia
- Después: si se usa a menudo, considerar SearXNG independiente
- Requisitos altos de privacidad: conectar entonces Ollama, pero la máquina debe actualizarse
El mayor valor de Perplexica no es «instalar otra herramienta de IA», sino convertir los resultados de búsqueda en respuestas con fuentes rastreables. Para quienes hacen investigación técnica, SEO, análisis de competencia y resolución de problemas de operaciones, esto ahorra más tiempo que la búsqueda normal.
Pero tampoco es omnipotente. Puede ocurrir que la calidad de las fuentes de búsqueda sea mala, que el modelo resuma de forma errática o que las citas no sean precisas. El verdadero requisito para que sea útil a largo plazo es que estés dispuesto a mantener SearXNG, la configuración de los modelos, el proxy inverso y las copias de seguridad, en lugar de instalarlo y olvidarte de él.