====== Установка LiteLLM Proxy с Docker и Nginx Proxy Manager ======
===== Описание =====
LiteLLM Proxy - это унифицированный шлюз для работы с различными LLM провайдерами (OpenAI, Claude, Gemini и др.) через единый API. Система позволяет:
* Управлять множественными API ключами через веб-интерфейс
* Автоматическое переключение между ключами при превышении лимитов
* Балансировка нагрузки между ключами
* Детальная аналитика и мониторинг использования
* Кеширование ответов для экономии
* Установка бюджетов и лимитов
===== Требования =====
* Ubuntu Server 22.04 LTS
* Docker и Docker Compose
* Nginx Proxy Manager (NPM)
* Домен с возможностью управления DNS
* Внешняя сеть Docker ''webproxy''
===== Подготовка сервера =====
==== Установка Docker и Docker Compose ====
# Обновление системы
apt update && apt upgrade -y
# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# Установка Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# Проверка установки
docker --version
docker-compose --version
==== Создание рабочей директории ====
# Создание директории проекта
mkdir /opt/litellm
cd /opt/litellm
# Создание структуры папок
mkdir -p config logs data postgres_data redis_data
===== Настройка DNS алиасов =====
Создайте следующие DNS записи для домена digitizepro.tech:
^ Алиас ^ Назначение ^ Описание ^
| ''api.digitizepro.tech'' | Основной API + UI | Главный эндпоинт для API запросов и веб-интерфейса |
| ''ai.digitizepro.tech'' | Альтернативный API | Короткий алиас для AI сервисов |
| ''openai.digitizepro.tech'' | OpenAI совместимый API | Указывает на совместимость с OpenAI API |
| ''llm.digitizepro.tech'' | LLM Gateway | Общий алиас для языковых моделей |
==== Преимущества использования алиасов ====
* **Логическое разделение** - разные домены для разных сервисов
* **Гибкость конфигурации** - можно настроить разные правила доступа
* **Масштабируемость** - легко добавить новые сервисы
* **Безопасность** - можно ограничить доступ к UI отдельно от API
* **Мониторинг** - отдельная статистика по каждому домену
===== Установка LiteLLM =====
==== Создание файла переменных окружения ====
nano .env
# PostgreSQL Database
POSTGRES_PASSWORD=PgSQL_9Kx7mN2vB8qF3wR5tY6uI0oP1aS4dF7gH
# LiteLLM Master Key (главный ключ для API доступа)
LITELLM_MASTER_KEY=sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k
# LiteLLM Salt Key (ключ для шифрования)
LITELLM_SALT_KEY=sk-salt-Q9w2E5r8T1y4U7i0O3p6A9s2D5f8G1h4J7k0L3z6X9c2V5b8N1m
# UI Dashboard Password
UI_PASSWORD=UI_Admin_7mK2qF9xR5tG8nP1wS4vY3bC6eZ0hL9jM
# Установка прав доступа
chmod 600 .env
==== Создание docker-compose.yml ====
nano docker-compose.yml
services:
# PostgreSQL для LiteLLM
litellm_postgres:
image: postgres:15-alpine
container_name: litellm_postgres
environment:
POSTGRES_DB: litellm
POSTGRES_USER: litellm
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./postgres_data:/var/lib/postgresql/data
- ./logs:/logs
restart: unless-stopped
networks:
- webproxy
healthcheck:
test: ["CMD-SHELL", "pg_isready -U litellm"]
interval: 30s
timeout: 10s
retries: 3
# Redis для кеширования
litellm_redis:
image: redis:7-alpine
container_name: litellm_redis
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
- ./redis_data:/data
restart: unless-stopped
networks:
- webproxy
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
# Основной сервис LiteLLM
litellm_proxy:
image: ghcr.io/berriai/litellm:main-latest
container_name: litellm_proxy
environment:
# База данных
DATABASE_URL: "postgresql://litellm:${POSTGRES_PASSWORD}@litellm_postgres:5432/litellm"
# Redis
REDIS_HOST: litellm_redis
REDIS_PORT: 6379
# Безопасность
LITELLM_MASTER_KEY: "${LITELLM_MASTER_KEY}"
LITELLM_SALT_KEY: "${LITELLM_SALT_KEY}"
# Настройки UI
UI_USERNAME: admin
UI_PASSWORD: ${UI_PASSWORD}
# Настройки через переменные окружения
GENERAL_SETTINGS_MASTER_KEY: "${LITELLM_MASTER_KEY}"
GENERAL_SETTINGS_DATABASE_URL: "postgresql://litellm:${POSTGRES_PASSWORD}@litellm_postgres:5432/litellm"
GENERAL_SETTINGS_UI: "true"
GENERAL_SETTINGS_UI_USERNAME: "admin"
GENERAL_SETTINGS_UI_PASSWORD: "${UI_PASSWORD}"
GENERAL_SETTINGS_SET_VERBOSE: "true"
GENERAL_SETTINGS_JSON_LOGS: "true"
# Логирование
LITELLM_LOG: INFO
SET_VERBOSE: "true"
# Другие настройки
STORE_MODEL_IN_DB: "true"
volumes:
- ./config/litellm_config.yaml:/app/config.yaml:ro
- ./logs:/app/logs
expose:
- "4000"
depends_on:
litellm_postgres:
condition: service_healthy
litellm_redis:
condition: service_healthy
restart: unless-stopped
networks:
- webproxy
command: ["--config", "/app/config.yaml", "--port", "4000", "--host", "0.0.0.0"]
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4000/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
networks:
webproxy:
external: true
==== Создание минимального конфига ====
nano config/litellm_config.yaml
# Минимальная конфигурация для запуска системы
model_list:
# Тестовая модель - замените на реальный ключ через веб-интерфейс!
- model_name: gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: sk-test-key-replace-with-real-openai-key
api_base: https://api.openai.com/v1
model_info:
id: test-gpt35-1
mode: chat
# Настройки логирования
litellm_settings:
drop_params: true
set_verbose: false
json_logs: true
==== Настройка прав доступа ====
# Установка правильных прав
chmod 600 config/litellm_config.yaml
chmod 700 /opt/litellm
chown -R root:root /opt/litellm
==== Запуск сервисов ====
cd /opt/litellm
# Запуск всех сервисов
docker-compose up -d
# Проверка статуса
docker-compose ps
# Просмотр логов
docker-compose logs -f litellm_proxy
===== Настройка Nginx Proxy Manager =====
==== Создание Proxy Hosts ====
=== 1. Основной API + UI - api.digitizepro.tech ===
* **Domain Names:** ''api.digitizepro.tech''
* **Forward Hostname/IP:** ''litellm_proxy''
* **Forward Port:** ''4000''
* **Block Common Exploits:** ✓
* **Websockets Support:** ✓
* **SSL:** Request a new SSL Certificate
=== 2. Дополнительные алиасы (опционально) ===
Создайте аналогичные Proxy Hosts для:
* ''ai.digitizepro.tech''
* ''openai.digitizepro.tech''
* ''llm.digitizepro.tech''
Все указывают на ''litellm_proxy:4000''
===== Проверка работоспособности =====
==== Тестирование API ====
# Проверка здоровья сервиса
curl https://api.digitizepro.tech/health
# Просмотр доступных моделей
curl https://api.digitizepro.tech/v1/models
# Тест чат-запроса
curl -X POST https://api.digitizepro.tech/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello from LiteLLM!"}],
"max_tokens": 50
}'
==== Доступ к веб-интерфейсу ====
* **URL:** https://api.digitizepro.tech/ui или https://ui.digitizepro.tech/ui
* **Логин:** admin
* **Пароль:** UI_Admin_7mK2qF9xR5tG8nP1wS4vY3bC6eZ0hL9jM
===== Управление системой через веб-интерфейс =====
==== Добавление OpenAI ключей ====
- Войдите в веб-интерфейс
- Перейдите в **Models** → **Add Model**
- Заполните поля:
* **Model Name:** ''gpt-3.5-turbo-main''
* **LiteLLM Model:** ''openai/gpt-3.5-turbo''
* **API Key:** Ваш реальный OpenAI ключ
* **API Base:** ''https://api.openai.com/v1''
- Сохраните модель
==== Создание групп ключей ====
- **Models** → **Model Groups**
- Создайте группы:
* "Main" - основные ключи
* "Project1" - ключи проекта 1
* "Client" - клиентские ключи
- Назначьте модели в соответствующие группы
==== Управление пользователями ====
- **Users** → **Add User**
- **API Keys** → создание ключей для разных проектов
- **Budgets** → установка лимитов расходов
==== Мониторинг и аналитика ====
- **Dashboard** → общая статистика использования
- **Logs** → журнал всех запросов
- **Analytics** → детальный анализ трафика
===== Интеграция с n8n =====
==== Создание креденшла в n8n ====
- Перейдите в **Settings** → **Credentials** → **Add Credential**
- Выберите **"OpenAI"**
- Заполните поля:
Credential Name: LiteLLM Proxy digitizepro.tech
API Key: sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k
Base URL: https://api.digitizepro.tech/v1
Organization: [оставьте пустым]
- Нажмите **"Test Connection"**
- При успешном тесте нажмите **"Save"**
==== Дополнительные креденшлы для разных проектов ====
Создайте несколько креденшлов для различных нужд:
=== 1. Основной креденшл ===
Credential Name: LiteLLM Main - digitizepro.tech
API Key: sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k
Base URL: https://api.digitizepro.tech/v1
=== 2. AI алиас ===
Credential Name: LiteLLM AI - digitizepro.tech
API Key: sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k
Base URL: https://ai.digitizepro.tech/v1
=== 3. OpenAI совместимый ===
Credential Name: LiteLLM OpenAI Compatible - digitizepro.tech
API Key: sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k
Base URL: https://openai.digitizepro.tech/v1
==== Использование в нодах ====
**В OpenAI Chat Model ноде:**
* **Credentials:** выберите "LiteLLM Proxy digitizepro.tech"
* **Model:** выберите модель из созданных в веб-интерфейсе
**Альтернативный способ через HTTP Request:**
Method: POST
URL: https://api.digitizepro.tech/v1/chat/completions
Headers:
Content-Type: application/json
Authorization: Bearer sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k
Body:
{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "{{ $json.prompt }}"}],
"max_tokens": 1000
}
==== Проверка подключения n8n ====
- В n8n создайте простой workflow с OpenAI нодой
- Используйте созданный креденшл
- Отправьте тестовое сообщение
- Проверьте результат в веб-интерфейсе LiteLLM (Logs)
===== Обслуживание и мониторинг =====
==== Полезные команды ====
# Просмотр логов
docker-compose logs -f litellm_proxy
docker-compose logs litellm_postgres
docker-compose logs litellm_redis
# Перезапуск сервиса
docker-compose restart litellm_proxy
# Резервное копирование базы данных
docker exec litellm_postgres pg_dump -U litellm litellm > backup_$(date +%Y%m%d).sql
# Мониторинг ресурсов
docker stats
df -h
# Полная остановка
docker-compose down
# Запуск с пересборкой
docker-compose up -d --force-recreate
==== Автоматическое обновление ====
# Добавить в crontab
crontab -e
# Еженедельное обновление (воскресенье в 2:00)
0 2 * * 0 cd /opt/litellm && docker-compose pull && docker-compose up -d
===== Безопасность =====
==== Статические пароли системы ====
**Пароли уже настроены в .env файле:**
* **PostgreSQL:** PgSQL_9Kx7mN2vB8qF3wR5tY6uI0oP1aS4dF7gH
* **LiteLLM Master Key:** sk-litellm-E4j8mK9nP2qR5sT7vX0yZ3bC6eG9hL1oM4rU8wA5dF2gJ7k
* **UI Пароль:** UI_Admin_7mK2qF9xR5tG8nP1wS4vY3bC6eZ0hL9jM
==== Дополнительные меры ====
# Настройка UFW firewall
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
===== Преимущества системы =====
* **Централизованное управление** всеми OpenAI ключами
* **Автоматическое переключение** между ключами при лимитах
* **Балансировка нагрузки** между доступными ключами
* **Детальная аналитика** использования по проектам
* **Кеширование ответов** для экономии средств
* **Установка бюджетов** и лимитов для контроля расходов
* **Единый API** для работы с разными LLM провайдерами
* **Веб-интерфейс** для управления без редактирования конфигов
===== Устранение неисправностей =====
==== Проблемы с запуском ====
# Проверка статуса контейнеров
docker-compose ps
# Проверка логов на ошибки
docker-compose logs litellm_proxy | grep -i error
# Проверка подключения к базе данных
docker exec litellm_postgres pg_isready -U litellm
# Проверка Redis
docker exec litellm_redis redis-cli ping
# Проверка переменных окружения
docker exec litellm_proxy env | grep LITELLM
==== Проблемы с доступом ====
- Убедитесь, что DNS записи digitizepro.tech настроены правильно
- Проверьте настройки Nginx Proxy Manager
- Убедитесь, что контейнеры находятся в сети ''webproxy''
- Проверьте SSL сертификаты
==== Проблемы с n8n ====
- Убедитесь, что используете правильный Base URL
- Проверьте Master Key в креденшле
- Убедитесь, что модель существует в LiteLLM
- Проверьте логи в веб-интерфейсе LiteLLM
===== Контакты поддержки =====
* **GitHub Issues:** https://github.com/BerriAI/litellm/issues
* **Документация:** https://docs.litellm.ai/
* **Community:** https://discord.gg/litellm