Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
AI и языковые модели

Odysseus

Свой ИИ-ассистент с чатом, заметками, документами, почтой и календарем. Проверили его на обычном сервере без видеокарты: что уже работает, сколько нужно ресурсов и какая часть данных уходит к поставщику модели.

Проверено на версии v1.0.3, 4 октября 2026~10 минут чтенияFatmetal Team
Свой ИИ-ассистентAGPL-3.0-or-laterЧат проверен на живом стенде

Вердикт

Подходит
  • Тем, кому нужен собственный рабочий интерфейс для диалога с выбранной моделью и личных заметок.
  • Команде, готовой обслуживать сервер и оплачивать обращения к внешнему API отдельно.
Не подходит
  • Тем, кто требует полностью автономную нейросеть: в проверенном сценарии ответы дает внешний провайдер.
  • Тем, кому уже сегодня нужна проверенная синхронизация почты и календаря либо русский интерфейс.
Проверенный тариф: CPU2-RAM4-DISK50Сложность: средняяПервая установка: 553 сГлавный риск: внешняя модель видит отправленный контекст
Что это

Зачем нужен Odysseus

Odysseus собирает личное рабочее пространство вокруг ИИ-чата. В боковом меню есть документы, заметки, календарь и почта; модель подключается через ключ выбранного поставщика. Сам сервер отвечает за интерфейс и хранение части рабочих данных.

Для проверки мы подключили OpenRouter, выбрали gpt-4o-mini и задали простой вопрос. Ассистент ответил «Земля», а диалог остался в истории после пересоздания контейнера. Заметка, созданная через интерфейс, тоже сохранилась.

Почтовый аккаунт и CalDAV-календарь не подключали: для них нужны отдельные учетные данные. Наличие разделов в меню не доказывает готовность этих сценариев для вашей почты. На снимке календаря нет событий.

Поэтому оценивать Odysseus как замену привычному почтовому клиенту пока рано. Надежный вывод уже: диалог и личная заметка доступны через один вход, а сохранение проверено повторным открытием после перезапуска приложения.

Сохраненный чат Odysseus с ответом внешней модели
Публичный HTTPS-стенд: диалог с gpt-4o-mini, 4 октября 2026
Выбор

Чем отличается от облачного ассистента

У готового облачного чата поставщик ведет и интерфейс, и хранение истории, и работу модели. Odysseus переносит первые две части на ваш сервер. Провайдера модели вы выбираете сами, а ее вызовы оплачиваются по его правилам.

ВопросOdysseus на своем VPSГотовый облачный чат
Где рабочий интерфейсНа вашем сервере, под вашим HTTPS-адресомУ поставщика сервиса
Кто отвечает модельюВыбранный внешний API в нашем тестеПоставщик сервиса
Что нужно обслуживатьОС, контейнеры, копии данных, ключиЛокальный сервер не нужен
Как оплачиваетсяVPS и обращения к модели отдельноПо условиям сервиса

Это не способ получить бесплатную модель на CPU-сервере. Вы выигрываете контроль над экземпляром приложения, но все, что отправляете в запросе к модели, пересекает границу вашего VPS.

Если ваша задача - просто задать несколько вопросов в день, стоимость и обслуживание VPS могут оказаться лишними. Смысл самостоятельной установки появляется тогда, когда важны собственный адрес, контроль над приложением и возможность развивать единое рабочее пространство.

Под капотом

Как устроен стек

Официальная установка через Docker Compose поднимает четыре сервиса. Odysseus дает веб-интерфейс и логику чата; ChromaDB хранит векторные данные; SearXNG обслуживает поиск; ntfy нужен для уведомлений. На стенде приложение собиралось из исходного кода.

Для внешнего доступа мы поставили Caddy перед приложением. Все порты самого стека привязали к локальному интерфейсу сервера, а наружу открыли только HTTP для сертификата и HTTPS для пользователей. Сертификат проверился обычным клиентом без отключения проверки TLS.

Docker ComposeChromaDBSearXNGntfyCaddy

Выпуск без GitHub-тега усложняет обновления: у проекта указана версия 1.0.3 в коде, а ветка по умолчанию называется dev и самим автором описана как потенциально нестабильная. Для стенда взяли main и закрепили конкретный коммит.

Ресурсы

Какой сервер нужен

Проверенный набор - Ubuntu 24.04.4 LTS, два виртуальных ядра, 4 ГБ RAM и диск 50 ГБ. С такой конфигурацией приложение отвечало через внешнюю модель, а на машине оставался запас памяти и места.

