LiteLLM на VPS: установка с помощью Docker и настройка

LiteLLM на VPS: установка и настройка собственного OpenAI-совместимого API

LiteLLM это бесплатный open-source прокси-сервер, который объединяет доступ к 100+ языковым моделям через один OpenAI-совместимый эндпоинт.

Вместо того чтобы менять код при смене провайдера, настраивать разные SDK и хранить десяток ключей, вы разворачиваете LiteLLM на VPS один раз и дальше всё ваше приложение работает с одним base_url.

Смена модели или провайдера происходит в конфиге, без изменения кода.

LiteLLM полностью бесплатен. Вы платите только за сервер и токены у провайдеров напрямую без наценки.

Чем LiteLLM отличается от OpenRouter

Оба инструмента дают единый API ко множеству моделей, но по разному:

LiteLLM OpenRouter
Хостинг Ваш VPS Облако OpenRouter
Ключи провайдеров Хранятся у вас Хранятся у OpenRouter
Стоимость Только сервер Комиссия сверх цены провайдера
Контроль Полный Ограниченный
Настройка Требует конфига Готово из коробки

LiteLLM подходит тем, кто хочет полный контроль над ключами, расходами и маршрутизацией.

OpenRouter тем, кто хочет просто начать без настройки сервера.

Системные требования

Задача CPU RAM
Один разработчик, тесты 1 vCPU 1–2 ГБ
Небольшая команда 1–2 vCPU 2–4 ГБ
Продакшн с логами и БД 2 vCPU 4 ГБ

LiteLLM сам по себе лёгкий, вся нагрузка на моделях лежит у провайдеров. Для старта хватит минимального VPS с 2GB RAM, т.к. для работы потребуется PostgreSQL.

Купить VPS для развертывания LiteLLM сервера можно тут -> Litents - купить VPS

Подключение к серверу

ssh root@IP_СЕРВЕРА

Обновите систему:

apt update && apt upgrade -y

Установка litellm

Проще всего запускать LiteLLM через Docker

Установите докер, если он не установлен

snap install docker
systemctl enable docker
systemctl start docker

Проверьте:

docker --version

LiteLLM настройка

Создайте рабочую папку:

mkdir litellm && cd litellm

Создайте файл конфигурации config.yaml

nano config.yam

Добавляйте только те провайдеры, ключи которых у вас есть.

Для теста достаточно одного.

В статье OpenRouter API на VPS мы получили ключ OpenRoute.
LiteLLM поддерживает OpenRouter как провайдера, так что мы вставим в конфигурацию модель OpenRouter.
В статье VPS для Gemini API мы получили ключ Gemini, добавим его как вторую модель.

cat > config.yaml << 'EOF'
model_list:
  - model_name: openrouter-auto
    litellm_params:
      model: openrouter/openrouter/auto
      api_key: os.environ/OPENROUTER_API_KEY

  - model_name: llama3-free
    litellm_params:
      model: openrouter/meta-llama/llama-3.3-70b-instruct:free
      api_key: os.environ/OPENROUTER_API_KEY
EOF

model_name - можно придумать произвольное

model - берется с сайта

MODELNAME_API_KEY - переменная из вашего окружения

Конфигурация LiteLLM

Важно: префикс os.environ/ означает что LiteLLM возьмёт значение из переменной окружения, ключи не хранятся в файле конфига.

Как сохранить любой ключ в переменную окружения

Что бы сохранить ключ в переменную окружения

export MODEL_API_KEY="ваш-ключ"

Чтобы сохранялся после перезагрузки:

echo 'export MODEL_API_KEY="ваш-ключ"' >> ~/.bashrc
source ~/.bashrc

Список всех поддерживаемых провайдеров есть на странице https://models.litellm.ai/

Поддерживаемые провайдеры LiteLLM

Запуск LiteLLM

Установите переменные окружения с вашими ключами:

export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export LITELLM_MASTER_KEY="sk-litellm-ваш-мастер-ключ"

LITELLM_MASTER_KEY — это ключ для доступа к вашему прокси. Придумайте любую строку начинающуюся с sk-, в ключе не должно быть кириллицы (русских букв)

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

cat > docker-compose.yml << 'EOF'
services:
  litellm:
    container_name: litellm
    image: docker.litellm.ai/berriai/litellm:main-stable
    ports:
      - "4000:4000"
    volumes:
      - ./config.yaml:/app/config.yaml
    environment:
      - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} # замените на свои
      - GEMINI_API_KEY=${GEMINI_API_KEY}         # замените на свои
      - LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}
      - DATABASE_URL=postgresql://litellm:litellm@db:5432/litellm
    command: --config /app/config.yaml
    depends_on:
      - db
    restart: always

  db:
    image: postgres:16
    environment:
      - POSTGRES_USER=litellm
      - POSTGRES_PASSWORD=litellm
      - POSTGRES_DB=litellm
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: always

volumes:
  postgres_data:
EOF

Тут одновременно развертывается PostgreSQL, т.к. PostgreSQL используется LiteLLM для хранения данных, логов и виртуальных API-ключей.

Проверьте что LiteLLM запустился:

docker logs litellm --tail 20

Если логи пустые, то возможно контейнер ещё не развернулся, подождите немного и проверьте позже ещё раз

Запуск LiteLLM

Первый запрос

Проверьте доступность API:

