Self‑host Khoj: личный AI‑мозг для поиска и автоматизации

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

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор19 января 2026 г.

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

Откройте терминал и создайте папку для 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"

Как self-host'нуть Khoj — ваше второе AI-мозг, полностью под вашим контролем

Введение: Зачем вам свое AI-второе мозг

В современном цифровом мире информация разбросана по десяткам источников: документы, заметки, закладки, переписки. Традиционные поисковые системы не всегда эффективны для личных данных. AI-второе мозг — это система, которая индексирует ваши личные данные, поддерживает контекст и позволяет задавать ей естественные вопросы.

Почему self-host?

  • Контроль: Ваши данные остаются на вашем сервере, вы не передаете их третьим лицам.
  • Конфиденциальность: Работа с чувствительной информацией безопасна.
  • Настройка под себя: Вы можете интегрировать любые источники данных, настроить модель под свои задачи.
  • Стоимость: Локальное использование может быть дешевле облачных аналогов (особенно если у вас уже есть сервер).

Что такое Khoj? Функции и возможности

Khoj — это открытая платформа для создания локального AI-второго мозга. Она позволяет:

  • Индексировать данные из various источников: файлы, папки, веб-страницы, заметки Obsidian, Notion, Emacs, и т.д.
  • Подключать LLM (Large Language Model) — локальные модели (Llama, Mistral) через Ollama или облачные (OpenAI, Anthropic).
  • Проводить поисковые запросы с возвращением фрагментов источника и ссылок.
  • Генерировать ответы, используя контекст из индексированных данных.
  • Работать как интеграция в браузере (расширение) или в приложениях (Obsidian, Emacs, VS Code).

Основные возможности:

  • Поиск по документам (PDF, DOCX, Markdown, TXT, HTML, и т.д.)
  • Автоматическая индексация при изменениях в файлах/папках.
  • Веб-скрейпинг для учета контента веб-сайтов.
  • Поддержка нескольких пользователей (при необходимости).
  • REST API для интеграций.
  • Дашборд настройки и управления.

Предварительные требования

Перед началом установки убедитесь, что у вас есть:

  1. Сервер или локальная машина с доступом в интернет (для первоначальной загрузки образов).
    • Рекомендуемые ресурсы:
      • CPU: Минимум 2 ядра, оптимально 4+ (для индексации больших объемов данных).
      • RAM: Минимум 4 ГБ, оптимально 8+ (особенно при работе с LLM, если будете использовать локальные модели).
      • Дисковое пространство: От 5 ГБ (минимум под систему и базу данных) до десятков ГБ под индексы и модели.
    • Для локальных моделей: Если планируете использовать локальные LLM (через Ollama), учитывайте, что 13B-модели могут требовать 12+ ГБ RAM.
  2. Docker и Docker Compose установлены и запущены.
  3. Базовое понимание командной строки для запуска конфигурации.
  4. Доступ к браузеру для настройки (Khoj запустит веб-интерфейс).

Примечание: Khoj сам по себе не содержит модель. Вы подключаете LLM отдельно (локально через Ollama или облачную через API).

Развертывание Khoj с Docker Compose (пошаговая инструкция)

Шаг 1: Подготовка директории

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

mkdir khoj
cd khoj

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

