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

Relaticle

CRM с ИИ на своем сервере: поручайте помощнику заполнять сделки сообщением, проверяйте предложенные поля и подтверждайте запись. Развернули 3.8.0 на Fatmetal Cloud Server, замерили память и проверили путь от сообщения до сохраненной сделки.

Проверено на версии v3.8.0, 3 ноября 2026~12 минутFatmetal Team
CRM + ИИ + MCPAGPL-3.06 сервисов работают

Вердикт

Подходит
  • Продавцу, который хочет создавать сделки сообщением и подтверждать поля перед записью.
  • Разработчику интеграции: агент получает штатные инструменты CRM через MCP.
  • Команде, которой нужна своя база клиентов без платы за каждого пользователя.
Не подходит
  • Отделу продаж, которому нужен русский интерфейс.
  • Покупателю готовой телефонии, 1С и синхронизации почты после первого входа.
  • Тому, кто собирается принимать решения только по ответу модели без сверки с карточками.
Тариф: CPU2-RAM4-DISK50Сложность: средняяГлавный риск: ошибка агента в данныхПамять: 2,8 ГиБ в простое

Сервер Fatmetal - 500 руб/мес; лицензия Relaticle бесплатна, API модели и обслуживание оплачиваются отдельно.

Сценарий

От сообщения к карточке сделки

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

Встроенному помощнику можно поручить: «Подготовь сделку для компании Меридиан, сумма 190000, закрытие 15 декабря, этап Proposal/Price Quote». Он находит компанию и показывает поля будущей записи.

После подтверждения помощник сохраняет сделку в CRM; в истории изменений видно, что она создана через чат.

Не нужно вручную заполнять каждое поле, но компанию, сумму, дату и этап нужно проверить до записи.

Предложение Relaticle с пятью полями и кнопкой Create
До подтверждения видно, что именно предложено записать: компанию, сумму, дату и этап.
Сохраненная сделка с суммой 190000 и отметкой Via AI Chat
Та же сделка после повторного открытия: значения сохранены, источник создания виден в журнале.
Переобход

Что изменилось после 3.5.8

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

В 3.8.0 при отключенном Billing собственная установка не тратит прежний пакет из 300 кредитов и разрешает выбирать настроенные модели. Расходы на API модели остаются у владельца ключа.

В Compose появился Reverb для доставки событий через WebSocket. Теперь сервисов шесть, а кеш и сессии используют Redis совместно между процессами.

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

Сравнение

Чем отличается от Attio и HubSpot

Relaticle заменяет ведение записей и воронки, а не всю коммерческую платформу. Сравнивайте цену CRM-ядра отдельно от внедрения, интеграций и обращений к модели.

ВариантПорог по прайсуКак считают
Relaticle на своем сервереСервер от 500 руб/месЛицензия бесплатна; API и обслуживание отдельно
Relaticle Cloud Pro$19/мес при годовой оплатеЗа рабочее пространство
Attio Plus€31/место/мес при годовой оплатеЗа место; есть Free до трех мест
HubSpot Sales Hub StarterОт $20/Core Seat/месЗа место; это базовая цена каталога

Цены на 3 ноября 2026: Relaticle, Attio, каталог HubSpot. Подписка и аренда сервера не включают одинаковый набор работ.

Прайс Relaticle Cloud тоже привязан к пространству. Поэтому смысл собственной установки - выбранное размещение базы и управление конфигурацией, а не только отказ от оплаты за место.

Архитектура

Как устроены шесть сервисов

Веб-приложение работает на PHP 8.5, Laravel, Filament и Livewire. Horizon исполняет фоновые задания, scheduler запускает расписание, Reverb передает события чата в браузер.

PostgreSQL 17 хранит записи CRM, Redis 7 - кеш, сессии и очередь. Четыре роли приложения используют один образ Relaticle; это не четыре скачивания одинакового образа.

Caddy стоит отдельно и принимает HTTPS. Само приложение слушает только 127.0.0.1:8090; порты PostgreSQL и Redis наружу не опубликованы.

