Локальный сервер — это не роскошь, а необходимость
Вы скачали 30-гигабайтную модель, запустили её на своём компьютере, и она работает. Отлично. Но что дальше? Сидеть перед этим компьютером и вручную вбивать запросы? А если нужно подключить к модели другое приложение — например, Cursor AI или свою собственную разработку?
Вот здесь и возникает проблема: большинство локальных LLM-инструментов по умолчанию работают только на localhost. Они слушают только 127.0.0.1. Доступ извне — забудьте. Ваш телефон в той же Wi-Fi сети не сможет подключиться. Другой компьютер — тоже нет.
Самый частый вопрос на форумах: "Почему я не могу подключиться к своему LLM серверу с другого устройства?" Ответ почти всегда один — не настроен сетевой доступ.
Три подхода к одной проблеме
Мы рассмотрим три популярных инструмента, которые умеют работать с локальными моделями. У каждого — своя философия и свои способы решения сетевой задачи.
| Инструмент | Тип | Сетевая настройка | Сложность |
|---|---|---|---|
| Oobabooga (Text Generation WebUI) | Веб-интерфейс | Флаг --listen или настройки UI | Средняя |
| Jan AI | Desktop приложение | Встроенные настройки сети | Простая |
| LM Studio | Desktop приложение | Встроенный сервер с настройками | Очень простая |
1Oobabooga: для тех, кто не боится терминала
Text Generation WebUI (или просто Oobabooga) — это швейцарский нож для работы с локальными моделями. Он умеет всё: от простого чата до тонкой настройки LoRA. Но его установка — отдельная история (про продвинутые приложения мы уже писали).
Допустим, вы уже установили Oobabooga. Запускаете его обычной командой:
python server.py --model your_model --loader llama.cppИ он работает на http://127.0.0.1:7860. Только для вас. Скучно.
Способ 1: Флаг --listen (самый надёжный)
Добавьте к команде запуска два ключевых флага:
python server.py --model your_model --loader llama.cpp --listen --listen-port 7860Что здесь происходит:
--listen— говорит серверу слушать все сетевые интерфейсы, а не только localhost--listen-port— порт (можно любой свободный)
Теперь сервер доступен по IP-адресу вашего компьютера в локальной сети. Например, если ваш IP 192.168.1.100, то адрес будет http://192.168.1.100:7860.
Внимание: на Linux/Mac может потребоваться разрешить порт в фаерволе. На Ubuntu: sudo ufw allow 7860. На Mac проверьте настройки Security & Privacy → Firewall.
Способ 2: Через веб-интерфейс
Запустите Oobabooga обычным способом, откройте веб-интерфейс, перейдите во вкладку "Parameters" → "Network". Там есть опции:
- Listen: поставить галочку
- Listen Host: 0.0.0.0 (это значит "все интерфейсы")
- Port: ваш порт
Нажмите Apply settings. Но честно? Этот способ менее надёжный. Часто настройки не применяются до перезапуска. Используйте флаги командной строки.
2Jan AI: красота и простота
Jan AI позиционирует себя как "интегрированная среда для локального ИИ". Это приложение с красивым интерфейсом, которое пытается сделать всё проще, чем Oobabooga.
Сетевой доступ в Jan AI настраивается в два клика:
- Откройте настройки (Settings)
- Перейдите в раздел "Developer"
- Найдите "Enable Local API Server"
- Включите его
- Укажите порт (по умолчанию 1337)
Всё. Сервер запускается автоматически. Jan AI создаёт локальный API-сервер, совместимый с OpenAI API. Это значит, что вы можете подключаться к нему с помощью стандартных библиотек:
from openai import OpenAI
client = OpenAI(
base_url="http://192.168.1.100:1337/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="local-model",
messages=[{"role": "user", "content": "Hello!"}]
)Плюс Jan AI в том, что он сразу даёт готовый OpenAI-совместимый эндпоинт. Минус — меньше контроля над параметрами сервера по сравнению с Oobabooga.
3LM Studio: для тех, кто хочет быстро
Если в сравнении LM Studio и llama.cpp мы говорили о двух философиях, то здесь LM Studio показывает свою сильную сторону — простоту.
Настройка сетевого сервера в LM Studio:
- Загрузите модель в LM Studio
- Перейдите на вкладку "Local Server" слева
- Нажмите "Start Server"
- Сервер запускается на localhost:1234
Но как сделать его доступным в сети? В LM Studio нет встроенной опции "слушать все интерфейсы". Вот здесь начинается магия.
Самый простой способ — использовать ngrok для туннелирования:
ngrok http 1234Но это выносит ваш сервер в интернет (через ngrok). Для чисто локальной сети есть другой путь — перенаправление портов в Windows:
netsh interface portproxy add v4tov4 listenport=1234 listenaddress=0.0.0.0 connectport=1234 connectaddress=127.0.0.1На Linux/Mac можно использовать socat или iptables. Но признайтесь — это уже слишком сложно для простого "хочу открыть доступ в локальной сети".
Безопасность: о чём все забывают
Вы открыли свой LLM сервер в локальную сеть. Отлично. Теперь любой, кто подключен к вашей Wi-Fi, может к нему обратиться. Это проблема?
Да, если:
- У вас дома гости
- Вы в офисе
- Ваша Wi-Fi сеть не защищена
- Вы не хотите, чтобы кто-то использовал ваши вычислительные ресурсы
Oobabooga поддерживает базовую аутентификацию через флаг --gradio-auth username:password:
python server.py --model your_model --listen --gradio-auth admin:secretpassword123Jan AI и LM Studio такой встроенной защиты не имеют. Для них нужно ставить reverse proxy с аутентификацией (nginx, Caddy) или использовать VPN для локальной сети.
Никогда не открывайте LLM сервер в интернет без защиты. Особенно если у вас мощная видеокарта. Ваш сервер могут найти и использовать для майнинга или других целей.
Сравнительная таблица: что выбрать
| Критерий | Oobabooga | Jan AI | LM Studio |
|---|---|---|---|
| Простота сетевой настройки | Средняя (флаги) | Очень простая | Сложная (требует обходных путей) |
| Гибкость | Максимальная | Средняя | Минимальная |
| OpenAI API совместимость | Есть (через расширения) | Встроенная | Встроенная |
| Аутентификация | Встроенная | Нет | Нет |
| Кроссплатформенность | Windows, Linux, Mac | Windows, Linux, Mac | Windows, Mac |
Частые ошибки и как их избежать
"Connection refused" на другом устройстве
Проверьте три вещи:
- Запущен ли сервер с флагом
--listenили аналогом? - Не блокирует ли фаервол порт?
- Правильный ли IP-адрес используете? (не localhost, а IP компьютера в сети)
Сервер работает, но запросы не проходят
Возможно, проблема в CORS (Cross-Origin Resource Sharing). Особенно актуально для веб-приложений. В Oobabooga добавьте флаг:
python server.py --listen --corsНа Mac не открывается порт
MacOS имеет агрессивные настройки безопасности. Проверьте:
sudo lsof -i :7860 # проверьте, слушает ли порт
sudo pfctl -s rules # проверьте правила фаерволаЧто в итоге?
Если вам нужен максимальный контроль и вы не боитесь командной строки — берите Oobabooga с флагом --listen. Это работает на всех платформах, даёт полный контроль и даже встроенную аутентификацию.
Если хотите просто и быстро — Jan AI. Включил опцию в настройках, получил OpenAI-совместимый endpoint. Идеально для интеграции с другими приложениями.
LM Studio для сетевого доступа — не лучший выбор. Он создан для локальной работы на одном компьютере. Если очень нужно — используйте туннелирование через ngrok, но помните о безопасности.
И последнее: перед тем как открывать сервер в сеть, подумайте — а нужно ли? Может, проще использовать Ollama с её встроенным сетевым API? Или настроить VPN для безопасного доступа? Локальный LLM — это мощно, но с большой мощностью приходит и большая ответственность за безопасность.