Создайте файл docker-compose.yml в папке khoj и вставьте следующий содержимое:

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, azure
      - KHOJ_LLM_API_KEY=sk-...    # Ваш API-ключ, если используете OpenAI, иначе можно оставить пустым
      - KHOJ_LLM_MODEL=gpt-3.5-turbo  # Модель, если используете OpenAI
    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_LLM_PROVIDER: Укажите провайдера LLM. Возможные значения: openai, ollama, anthropic, azure.
  • KHOJ_LLM_API_KEY: Ваш API-ключ для выбранного провайдера. Если используете локальную модель через Ollama, оставьте пустым или не указывайте.
  • KHOJ_LLM_MODEL: Имя модели (например, gpt-3.5-turbo, gpt-4, llama3:8b для Ollama).
  • KHOJ_SECRET_KEY: Случайная строка, используемая для шифрования данных. Сгенерируйте свою (openssl rand -hex 32).
  • Для локальной модели через Ollama, убедитесь, что Ollama запущен (например, в отдельном контейнере или на хосте). Khoj будет подключаться к API Ollama (обычно http://host.docker.internal:11434 на хост-машине). Пример для Ollama:
    environment:
      - KHOJ_LLM_PROVIDER=ollama
      - KHOJ_LLM_API_URL=http://host.docker.internal:11434  # или ip вашего сервера
      - KHOJ_LLM_MODEL=llama3:8b
    

Шаг 3: Запуск контейнеров

В терминале в папке khoj выполните:

docker compose up -d

Контейнеры запустятся в фоне. Проверьте статус:

docker compose ps

Если все работает, вы увидите три контейнера: khoj, khoj_db, khoj_redis.

Шаг 4: Проверка логов (опционально)

Если есть ошибки, посмотрите логи:

docker compose logs -f khoj

Вы должны увидеть сообщение, что сервер запущен (обычно Uvicorn running on http://0.0.0.0:8000 для бэкенда и Application listening on http://0.0.0.0:4200 для фронтенда).

Первичная настройка: подключение LLM (локальный или облачный), база знаний

Теперь откройте в браузере http://<ваш_адрес_сервера>:4200 (например, http://localhost:4200 если запускаете локально). Вы увидите веб-интерфейс Khoj.

Шаг 1: Настройка LLM

На главной странице нажмите "Settings" (Настройки) → "LLM".

  1. Выберите провайдера:
    • OpenAI: Укажите API-ключ и модель (например, gpt-3.5-turbo). Проверьте баланс в аккаунте OpenAI.
    • Ollama: Убедитесь, что Ollama работает (на хосте или в другом контейнере). Укажите адрес API (например, http://host.docker.internal:11434). Загрузите модель в Ollama: ollama pull llama3:8b. Укажите имя модели (например, llama3:8b).
    • Anthropic (Claude): Требуется API-ключ от Anthropic.

Важно: Для локальной модели убедитесь, что хост-машина доступна из контейнера. На Linux это обычно http://<IP_хоста>:11434. Для Docker Desktop можно использовать http://host.docker.internal:11434.

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

В разделе "Data Sources" добавьте источники данных:

  1. Локальные файлы и папки:

    • Выберите тип "Files & Folders".
    • Укажите путь внутри контейнера (он должен быть смонтирован в том ./khoj_data). Пример: /app/data/my_files. Сначала создайте папку на хосте: mkdir -p ./khoj_data/my_files. Тогда путь в контейнере будет /app/data/my_files.
    • Или используйте volume для монтирования конкретных папок с хоста в docker-compose.yml (измените ./khoj_data на конкретные пути).
  2. Веб-страницы:

    • Выберите "Web Pages".
    • Укажите URL (например, https://example.com/page). Можно указать фильтры для сканирования внутренних ссылок.
  3. Примечания Obsidian, Notion, Emacs:

    • Выберите соответствующий тип. Для Obsidian, например, укажите путь к папке заметок.

После добавления источника нажмите "Save" или "Sync". Khoj начнет индексацию. Время зависит от объема данных.

Шаг 3: Первый поиск

В разделе "Chat" или "Search" введите вопрос, относящийся к вашим данным. Например, "Что было в отчете за прошлый квартал?". Khoj найдет релевантные фрагменты и сгенерирует ответ с цитатами.

Как использовать: поиск по документам, автоматизация, работа с веб-содержимым

Поиск по документам

  1. Через веб-интерфейс: Задавайте вопросы в чате. Khoj будет возвращать ответы с источниками.
  2. Через браузерное расширение: Установите расширение Khoj для Chrome/Brave/Firefox из официального репозитория. Оно позволяет индексировать текущую веб-страницу и запрашивать информацию из ваших данных.

Автоматизация

  • Автоматическое обновление: В настройках источника данных можно включить периодическую индексацию (например, каждый час) для файловых папок или веб-страниц.
  • Через API: Используйте REST API Khoj для интеграции с другими приложениями.
    • Пример запроса на поиск через curl:
      curl -X POST http://localhost:8000/api/search -H "Content-Type: application/json" -d '{"q": "ваш запрос", "n": 5}'
      

Работа с веб-содержимым

  1. Индексация: Добавьте веб-страницу в данные. Khoj скачивает и парсит HTML, извлекает текст.
  2. Использование: При вопросе о содержимом сайта, Khoj найдет相关信息.
  3. Расширение браузера: Позволяет добавлять страницы к себе в индекс в один клик.

Безопасность и резервное копирование

Безопасность

  1. Сетевой доступ: Ограничьте доступ к портам 4200 и 8000. В docker-compose.yml не перенаправляйте порты на внешний интерфейс, если только нужно. Или используйте firewall (ufw) для ограничения IP.
  2. HTTPS: Для доступа через интернет настройте reverse proxy (Nginx, Traefik) с SSL сертификатом (например, от Let's Encrypt).
  3. Пароли: Используйте сложные пароли для базы данных и сгенерированный KHOJ_SECRET_KEY.
  4. Данные: Убедитесь, что тома хранятся в безопасном месте. Используйте шифрование диска на уровне ОС при необходимости.
  5. Обновления: Регулярно обновляйте образы Docker:
    docker compose pull
    docker compose up -d
    

Резервное копирование

  1. Регулярные бэкапы: Создайте скрипт для копирования данных и резервных копий баз. Пример скрипта backup.sh:
    #!/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"
    
    Выполните его периодически через cron: 0 2 * * * /path/to/backup.sh.
  2. Восстановление:
    • Остановите контейнеры: docker compose down.
    • Восстановите данные: cp -r /backup/khoj_data ./.
    • Восстановите базу: cat /backup/khoj_db.sql | docker exec -i khoj_db psql -U postgres khoj.
    • Запустите контейнеры: docker compose up -d.

Заключение и полезные ссылки

Вы успешно развернули Khoj как свой личный AI-второй мозг. Теперь вы можете индексировать свои данные и задавать вопросы, оставаясь полностью владель своих информации.

Полезные ссылки:

Советы по расширению:

  • Для больших объемов данных рассмотрите использование более мощного сервера или облачного хостинга (например, Hetzner, AWS).
  • Экспериментируйте с разными моделями для баланса между качеством ответов и скоростью.
  • Интегрируйте Khoj с вашими рабочими инструментами через API для автоматизации задач.

Если у вас возникнут вопросы, обратитесь к документации или сообществу. Удачи в использовании вашего нового AI-второго мозга!

Поделиться:TelegramX / TwitterVK