Тариф стенда и рекомендацияCPU2-RAM4-DISK50
RAM четырех контейнеров в простое841 MiB анонимной памяти
Доступная память хоста2,36 GiB
Свободное место после установки31,92 GiB
Оценка для локальной моделиНе проводилась

Апстрим не дает числового минимума RAM для этого состава. Проверку на 2 ГБ мы не проводили, поэтому не обещаем, что этого хватит для сборки и дальнейшей работы. В замер также не входила параллельная нагрузка пользователей.

Планируйте диск по своим данным, а не только по размеру образов. После установки свободно оставалось 31,92 GiB, но загрузки документов могут быстро занять это место. Скорость роста мы не измеряли.

i

Практический выбор. CPU2-RAM4-DISK50 подходит для проверенного режима с внешним API. Для локальной генерации и большого архива документов потребуется отдельный расчет ресурсов.

Установка

Как развернуть на Fatmetal

На чистой VM мы установили Docker, Compose и Caddy, создали 4 ГБ подкачки и запустили четыре контейнера. Скрипт установки в артефактах разбора закрепляет коммит исходников и образы соседних сервисов, а пароль администратора создает случайно.

  1. Выбрать сервер

    Ubuntu 24.04 и CPU2-RAM4-DISK50. Для внешнего API видеокарта не нужна; локальную модель этот опыт не покрывает.

  2. Поднять стек

    Рецепт собирает приложение из закрепленного main, запускает ChromaDB, SearXNG и ntfy, затем настраивает HTTPS. Первый запуск требует времени на сборку и загрузку зависимостей.

  3. Подключить модель

    В Settings → Add Models вводится ключ выбранного провайдера. До этого список моделей пуст, поэтому пустой чат после входа еще не означает поломку установки.

  4. Проверить результат

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

На VPS Fatmetal уже есть прокси к внешним API. В проверенном рецепте переменные HTTP_PROXY, HTTPS_PROXY и NO_PROXY стоят в окружении приложения; выбирать и оплачивать провайдера моделей остается пользователю. Живой диалог через этот путь прошел.

Настройки Odysseus с подключенным провайдером моделей
Подключенный провайдер в настройках; секретный ключ на снимке не показан
Замеры

Что показал живой стенд

Первый запуск с чистой ОС до завершения установочного скрипта занял 553 секунды. Еще около 30 секунд прошло до первого ответа приложения после старта контейнера; эту часть мы оценивали опросом раз в 10 секунд.

Первая установка553 с
Образы четырех сервисов3,90 GiB суммарно
Данные после одного чата87,72 MiB, почти все - кеш эмбеддингов
Отклик публичного /login48,4 мс, медиана пяти запросов
Состояние контейнеров4 из 4 работают, без рестартов

На корне было занято 15,45 GiB, но это не размер самого Odysseus: в число входят 4 GiB подкачки и около 6 GB кеша сборки Docker. Объем будущих загрузок на стенде не измерялся.

Память замеряли без нагрузки, как анонимные страницы контейнеров. Кеш файлов отдельно составил 305 MiB. Эти цифры показывают базовый след приложения, но не предел при поиске, индексации документов или нескольких одновременных диалогах.

Проверено на версии v1.0.3, 4 октября 2026. Замеры относятся к одному чату с внешней моделью; после обновления или роста данных их нужно повторить.

Ограничения

Где может сломаться

Сразу после запуска Caddy кратко отдавал 502: приложение еще скачивало локальную модель эмбеддингов FastEmbed. Примерно через полминуты появилась страница входа. Проверку готовности лучше вести по самому приложению, а не только по статусу контейнера.

502 Bad Gateway после старта

Причина. Контейнер уже работает, но приложение еще готовит зависимости и не отвечает на запросы.

Действие. Проверить журнал приложения и повторить запрос к странице входа после завершения первого запуска.

Установка тянет исходники и несколько образов, затем локально собирает основной образ. На нашем стенде именно сборка заняла большую часть времени. Смена ветки или плавающего тега без закрепления может дать другой состав и другое поведение.

В журналах старта появился Browser MCP, который вызывает npx -y @playwright/mcp@latest. Эта зависимость меняется независимо от закрепленного коммита Odysseus. Мы не проверяли работу браузерных инструментов, поэтому считаем ее риском воспроизводимости, а не подтвержденной функцией.

!

Граница проверки: получение и отправка почты, синхронизация календаря, загрузка документов и работа нескольких пользователей на стенде не проходили функциональный тест.

Эксплуатация

Безопасность, данные и обновления

