"Self-hosted AI Starter Kit"
Self-hosted AI Starter Kit es un entorno de desarrollo de bajo código y IA autoalojado, diseñado para comenzar rápidamente a crear flujos de trabajo locales con componentes avanzados de IA. Tecnologías incluidas: ✅ n8n: Plataforma de bajo código con más de 400 integraciones y nodos avanzados de IA para crear flujos automatizados. ✅ Ollama: Plataforma para ejecutar modelos de lenguaje (LLM) localmente con soporte para CPU y GPU. ✅ Qdrant: Base de datos vectorial de alto rendimiento para almacenar y recuperar datos numéricos de manera eficiente. ✅ PostgreSQL: Sistema de gestión de bases de datos relacional confiable y escalable. Casos de uso: ⭐️ Creación de agentes de IA para automatización de tareas como agendar citas. ⭐️ Análisis privado de documentos financieros o empresariales sin riesgos de filtración. ⭐️ Bots avanzados para comunicaciones internas en plataformas como Telegram. ⭐️ Resúmenes de documentos empresariales en PDF con total seguridad.POSTGRES_USER=root Variables de entorno: POSTGRES_PASSWORD=tucontraseña POSTGRES_DB=n8n N8N_ENCRYPTION_KEY=tu-llave-secreta N8N_USER_MANAGEMENT_JWT_SECRET=otra-mas-secreta
Vista Previa
# Declaración de volúmenes para almacenamiento persistente
volumes:
n8n_storage: # Almacena los datos y configuraciones de n8n
postgres_storage: # Almacena los datos de PostgreSQL
ollama_storage: # Almacena los datos de Ollama (modelos y configuraciones)
qdrant_storage: # Almacena los datos de Qdrant (índices vectoriales)
# Redes utilizadas en el entorno
networks:
demo: # Red interna para la comunicación entre los servicios
# Configuración de servicios reutilizables (plantillas)
x-n8n: &service-n8n
image: n8nio/n8n:latest
networks: ['demo']
environment:
- DB_TYPE=postgresdb # Configuración del tipo de base de datos
- DB_POSTGRESDB_HOST=postgres # Nombre del contenedor PostgreSQL
- DB_POSTGRESDB_USER=${POSTGRES_USER} # Usuario de PostgreSQL
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} # Contraseña de PostgreSQL
- N8N_DIAGNOSTICS_ENABLED=false # Desactiva la recolección de diagnósticos
- N8N_PERSONALIZATION_ENABLED=false # Desactiva la personalización
links:
- postgres # Conexión al contenedor de PostgreSQL
x-ollama: &service-ollama
image: ollama/ollama:latest
container_name: ollama
networks: ['demo']
restart: unless-stopped
ports:
- 11434:11434 # Puerto para acceder a Ollama
volumes:
- ollama_storage:/root/.ollama # Almacenamiento persistente para Ollama
x-init-ollama: &init-ollama
image: ollama/ollama:latest
networks: ['demo']
container_name: ollama-pull-llama
volumes:
- ollama_storage:/root/.ollama # Compartir almacenamiento entre los servicios de Ollama
entrypoint: /bin/sh
command:
- "-c"
- "sleep 3; OLLAMA_HOST=ollama:11434 ollama pull llama3.2" # Descarga automática del modelo de Ollama
# Servicios principales
services:
# Base de datos PostgreSQL para n8n
postgres:
image: postgres:16-alpine
networks: ['demo']
restart: unless-stopped
environment:
- POSTGRES_USER # Usuario para la base de datos
- POSTGRES_PASSWORD # Contraseña para la base de datos
- POSTGRES_DB # Nombre de la base de datos
volumes:
- postgres_storage:/var/lib/postgresql/data # Almacenamiento persistente
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10 # Verifica la salud del servicio
# Importador de configuraciones y flujos para n8n
n8n-import:
<<: *service-n8n
container_name: n8n-import
entrypoint: /bin/sh
command:
- "-c"
- "n8n import:credentials --separate --input=/backup/credentials && n8n import:workflow --separate --input=/backup/workflows"
volumes:
- ./n8n/backup:/backup # Ruta de respaldo para credenciales y flujos
depends_on:
postgres:
condition: service_healthy # Espera a que PostgreSQL esté listo
# Servicio principal de n8n
n8n:
<<: *service-n8n
container_name: n8n
restart: unless-stopped
ports:
- 5678:5678 # Puerto de acceso a n8n
volumes:
- n8n_storage:/home/node/.n8n # Almacenamiento persistente
- ./n8n/backup:/backup # Respaldo de configuraciones
- ./shared:/data/shared # Carpeta compartida para datos
depends_on:
postgres:
condition: service_healthy
n8n-import:
condition: service_completed_successfully # Importador debe finalizar correctamente
# Servicio de base de datos vectorial (Qdrant)
qdrant:
image: qdrant/qdrant
container_name: qdrant
networks: ['demo']
restart: unless-stopped
ports:
- 6333:6333 # Puerto para acceder a Qdrant
volumes:
- qdrant_storage:/qdrant/storage # Almacenamiento persistente
# Servicio de Ollama para CPU
ollama-cpu:
profiles: ["cpu"]
<<: *service-ollama
# Servicio de Ollama para GPU
ollama-gpu:
profiles: ["gpu-nvidia"]
<<: *service-ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1 # Configuración para GPU NVIDIA
capabilities: [gpu]
# Inicializador de modelo Ollama para CPU
ollama-pull-llama-cpu:
profiles: ["cpu"]
<<: *init-ollama
depends_on:
- ollama-cpu # Dependencia del servicio Ollama CPU
# Inicializador de modelo Ollama para GPU
ollama-pull-llama-gpu:
profiles: ["gpu-nvidia"]
<<: *init-ollama
depends_on:
- ollama-gpu # Dependencia del servicio Ollama GPU