Contrack: личная база контактов на своём сервере со склейкой дублей
Contrack склеивает дубли контактов из телефона, Google и таблиц и напоминает, кому пора написать. Разобрал лицензию, возраст проекта, импорт, куда уходят данные и 152-ФЗ. Отдельно про русские имена и то, чего в проекте нет.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Установка и перенос контактов на ваш серверОдин человек в трёх местах
Риелтор записал клиента в телефон как «Сергей Ленина 12», в таблице он «Сергей Н.», а в переписке остался голый номер. Через месяц надо позвонить, и никто не помнит, о чём договорились и кто его привёл. Полная CRM тут избыточна: сделок нет, нужна книга, где человек один и у него есть история.
Для такой задачи у меня уже есть разбор про личную CRM и про то, нужна ли CRM маленькой компании. Contrack ближе к личной CRM.
Что это и что я проверил
Проверял 18.10.2026 по репозиторию github.com/arvarik/contrack. Файл LICENSE содержит текст GNU AGPL v3, в package.json указана AGPL-3.0-only. Пользоваться у себя можно бесплатно. Если вы доработаете код и дадите людям доступ по сети, пункт 13 лицензии требует предложить им исходники вашей версии.
Репозиторий создан 1 апреля 2026, не архивирован, 58 звёзд, 4 форка. В истории 322 коммита: 316 от самого автора, 6 от бота обновлений. Последний коммит датирован 16 октября. Релизы идут с 14 мая, v2.0.0 вышел 14 октября, v2.0.1 16 октября. Стек по package.json: Express 5, React 19, Vite 8, TypeScript, SQLite. Документация подробная, но английская, русской локализации я не нашёл.
Как склеиваются дубли
По документации после импорта программа сравнивает контакты по общей почте, телефону, ссылке на профиль, имени в одной компании. Явные пары склеиваются сами, спорные попадают в список «Possible duplicates» с причиной: «Same phone number» и подобные. Есть три режима авто-слияния: осторожный (только общая почта), сбалансированный по умолчанию (плюс телефон и ссылка) и смелый. Группа из трёх и более контактов сама не склеивается никогда. Слияние можно отменить в течение 90 дней, пару можно пометить как «разных людей».
Телефоны сравниваются по последним десяти цифрам, поэтому +7 и 8 в начале номера дают один номер. Общий номер у трёх контактов снижает уверенность: так живут семьи и офисы.
Теперь про кириллицу. В разборе имён стоит регулярное выражение, которое оставляет только латинские буквы. Я прогнал его отдельно на строке «Иван Петров» и получил пустой список слов. Выходит, поиск пар по имени для русских имён не сработает. Телефон, почта и ссылка продолжат работать. Дописать «Саша» и «Александр» в одно лицо программа тоже вряд ли сможет. Это вывод из кода, на реальной базе не проверено. Как готовить файл к загрузке, я писал в статье про импорт без дублей.
Связи и контекст: что есть и что нет
Графа «кто с кем знаком» в проекте я не нашёл. Связи устроены проще. В заметке пишете @имя, и запись появляется в истории упомянутого человека. Людей, которых программа увидела в заметке, календаре или почте, но вы не добавили, она держит как «призраков». У отслеживаемого контакта есть оценка от 0 до 100: давность общения 40%, частота 25%, длина заметок 15%, взаимность 10%, динамика 10%. Утром открывается страница Pulse: кому пора написать, у кого день рождения. Есть карта контактов по городам.
Контекст собирают коннекторы: Google (контакты, заголовки писем Gmail, календарь), любая почта по IMAP (заголовки), календарь по ссылке ICS и CardDAV для Nextcloud, iCloud, Fastmail, Radicale, Baïkal. Коннекторов для Telegram и MAX в документации нет.
Куда уходят данные, написано на странице privacy.md репозитория. Телеметрии, проверки обновлений и CDN нет. ИИ работает только после того, как вы добавили ключ Gemini, OpenAI, Anthropic или адрес своего сервера вроде Ollama. Тогда текст заметок и поля контактов идут провайдеру, часть вызовов без клика. Автопоиск по сети для новых контактов выключен по умолчанию. Без переключателя наружу уходят домены в сервис значков Google. Адреса для карты по умолчанию уходят в публичный Nominatim, отключается переменной GEOCODING_DISABLED. База не шифруется, нужно шифрование диска.
Что важно учесть
Проект молодой, держится на одном человеке. В SECURITY.md сказано, что исправления безопасности получает только последний релиз. Миграции с версии 1 на 2 нет.
Вход по умолчанию выключен. Порт открыт только на самой машине, а для доступа извне нужно включить AUTH_REQUIRED=true и поставить HTTPS-прокси. Сделок, воронок и счетов нет, для них смотрите Twenty или EspoCRM. Образ лежит на ghcr.io, доступность из России уточняйте.
Теперь закон. Это не юридическая консультация, сверял по тексту 152-ФЗ на consultant.ru. Исключение для личных нужд в части 2 статьи 1 касается обработки физлицами исключительно для личных и семейных нужд, адресная книга предпринимателя с клиентами по буквальному тексту сюда не попадает. Часть 5 статьи 18 в редакции 23-ФЗ от 28.02.2025 не допускает запись и хранение данных граждан РФ в базах за пределами России, с исключениями по пунктам 2, 3, 4 и 8 части 1 статьи 6. Сервер для Contrack должен стоять в РФ. Статья 19 требует мер защиты, статья 22 говорит об уведомлении Роскомнадзора до начала обработки, с исключениями в части 2. Как вызовы к зарубежным ИИ и геокодеру ложатся на трансграничную передачу, я не разбирал. Основы в статье про персональные данные.
Что можно сделать уже сейчас
Выгрузите контакты из телефона в vCard и из Google в CSV. Импорт принимает до 5000 контактов и 50 МБ за раз.
Поднимите Contrack на тестовом сервере в России с AI_DISABLED=true и GEOCODING_DISABLED=true. Загрузите копию базы и посмотрите, сколько пар он нашёл и сколько пропустил среди русских имён.
Включите вход, настройте ежедневные снимки базы и вынесите их на другую машину вместе с файлом secret.key. Для плановых копий есть разбор GoBackup.
Если нужна установка, перенос контактов и подключение календаря и почты, это входит в мою работу с ИТ-инфраструктурой.
Частые вопросы
Заменит ли Contrack CRM?
Нет. В нём нет сделок, этапов и счетов. По собственному сравнению автора с Twenty это книга отношений без воронки продаж.
Можно ли не подключать ИИ вообще?
Да. Поиск, склейка по точным совпадениям и напоминания работают без ключа на встроенной модели, которая лежит в образе. Часть умных функций тогда выключена.
Сколько стоит?
Программа бесплатна, платить нужно за сервер и мою работу. Цены на услуги смотрите на странице прайса.
Коротко о главном
Contrack под AGPL-3.0 собирает контакты из разных источников, склеивает дубли с отменой на 90 дней и напоминает о людях. Проект молодой, английский, с одним автором, и с русскими именами склейка по имени, вероятно, не работает.
Если хотите, чтобы я поставил адресную книгу на сервер в России, перенёс контакты и проверил склейку на ваших данных, напишите мне в Telegram кодовое слово «СВЯЗИ».
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