Вход администратора защищен случайным паролем. Секрет находится в файле на сервере с ограниченными правами, а не в статье или адресе сайта. Вспомогательные сервисы недоступны напрямую из интернета.

Данные приложения лежат в /opt/odysseus/data; отдельные тома Compose нужны соседним сервисам. Перед обновлением надо сохранить и каталог приложения, и используемые тома, а затем проверить восстановление. Само восстановление в этом прогоне не тестировали.

Самостоятельный сервер дает контроль над историей и настройками. Он не замыкает весь ИИ-процесс внутри VPS: текст вопроса и контекст, отправленные во внешний API, обрабатываются выбранным провайдером. Для конфиденциальных данных это отдельное решение, включая условия самого провайдера.

Из-за отсутствия формального релиза обновление лучше привязывать к проверенному коммиту main и делать после резервной копии. Автоматически переходить на dev при каждом перезапуске контейнера нельзя считать предсказуемым обновлением.

Лицензия AGPL-3.0-or-later допускает самостоятельную установку, но требует внимания к условиям при изменении и сетевом предоставлении продукта. Это особенно важно командам, которые собираются менять код под свои процессы.

Рядом

Какие решения рассмотреть рядом

Если главный сценарий - вопросы к базе документов, сравните Odysseus с AnythingLLM. Если нужен прежде всего интерфейс к нескольким моделям и агентам, посмотрите LobeHub. Выбор зависит от того, какие рабочие данные действительно нужны в одном окне.

Для Odysseus привлекательна связка чата с заметками и другими личными разделами. В нашем тесте чат и заметка заработали; почта и календарь остались предметом отдельной проверки перед переносом повседневной работы.

Сохраненная заметка в Odysseus
Заметка, созданная и сохраненная через интерфейс на стенде
Пустой календарь Odysseus без подключенной синхронизации
Календарь без событий: синхронизация на стенде не проверялась
Решение

Когда это НЕ ваш выбор

Нужен полностью локальный ИИ

Проверенный режим обращается к внешнему API. Развертывание интерфейса на своем VPS не означает, что модель тоже работает на нем; локальную генерацию мы не испытывали.

Почта и календарь должны работать сразу

Соответствующие экраны есть, но получение писем и синхронизация событий не проходили тест. Не переносите рабочий процесс до проверки на собственных учетных записях.

Нужен русский интерфейс без доработок

На стенде настройки языка не нашлись, поиск по настройкам тоже его не показал. Русский текст в чате и заметке возможен, но интерфейс на снимках английский.

Нет времени на обслуживание

Сборка из исходников, несколько сервисов, резервное копирование и отдельный ключ модели требуют операционной работы. Готовый облачный чат проще для человека без администратора.

FAQ

Частые вопросы

Нужен ли ключ ИИ-провайдера?

Да. До его добавления список моделей в нашем экземпляре был пуст. Ключ и тариф API выбирает пользователь; прокси к внешним API уже входит в VPS Fatmetal.

Можно ли запустить без видеокарты?

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

Хватит ли 2 ГБ памяти?

Не проверяли. Измеренный стенд имел 4 ГБ RAM и потреблял 841 MiB анонимной памяти контейнеров в простое; сборка и нагрузка требуют запаса.

Проверены ли почта и календарь?

Нет. Разделы открываются, но учетные записи IMAP/SMTP и CalDAV мы не подключали. Пустой календарь на снимке не свидетельствует о синхронизации.

Где остаются данные?

Рабочие файлы приложения находятся на VPS. Контекст каждого запроса к внешней модели отправляется поставщику API; какие именно данные попадают в запрос, зависит от сценария.

Что сохранять в резервной копии?

Каталог данных Odysseus и тома соседних сервисов. После обновления стоит проверить восстановление; такой тест мы в этом прогоне не проводили.

Какая лицензия?

В текущем README указана AGPL-3.0-or-later. Если планируете изменять продукт или давать доступ к измененной версии по сети, проверьте условия лицензии для своего случая.

Итог

Odysseus разумен как собственный интерфейс для ИИ-чата и заметок, если вы готовы обслуживать сервер и осознанно отправлять контекст внешней модели. На CPU2-RAM4-DISK50 проверенный сценарий работал; почту, календарь и локальную генерацию нужно проверять отдельно.

Новые разборы в TelegramПрактика развертывания, замеры и ограничения открытых продуктов@fatmetal_channel →

Измерения сделаны на одном стенде 4 октября 2026. Результаты могут измениться после обновления версии или при другой нагрузке.

Спросить инженера в TelegramМы на связи