PHPLaravelPostgreSQL 17Redis 7HorizonReverb

Исходники доступны под AGPL-3.0. При распространении измененной версии учитывайте условия лицензии; коммерческое сопровождение и стоимость модели считаются отдельно от кода.

Ресурсы

Какой сервер выбрать

Стартовый профиль - Ubuntu 24.04 и CPU2-RAM4-DISK50: 2 vCPU, 4 ГБ RAM, 50 ГБ диска. Результат относится к ограниченной параллельности Horizon из инструкции ниже.

Сервисы в простое2,8 ГиБ, включая shared memory
Из них HorizonОколо 2,4 ГиБ
Пик сценария со сделками3,1 ГиБ
Подкачка хоста в финальном простоеДо 512 МиБ из выделенных 2 ГиБ
Образ Relaticle1,78 ГБ по данным Docker
Тариф 2 vCPU / 4 ГБ / 50 ГБОт 500 руб/мес; цена зависит от частоты CPU

Штатный Horizon запускал слишком много работников и перегружал сервер. На сохраненном профиле запас остается небольшим: подкачка здесь часть рабочей конфигурации, а не обещание дополнительных гигабайтов RAM.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий сервис на своем домене, валидный TLS и файл с доступами.

Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес

Развернуть в 1 клик →
Установка

Развертывание на Fatmetal Cloud Server