curl http://localhost:4000/health/liveliness

Проверка LiteLLM API

Отправьте запрос к модели:

curl http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $LITELLM_MASTER_KEY" \
  -d '{
    "model": "openrouter-auto", # укажите свое название модели
    "messages": [{"role": "user", "content": "Привет!"}]
  }'

Смените model на свое название модели.

В результате вы получите ответ, значит LiteLLM можно интегрировать в ваши приложения.

Первый запрос к LiteLLM

LiteLLM: Подключение из Python

Создайте и активируйте виртуальное окружение, если у вас его ещё нет.

Если есть, то просто активируйте

python3 -m venv venv
source venv/bin/activate

Установите openai, если ещё не установлен

pip install openai

Создайте test.py

import os
from openai import OpenAI

client = OpenAI(
    base_url="http://ip_сервера:4000", # замените на свой ip сервера
    api_key="os.environ["LITELLM_MASTER_KEY"]",
)

# Меняйте model — код не трогайте
response = client.chat.completions.create(
    model="openrouter-auto",  # или claude-sonnet, gemini-flash, deepseek
    messages=[{"role": "user", "content": "Что такое LiteLLM?"}]
)

print(response.choices[0].message.content)

Запустите

Вы получите ответ

LiteLLM Python

Теперь модель доступна из python, можно её интегрировать в бота, на сайт, в приложение, автоматизировать задачи и т.д.

LiteLLM: Fallback между моделями

Если основная модель недоступна, LiteLLM автоматически переключается на резервную:

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY

  - model_name: claude-sonnet
    litellm_params:
      model: anthropic/claude-sonnet-4-5
      api_key: os.environ/ANTHROPIC_API_KEY

router_settings:
  fallbacks:
    - gpt-4o: ["claude-sonnet"]

Теперь если OpenAI упадёт запрос автоматически уйдёт к Claude.

Просмотр логов и расходов

Список доступных моделей:

curl http://localhost:4000/v1/models \
  -H "Authorization: Bearer sk-litellm-master-1234"

Список моделей LiteLLM

Логи контейнера:

docker logs litellm -f

Перезапуск после изменения конфига:

docker restart litellm

Веб-интерфейс LiteLLM UI

После запуска LiteLLM открывает панель управления по адресу http://IP_СЕРВЕРА:4000.

В open-source версии в нем ничего нет кроме документации.

LiteLLM UI

В платных версиях есть:

Войти можно с мастер-ключом, для этого введите его в поле API Key при входе.

Вход в LiteLLM UI

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

По умолчанию порт 4000 открыт всему интернету, веб-интерфейс и API доступны всем у кого есть адрес вашего сервера. Без мастер-ключа войти нельзя, но сам факт открытого порта нежелателен в продакшне.

Закрыть порт файрволом, оставить доступ только со своего IP:

ufw allow ssh
ufw allow from ВАШ_IP to any port 4000
ufw enable

Если нужен доступ команде, то поставьте nginx с HTTPS:

apt install nginx certbot python3-certbot-nginx -y

Конфиг /etc/nginx/sites-available/litellm:

server {
    listen 443 ssl;
    server_name ваш-домен.com;

    ssl_certificate /etc/letsencrypt/live/ваш-домен.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ваш-домен.com/privkey.pem;

    location / {
        proxy_pass http://localhost:4000;
        proxy_set_header Host $host;
    }
}

ln -s /etc/nginx/sites-available/litellm /etc/nginx/sites-enabled/
certbot --nginx -d ваш-домен.com
nginx -t && systemctl reload nginx

Совместимость

LiteLLM работает как замена OpenAI API в большинстве инструментов:

Заключение

LiteLLM решает главную проблему при работе с несколькими AI-провайдерами, несовместимость API и разрозненные ключи.

Один раз настроив прокси на VPS, вы получаете единую точку входа для всех моделей, которую используют все ваши приложения и скрипты.

VPS в Нидерландах и Испании для развёртывания LiteLLM от 299 ₽/месяц на litnets.com

Lite
CPU
1x2.6Ghz
RAM
1GB DDR4
SSD
10GB NVMe
IP-адрес трафик
2 (ipv4, ipv6) port 1Gbit/s Unlimited
локация:
Операционная система:
Срок оплаты:
299₽
Basic
CPU
2x2.6Ghz
RAM
2GB DDR4
SSD
40GB NVMe
IP-адрес трафик
2 (ipv4, ipv6) port 1Gbit/s Unlimited
локация:
Операционная система:
Срок оплаты:
799₽
PRO
CPU
4x2.6Ghz
RAM
6GB DDR4
SSD
100GB NVMe
IP-адрес трафик
2 (ipv4, ipv6) port 1Gbit/s Unlimited
локация:
Операционная система:
Срок оплаты:
1288₽

Tариф Custom

Трафик: Unlimited 1Gbis/s port
Windows OS доступны с минимальными характеристиками: 2 vCPU, 2 GB RAM, и 20 GB SSD
Цена:
1vCPU - 180₽ (1 бесплатно)
1GB RAM - 230₽
1GB SSD - 15₽
1 ipv4 - 200₽ (1 бесплатно)
Соберите свой сервер:
2 vCPU
20GB RAM DDR4
20GB SSD NVMe
1 ipv4
Операционная система:
локация:
Срок оплаты:
1400₽