vm:litellm:01-install

Это старая версия документа!


Установка 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
# Обновление системы
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 записи для вашего домена:

Алиас Назначение Описание
api.digitizepro.tech Основной API эндпоинт Главный точка входа для всех API запросов
ui.digitizepro.tech Веб-интерфейс управления Dashboard для управления ключами и мониторинга
ai.digitizepro.tech Альтернативный API Короткий алиас для AI сервисов
openai.digitizepro.tech OpenAI совместимый API Указывает на совместимость с OpenAI API
llm.digitizepro.tech LLM Gateway Общий алиас для языковых моделей
  • Логическое разделение - разные домены для разных сервисов
  • Гибкость конфигурации - можно настроить разные правила доступа
  • Масштабируемость - легко добавить новые сервисы
  • Безопасность - можно ограничить доступ к UI отдельно от API
  • Мониторинг - отдельная статистика по каждому домену
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}"
 
      # Логирование
      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 .env
# PostgreSQL
POSTGRES_PASSWORD=GENERATE_STRONG_PASSWORD_HERE
 
# LiteLLM Keys
LITELLM_MASTER_KEY=sk-litellm-GENERATE_LONG_RANDOM_STRING_HERE
LITELLM_SALT_KEY=sk-salt-GENERATE_ANOTHER_LONG_RANDOM_STRING_HERE
 
# UI Access
UI_PASSWORD=GENERATE_UI_PASSWORD_HERE
# Установка прав доступа
chmod 600 .env
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
 
# Базовые настройки
general_settings:
  master_key: ${LITELLM_MASTER_KEY}
  database_url: postgresql://litellm:${POSTGRES_PASSWORD}@litellm_postgres:5432/litellm
 
  # UI
  ui: true
  ui_username: admin
  ui_password: ${UI_PASSWORD}
 
  # Логирование
  set_verbose: true
  json_logs: true
 
# Настройки логирования
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

1. Основной API - 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. UI Dashboard - ui.digitizepro.tech

  • Domain Names: ui.digitizepro.tech
  • Forward Hostname/IP: litellm_proxy
  • Forward Port: 4000
  • Block Common Exploits:
  • Websockets Support:
  • SSL: Request a new SSL Certificate

3. Дополнительные алиасы (опционально)

Создайте аналогичные Proxy Hosts для:

  • ai.digitizepro.tech
  • openai.digitizepro.tech
  • llm.digitizepro.tech

Все указывают на litellm_proxy:4000

# Проверка здоровья сервиса
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 YOUR_MASTER_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello from LiteLLM!"}],
    "max_tokens": 50
  }'
  1. Войдите в веб-интерфейс
  2. Перейдите в ModelsAdd Model
  3. Заполните поля:
    • Model Name: gpt-3.5-turbo-main
    • LiteLLM Model: openai/gpt-3.5-turbo
    • API Key: Ваш реальный OpenAI ключ
  4. Сохраните модель
  1. ModelsModel Groups
  2. Создайте группы:
    • «Main» - основные ключи
    • «Project1» - ключи проекта 1
    • «Client» - клиентские ключи
  3. Назначьте модели в соответствующие группы
  1. UsersAdd User
  2. API Keys → создание ключей для разных проектов
  3. Budgets → установка лимитов расходов
  1. Dashboard → общая статистика использования
  2. Logs → журнал всех запросов
  3. Analytics → детальный анализ трафика
  1. Перейдите в Settings → Credentials → Add Credential
  2. Выберите «OpenAI»
  3. Заполните поля:
Credential Name: LiteLLM Proxy
API Key: [ваш LITELLM_MASTER_KEY]
Base URL: https://api.digitizepro.tech/v1
Organization: [оставьте пустым]

В OpenAI Chat Model ноде:

  • Credentials: выберите «LiteLLM Proxy»
  • Model: выберите модель из созданных в веб-интерфейсе

Альтернативный способ через HTTP Request:

Method: POST
URL: https://api.digitizepro.tech/v1/chat/completions
Headers:
  Content-Type: application/json
  Authorization: Bearer [MASTER_KEY]
 
Body:
{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "{{ $json.prompt }}"}],
  "max_tokens": 1000
}

Создайте несколько креденшлов для разных проектов:

  • LiteLLM Main - основные ключи
  • LiteLLM Project1 - проектные ключи
  • LiteLLM Client - клиентские ключи
# Просмотр логов
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
  1. Смените все пароли в файле .env
  2. Замените тестовый OpenAI ключ в конфиге на реальный через веб-интерфейс
  3. Настройте файрвол для ограничения доступа
  4. Регулярно обновляйте Docker образы
# Настройка 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
  1. Убедитесь, что DNS записи настроены правильно
  2. Проверьте настройки Nginx Proxy Manager
  3. Убедитесь, что контейнеры находятся в сети webproxy
  4. Проверьте SSL сертификаты
  • vm/litellm/01-install.1757158790.txt.gz
  • Последнее изменение: 2025/09/06 11:39
  • admin