Нужен домен, направленный на сервер, доступ по SSH и права root. На чистом сервере команды заняли около восьми минут. Все следующие команды выполняются в одной оболочке; каталог приложения - /opt/relaticle.

  1. Установите Docker и Caddy

    Команды рассчитаны на чистую Ubuntu 24.04 и архитектуру amd64. Выполняйте их в оболочке root после sudo -i.

    umask 022
    apt-get update
    apt-get install -y ca-certificates curl git caddy
    install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    printf '%s
    ' 'deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable' > /etc/apt/sources.list.d/docker.list
    apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Возьмите релиз и добавьте swap

    Версия закреплена тегом. Подкачка нужна для пиков фоновых процессов на выбранных 4 ГБ.

    git clone --depth 1 --branch v3.8.0 https://github.com/relaticle/relaticle.git /opt/relaticle
    cd /opt/relaticle
    sed -i 's@ghcr.io/relaticle/relaticle:latest@ghcr.io/relaticle/relaticle:3.8.0@g' compose.yml
    fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
    printf '%s
    ' '/swapfile none swap sw 0 0' >> /etc/fstab
  3. Задайте адрес и уникальные секреты

    Замените ваш-домен своим именем. Ключ модели пока оставьте пустым: сначала запустите CRM.

    umask 077
    cat > .env <<EOF
    APP_URL=https://ваш-домен
    APP_PORT=127.0.0.1:8090
    APP_KEY=base64:$(openssl rand -base64 32)
    DB_PASSWORD=$(openssl rand -hex 24)
    PASSKEYS_USER_HANDLE_SECRET=$(openssl rand -hex 32)
    SELF_HOSTED_AI_URL=https://openrouter.ai/api/v1
    SELF_HOSTED_AI_MODELS=openai/gpt-4o-mini
    SELF_HOSTED_AI_KEY=
    EOF
  4. Настройте очереди и соединение с моделью

    Файл дополняет официальный Compose. Параметр store=false переключает SDK на передачу истории вместо ссылки на сохраненный ответ.

    sed -i "/'url' => env('SELF_HOSTED_AI_URL'),/a\            'store' => false," config/ai.php
    cat > compose.override.yml <<'YAML'
    x-env: &env
      <<: {HORIZON_DEFAULT_MIN: '1', HORIZON_DEFAULT_MAX: '1', HORIZON_IMPORTS_MIN: '1', HORIZON_IMPORTS_MAX: '1', HORIZON_EMAILS_SYNC_MIN: '1', HORIZON_EMAILS_SYNC_MAX: '1', HORIZON_EMAILS_IMPORT_MIN: '1', HORIZON_EMAILS_IMPORT_MAX: '1', HORIZON_CHAT_MIN: '1', HORIZON_CHAT_MAX: '1'}
      PASSKEYS_USER_HANDLE_SECRET: ${PASSKEYS_USER_HANDLE_SECRET}
      RELATICLE_FEATURE_BILLING: 'false'
      RELATICLE_FEATURE_SOCIAL_AUTH: 'false'
      RELATICLE_FEATURE_EMAIL_INTEGRATION: 'false'
      RELATICLE_FEATURE_ONBOARD_SEED: 'false'
      HTTP_PROXY: http://api-proxy.fatmetal.net:8080
      HTTPS_PROXY: http://api-proxy.fatmetal.net:8080
      NO_PROXY: localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,postgres,redis,app,horizon,scheduler,reverb,host.docker.internal
      SELF_HOSTED_AI_URL: ${SELF_HOSTED_AI_URL}
      SELF_HOSTED_AI_KEY: ${SELF_HOSTED_AI_KEY}
      SELF_HOSTED_AI_MODELS: ${SELF_HOSTED_AI_MODELS}
      MAIL_SCHEME: smtp
    services:
      app: {environment: *env, volumes: ['./config/ai.php:/var/www/html/config/ai.php:ro']}
      horizon:
        environment: *env
        volumes: ['./config/ai.php:/var/www/html/config/ai.php:ro']
        healthcheck: {test: [CMD, php, /var/www/html/artisan, 'horizon:status'], interval: 30s, timeout: 30s, start_period: 90s, retries: 3}
      scheduler: {environment: *env, volumes: ['./config/ai.php:/var/www/html/config/ai.php:ro']}
    YAML
  5. Запустите сервисы и создайте владельца

    Дождитесь шести healthy. Затем введите имя, свой email и отдельный пароль владельца в штатном диалоге.

    docker compose pull
    docker compose up -d --wait --wait-timeout 180
    docker compose exec app php artisan make:filament-user --panel=app
  6. Включите HTTPS

    A-запись домена должна указывать на сервер; откройте порты 80 и 443. Caddy передает и обычные запросы, и WebSocket.

    cat > /etc/caddy/Caddyfile <<'CADDY'
    {
        acme_ca {$ACME_CA:https://acme-v02.api.letsencrypt.org/directory}
    }
    ваш-домен {
        reverse_proxy 127.0.0.1:8090
    }
    CADDY
    chmod 644 /etc/caddy/Caddyfile
    caddy validate --config /etc/caddy/Caddyfile
    systemctl restart caddy

Откройте https://ваш-домен/app, войдите созданным владельцем. Задайте имя пространства и адрес, ответьте на вопрос об источнике знакомства с продуктом. Выберите Sales и источник обращений; приглашения можно пропустить.

В Opportunities нажмите New opportunity, введите название и сохраните запись. Повторно откройте ее: это первая проверка, что CRM готова принимать ваши данные.

Настройка

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

Для встроенного чата впишите свой ключ в SELF_HOSTED_AI_KEY файла .env. В примере выбран OpenRouter; другой endpoint должен поддерживать Responses API.

cd /opt/relaticle
printf 'Ключ API: '; read -rs MODEL_KEY; echo
sed -i '/^SELF_HOSTED_AI_KEY=/d' .env
printf '\nSELF_HOSTED_AI_KEY=%s\n' "$MODEL_KEY" >> .env
unset MODEL_KEY
docker compose up -d

Прокси http://api-proxy.fatmetal.net:8080 входит в VPS и уже указан в конфигурации. Провайдера выбираете вы; обращения к его API оплачиваются по вашему ключу.

Во внешнем агенте MCP подключается отдельно. Откройте Settings → Access Tokens: выберите пространство, срок и права Read/Create. Сохраните выданный токен в защищенных настройках клиента.

{
  "mcpServers": {
    "relaticle": {
      "type": "http",
      "url": "https://ваш-домен/mcp",
      "headers": {"Authorization": "Bearer ваш-токен"}
    }
  }
}

MCP дает агенту инструменты для чтения и изменения CRM. При отключенной почтовой интеграции сервер вернул 39 инструментов; вызов удаления с токеном Read/Create получил отказ.

i

Встроенный чат показывает предложение и ждет Create. MCP-запись выполняется сразу: подтверждение настраивается в самом внешнем клиенте. Для чтения выдавайте только Read.

Форма токена с выбором рабочего пространства, срока и прав Read/Create
Форма до выпуска токена. Права Update и Delete можно не выдавать агенту, которому нужно только заводить записи.
Практика

Что показал рабочий сценарий

На стенде последовательно создали 100 сделок с суммами, датами и десятью этапами воронки. Серия через MCP заняла 40 секунд; база выросла на 456 КиБ.

Список с данными открылся примерно за 2 секунды. После остановки и запуска сервисов записи сохранились: первый ответ HTTPS появился через 48 секунд, все сервисы стали healthy через 58 секунд.

Отклик страницы входа во время записи составлял около 0,3 секунды. Эти цифры описывают небольшую воронку и последовательную работу агента; емкость для одновременных пользователей из них не следует.

Список сделок Relaticle с суммами, датами и этапами
Фильтр «КП:» отделяет демонстрационные предложения от набора замера. Поля сделки доступны и без чата.

Проверено на версии v3.8.0, ноябрь 2026. На новых версиях результаты могут отличаться.

Диагностика

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

Horizon unhealthy и сервер отвечает медленно

Работники очередей расходуют память даже без почтовой интеграции. Сверьте ограничения Horizon в override и посмотрите состояние:

cd /opt/relaticle
docker compose logs --tail=50 horizon
docker compose exec -T horizon php artisan horizon:status
free -h
The assistant encountered an error после предложения

OpenRouter отклонял продолжение Responses через previous_response_id с HTTP 400. Настройка store=false из инструкции переключает SDK на передачу истории.

Если меняли конфигурацию после запуска, пересоздайте процессы и проверьте права файла: PHP должен читать его внутри контейнера.

chmod 644 /opt/relaticle/config/ai.php
cd /opt/relaticle
docker compose up -d --force-recreate app horizon scheduler
Письмо восстановления не приходит

Настройте в .env собственный SMTP: MAIL_MAILER=smtp, MAIL_HOST, MAIL_PORT=587, MAIL_USERNAME, MAIL_PASSWORD и MAIL_FROM_ADDRESS. Затем примените docker compose up -d.

На стенде ссылка восстановления действительно пришла в ящик примерно за три секунды. Ответ интерфейса об отправке сам по себе доставку не подтверждает.

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

Безопасность, копия и восстановление

Храните .env с правами 600: в нем ключ приложения, пароль БД и ключ модели. Не заменяйте APP_KEY при переносе базы. Для входа используйте HTTPS и отдельный пароль владельца.

Чужой Host на стенде получил HTTP 400, cookie сессии имела Secure/HttpOnly, CSP оставалась включенной. Список разрешенных хостов не расширяйте до любого домена ради устранения ошибки.

Для согласованной копии остановите процессы, которые пишут данные. БД выгружается отдельно от вложений; конфигурацию сохраните вместе с ними и перенесите копию с сервера.

cd /opt/relaticle
mkdir -p backup && chmod 700 backup
docker compose stop app horizon scheduler reverb
docker compose exec -T postgres pg_dump -U relaticle --clean --if-exists relaticle > backup/database.sql
tar -czf backup/config.tgz .env compose.yml compose.override.yml config/ai.php
docker run --rm -u 0 --volumes-from relaticle-app-1 -v "$PWD/backup:/backup" --entrypoint tar ghcr.io/relaticle/relaticle:3.8.0 -czf /backup/storage.tgz -C /var/www/html/storage/app .
docker compose start

Скопируйте архив на свой компьютер из его терминала:

umask 077
ssh ваш-ssh-логин@ваш-домен 'sudo tar -C /opt/relaticle -czf - backup' > relaticle-backup.tgz

Чтобы вернуть эту установку к копии, остановите приложение. Команды ниже заменяют базу и вложения сохраненной копией; архив конфигурации содержит секреты.

cd /opt/relaticle
docker compose stop app horizon scheduler reverb
tar -xzf backup/config.tgz
docker compose exec -T postgres psql -U relaticle -d relaticle -v ON_ERROR_STOP=1 < backup/database.sql
docker run --rm -u 0 --volumes-from relaticle-app-1 -v "$PWD/backup:/backup" --entrypoint sh ghcr.io/relaticle/relaticle:3.8.0 -c 'find /var/www/html/storage/app -mindepth 1 -delete && tar -xzf /backup/storage.tgz -C /var/www/html/storage/app' 
docker compose up -d

Перед обновлением сделайте такую копию. Затем смените тег образа в compose.yml, скачайте его и пересоздайте сервисы; после миграций проверьте вход, карточку сделки и чат.

cd /opt/relaticle
docker compose pull
docker compose up -d --wait --wait-timeout 180
Исправления

Уязвимости прошлых версий

Версия 3.8.0 содержит следующие исправления. Если остались на 3.5.8, сделайте копию и перейдите на нее по инструкции выше; нельзя ограничиться одним исправлением Host.

ИдентификаторСерьезностьВерсии до исправленияИсправленоЧто меняется
GHSA-w9mm-vmqp-9vrxНе опубликованаДо 3.6.4*3.6.4Host не должен менять адрес в ссылке сброса пароля
PR840Не опубликованаКод до 3.6.0*3.6.0Привязка OAuth и чата к пространству, проверки загрузок и адресов
PR964Не опубликованаКод до 3.6.3*3.6.3CRM-запрос без пространства больше не выбирает все пространства
PR1019Не опубликованаКод до 3.6.9*3.6.9Проверка сессий на всем web-стеке и отдельная проверка токенов MCP

*Диапазоны следуют из релизов и исправлений, а не из формального бюллетеня. Официальная серьезность не опубликована; для GHSA публичная карточка недоступна, для остальных приведены номера PR.

В 3.7.0 также сохранена полная CSP на OAuth consent при обновлении MCP-зависимости. Это не основание приписывать ту же регрессию версии 3.5.8.

Выбор

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

Менеджеры работают только на русском. Основные экраны и настройки английские; русские названия компаний и ответы модели не переводят интерфейс.

Нужна почта и календарь сразу после заказа. Их интеграции выключены по умолчанию и требуют OAuth-приложений клиента. Это отдельная настройка, как и телефония или связь с 1С.

Нужна безошибочная аналитика без сверки. В запросе по ста тестовым сделкам модель назвала 103 вместо 100. Сумму посчитала верно, но отбор перепутала: проверяйте ответы по записям.

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

FAQ

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

Чат создает сделку сам?

Он готовит предложение. Встроенный интерфейс ждет Create; в Activity log созданной записи видно Via AI Chat.

Что остается от ограничения кредитов?

При RELATICLE_FEATURE_BILLING=false в 3.8.0 self-hosted чат не расходует облачный пакет. Частоту отправок ограничивает CHAT_RATE_LIMIT_PER_MINUTE, в Compose по умолчанию 60.

Как открыть CRM агенту только для чтения?

В Settings → Access Tokens выберите нужное пространство и единственное право Read. Адрес подключения - HTTPS-домен с путем /mcp.

Нужен ли ключ модели для самой CRM?

Для ручного ведения компаний и сделок ключ не требуется. Встроенному помощнику нужен ключ из .env, внешнему агенту - его собственная настройка модели.

Можно заменить серверную модель одним OpenAI-совместимым URL?

Endpoint в SELF_HOSTED_AI_URL должен поддерживать Responses API: одного chat/completions недостаточно для этой конфигурации. Пример использует OpenRouter со store=false.

Итог

Relaticle дает связку обычной CRM и помощника: сообщение превращается в предложение, подтверждение - в сохраненную запись. Штатный MCP позволяет встроить ту же базу в работу внешнего агента.

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

Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe

Не хотите устанавливать вручную?

Запустите Relaticle на этой конфигурации автоматически - от 450 ₽/мес.

Запустить Relaticle →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.