Self-host Khoj: Как создать свое личное AI-второе мозг для поиска и автоматизации

Полный гайд по развертыванию Khoj — self-hostable AI-второго мозга. Узнайте, как настроить личный ассистент для поиска по документам, вебу и LLM, сохраняя полный контроль над данными.

Не указано

Создание рабочей директории

Откройте терминал и создайте папку для Khoj.

mkdir khoj
cd khoj

Создание файла docker-compose.yml

Создайте файл docker-compose.yml в папке khoj и скопируйте в него следующую конфигурацию. Замените your-secret-key-here на случайную строку (генерация: openssl rand -hex 32) и укажите параметры LLM (провайдер, ключ, модель). Для локальной модели через Ollama убедитесь, что Ollama запущен.

version: '3'

services:
  khoj:
    image: khojai/khoj:latest
    container_name: khoj
    restart: unless-stopped
    environment:
      - KHOJ_BACKEND_PORT=8000
      - KHOJ_FRONTEND_PORT=4200
      - KHOJ_DATABASE_URL=postgresql://postgres:password@db:5432/khoj
      - KHOJ_DB_USER=postgres
      - KHOJ_DB_PASSWORD=password
      - KHOJ_DB_NAME=khoj
      - KHOJ_DB_HOST=db
      - KHOJ_REDIS_URL=redis://redis:6379/0
      - KHOJ_SECRET_KEY=your-secret-key-here
      - KHOJ_DEBUG=False
      - KHOJ_LLM_PROVIDER=openai  # или ollama, anthropic
      - KHOJ_LLM_API_KEY=sk-...    # Ваш API-ключ (если используете OpenAI)
      - KHOJ_LLM_MODEL=gpt-3.5-turbo  # Модель (например, gpt-3.5-turbo или llama3:8b для Ollama)
    ports:
      - "4200:4200"  # Фронтенд
      - "8000:8000"  # Бэкенд (API)
    volumes:
      - ./khoj_data:/app/data
    depends_on:
      - db
      - redis
    networks:
      - khoj_net

  db:
    image: postgres:15
    container_name: khoj_db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=khoj
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    networks:
      - khoj_net

  redis:
    image: redis:7-alpine
    container_name: khoj_redis
    restart: unless-stopped
    command: redis-server --appendonly yes
    volumes:
      - ./redis_data:/data
    networks:
      - khoj_net

networks:
  khoj_net:
    driver: bridge

Запуск контейнеров

В терминале в папке khoj выполните команду для запуска контейнеров в фоновом режиме.

docker compose up -d

Проверка статуса и логов

Убедитесь, что контейнеры запущены, и проверьте логи на наличие ошибок.

docker compose ps
docker compose logs -f khoj

Первичная настройка LLM

Откройте веб-интерфейс Khoj по адресу http://<ваш_адрес_сервера>:4200 (например, http://localhost:4200). Перейдите в раздел 'Settings' -> 'LLM'. Выберите провайдера (OpenAI, Ollama, Anthropic) и укажите необходимые параметры (API-ключ, URL для Ollama, модель). Для локальной модели через Ollama убедитесь, что хост доступен из контейнера (например, http://host.docker.internal:11434).

Настройка базы знаний (Data Sources)

В разделе 'Data Sources' добавьте источники данных. Для локальных файлов укажите путь внутри контейнера (например, /app/data/my_files). Сначала создайте папку на хосте: mkdir -p ./khoj_data/my_files. Для веб-страниц укажите URL. После добавления нажмите 'Save' или 'Sync' для начала индексации.

Проверка работы

Перейдите в раздел 'Chat' или 'Search' и задайте вопрос, относящийся к вашим данным (например, 'Что было в отчете за прошлый квартал?'). Khoj вернет ответ с цитатами из источников.

Безопасность и бэкап

Настройте firewall для портов 4200 и 8000, используйте HTTPS через reverse proxy. Для бэкапа создайте скрипт backup.sh и настройте cron.

#!/bin/bash
BACKUP_DIR=/path/to/backup/khoj/$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
cp -r ./khoj_data $BACKUP_DIR/
docker exec khoj_db pg_dump -U postgres khoj > $BACKUP_DIR/khoj_db.sql
echo "Backup created at $BACKUP_DIR"