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 - переменная из вашего окружения
Важно: префикс os.environ/ означает что LiteLLM возьмёт значение из переменной окружения, ключи не хранятся в файле конфига.
Как сохранить любой ключ в переменную окружения
Что бы сохранить ключ в переменную окружения
export MODEL_API_KEY="ваш-ключ"
Чтобы сохранялся после перезагрузки:
echo 'export MODEL_API_KEY="ваш-ключ"' >> ~/.bashrc
source ~/.bashrc
Список всех поддерживаемых провайдеров есть на странице https://models.litellm.ai/
Запуск 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
Если логи пустые, то возможно контейнер ещё не развернулся, подождите немного и проверьте позже ещё раз
Первый запрос
Проверьте доступность API:
curl http://localhost:4000/health/liveliness
Отправьте запрос к модели:
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: Подключение из 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)
Запустите
Вы получите ответ
Теперь модель доступна из 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"
Логи контейнера:
docker logs litellm -f
Перезапуск после изменения конфига:
docker restart litellm
Веб-интерфейс LiteLLM UI
После запуска LiteLLM открывает панель управления по адресу http://IP_СЕРВЕРА:4000.
В open-source версии в нем ничего нет кроме документации.
В платных версиях есть:
- список подключённых моделей
- логи всех запросов в реальном времени
- создание виртуальных ключей для команды с лимитами и бюджетом
- статистика использования и расходов по каждому ключу
- управление провайдерами без редактирования config.yaml
Войти можно с мастер-ключом, для этого введите его в поле API Key при входе.
Безопасность
По умолчанию порт 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_MASTER_KEYвdocker-compose.yml— выносите в.envфайл - добавьте
.envв.gitignoreперед первым коммитом
Совместимость
LiteLLM работает как замена OpenAI API в большинстве инструментов:
- VS Code Continue: укажите
http://ВАШ_IP:4000как base URL - Cursor: аналогично через настройки модели
- n8n: HTTP-запросы к вашему прокси
- LangChain / LlamaIndex:
openai_api_baseна ваш сервер - Ollama: можно добавить как провайдер в config.yaml
Заключение
LiteLLM решает главную проблему при работе с несколькими AI-провайдерами, несовместимость API и разрозненные ключи.
Один раз настроив прокси на VPS, вы получаете единую точку входа для всех моделей, которую используют все ваши приложения и скрипты.
VPS в Нидерландах и Испании для развёртывания LiteLLM от 299 ₽/месяц на litnets.com
Tариф Custom
Windows OS доступны с минимальными характеристиками: 2 vCPU, 2 GB RAM, и 20 GB SSD
Цена:
1vCPU - 180₽ (1 бесплатно)
1GB RAM - 230₽
1GB SSD - 15₽
1 ipv4 - 200₽ (1 бесплатно)