Relaticle
CRM с ИИ на своем сервере: поручайте помощнику заполнять сделки сообщением, проверяйте предложенные поля и подтверждайте запись. Развернули 3.8.0 на Fatmetal Cloud Server, замерили память и проверили путь от сообщения до сохраненной сделки.
Вердикт
- Продавцу, который хочет создавать сделки сообщением и подтверждать поля перед записью.
- Разработчику интеграции: агент получает штатные инструменты CRM через MCP.
- Команде, которой нужна своя база клиентов без платы за каждого пользователя.
- Отделу продаж, которому нужен русский интерфейс.
- Покупателю готовой телефонии, 1С и синхронизации почты после первого входа.
- Тому, кто собирается принимать решения только по ответу модели без сверки с карточками.
Сервер Fatmetal - 500 руб/мес; лицензия Relaticle бесплатна, API модели и обслуживание оплачиваются отдельно.
От сообщения к карточке сделки
В Relaticle компании, люди и сделки связаны между собой. У сделки есть сумма, дата закрытия и этап воронки; рядом находятся задачи, заметки и история действий.
Встроенному помощнику можно поручить: «Подготовь сделку для компании Меридиан, сумма 190000, закрытие 15 декабря, этап Proposal/Price Quote». Он находит компанию и показывает поля будущей записи.
После подтверждения помощник сохраняет сделку в CRM; в истории изменений видно, что она создана через чат.
Не нужно вручную заполнять каждое поле, но компанию, сумму, дату и этап нужно проверить до записи.
Что изменилось после 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 наружу не опубликованы.
Исходники доступны под 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 ГиБ |
| Образ Relaticle | 1,78 ГБ по данным Docker |
| Тариф 2 vCPU / 4 ГБ / 50 ГБ | От 500 руб/мес; цена зависит от частоты CPU |
Штатный Horizon запускал слишком много работников и перегружал сервер. На сохраненном профиле запас остается небольшим: подкачка здесь часть рабочей конфигурации, а не обещание дополнительных гигабайтов RAM.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий сервис на своем домене, валидный TLS и файл с доступами.
Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес
Развертывание на Fatmetal Cloud Server
Нужен домен, направленный на сервер, доступ по SSH и права root. На чистом сервере команды заняли около восьми минут. Все следующие команды выполняются в одной оболочке; каталог приложения - /opt/relaticle.
Установите 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Возьмите релиз и добавьте 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Задайте адрес и уникальные секреты
Замените
ваш-доменсвоим именем. Ключ модели пока оставьте пустым: сначала запустите 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Настройте очереди и соединение с моделью
Файл дополняет официальный 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Запустите сервисы и создайте владельца
Дождитесь шести healthy. Затем введите имя, свой email и отдельный пароль владельца в штатном диалоге.
docker compose pull docker compose up -d --wait --wait-timeout 180 docker compose exec app php artisan make:filament-user --panel=appВключите 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 получил отказ.
Встроенный чат показывает предложение и ждет Create. MCP-запись выполняется сразу: подтверждение настраивается в самом внешнем клиенте. Для чтения выдавайте только Read.
Что показал рабочий сценарий
На стенде последовательно создали 100 сделок с суммами, датами и десятью этапами воронки. Серия через MCP заняла 40 секунд; база выросла на 456 КиБ.
Список с данными открылся примерно за 2 секунды. После остановки и запуска сервисов записи сохранились: первый ответ HTTPS появился через 48 секунд, все сервисы стали healthy через 58 секунд.
Отклик страницы входа во время записи составлял около 0,3 секунды. Эти цифры описывают небольшую воронку и последовательную работу агента; емкость для одновременных пользователей из них не следует.
Проверено на версии v3.8.0, ноябрь 2026. На новых версиях результаты могут отличаться.
Где может сломаться
Работники очередей расходуют память даже без почтовой интеграции. Сверьте ограничения Horizon в override и посмотрите состояние:
cd /opt/relaticle
docker compose logs --tail=50 horizon
docker compose exec -T horizon php artisan horizon:status
free -hOpenRouter отклонял продолжение 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.4 | Host не должен менять адрес в ссылке сброса пароля |
| PR840 | Не опубликована | Код до 3.6.0* | 3.6.0 | Привязка OAuth и чата к пространству, проверки загрузок и адресов |
| PR964 | Не опубликована | Код до 3.6.3* | 3.6.3 | CRM-запрос без пространства больше не выбирает все пространства |
| 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. Сумму посчитала верно, но отбор перепутала: проверяйте ответы по записям.
Данные нельзя передавать внешней модели. Своя БД не исключает отправку выбранного контекста провайдеру чата; правила доступа и обработки нужно определить до подключения ключа.
Частые вопросы
Чат создает сделку сам?
Он готовит предложение. Встроенный интерфейс ждет 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 ₽/мес.
Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.