HopeDC — это программный контроллер домена, совместимый по протоколам с Active Directory (LDAP/LDAPS, Kerberos, CLDAP netlogon, DNS, DHCP, SMB/SYSVOL, глобальный каталог), с собственным веб‑интерфейсом администрирования. Продукт может работать как самостоятельный домен, так и в режиме интеграции с существующим доменом Microsoft AD, поддерживает иерархию доменов (лес) с поддоменами, а также обслуживает Windows‑ и Linux‑клиентов.
| Файл | Назначение |
|---|---|
hopedc-core_vNNN.gz | Программа контроллера домена — один исполняемый файл: все сетевые службы (LDAP/Kerberos/DNS/DHCP/SMB/CLDAP/NTP), встроенная база каталога и веб‑панель администратора. |
install_hopedc.sh | Установщик: проверяет сервер, ставит программу как службу systemd, открывает порты; повторный запуск — обновление. |
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| ОС | Ubuntu 20.04/22.04/24.04, Debian 11/12, RHEL/AlmaLinux/Rocky 9, Astra Linux SE 1.8 (проверено в режиме «Смоленск» с МКЦ, МРД, ЗПС — раздел 13). Один и тот же файл hopedc-core для всех дистрибутивов; нужен glibc 2.30 и новее (проверка: ldd --version). Не поддерживаются: RHEL/CentOS/Alma/Rocky 8 и Astra 1.7 (glibc 2.28), Debian 10 (2.28), CentOS 7 (2.17) — установщик остановится с понятным сообщением | |
| Архитектура | x86‑64 (amd64) | |
| CPU | 2 vCPU | 4 vCPU |
| RAM | 2 ГБ | 4–8 ГБ |
| Диск | 10 ГБ | SSD, 20+ ГБ (база растёт с числом объектов и историей изменений) |
| Права | root или пользователь с sudo — для запуска установщика | |
| Порт | Протокол | Служба | Назначение |
|---|---|---|---|
| 389 | TCP | LDAP | Каталог, простой bind, SASL EXTERNAL (на LDAPS) |
| 636 | TCP | LDAPS | LDAP поверх TLS; поддержка mTLS (клиентский сертификат) |
| 88 | TCP, UDP | Kerberos KDC | AS‑REQ/TGS‑REQ, выдача билетов (RC4‑HMAC, AES128/256). По UDP ответ больше 1465 байт заменяется на KRB_ERR_RESPONSE_TOO_BIG — клиент повторяет по TCP |
| 464 | TCP, UDP | kpasswd | Смена и установка пароля по Kerberos (RFC 3244): kpasswd, Ctrl+Alt+Del в Windows |
| 53 | UDP, TCP | DNS | Авторитативные зоны + форвардер (служба включается в панели) |
| 123 | UDP | NTP | Время домена (MS‑SNTP для Windows); служба включается в панели |
| 4460 | TCP | NTS‑KE | Обмен ключами NTS (если включён) |
| 135, 49152 | TCP | RPC (EPM и данные) | Ввод Windows в домен, Netlogon, LSA, SAMR, DRSUAPI |
| 389 | UDP | CLDAP | Netlogon‑ответчик для realm discovery (SSSD/Windows) |
| 67 | UDP | DHCP | Выдача адресов |
| 445 | TCP | SMB | Доступ к SYSVOL/сетевым ресурсам |
| 80 | TCP | PKI HTTP | Публикация CRL и сертификата ЦС (/pki/<домен>.crl|.crt); порт меняется переменной DC_PKI_HTTP_PORT |
| 3268 | TCP | Global Catalog (LDAP) | Поиск по всем доменам леса |
| 3269 | TCP | Global Catalog (LDAPS) | Тот же GC поверх TLS |
| 9443 | TCP | Веб‑панель (HTTPS) | Admin Center и API через тот же адрес |
| 9444 | TCP | HTTPS Admin API | API для узлов кластера и прямых API‑клиентов, точка репликации |
Нужны два файла: пакет hopedc-core_vNNN.gz и установщик install_hopedc.sh. Актуальная версия, контрольная сумма SHA‑256 и ссылки на оба файла — на странице Обновления.
Если у сервера есть доступ в интернет, скачайте файлы прямо на нём (номер версии возьмите со страницы «Обновления»):
curl -fLO https://hopedc.ru/updates/hopedc/install_hopedc.sh
curl -fLO https://hopedc.ru/updates/hopedc/hopedc-core_vNNN.gz
Для закрытого контура скачайте файлы на рабочий компьютер и скопируйте на сервер, например в /tmp. С Windows это можно сделать встроенной командой scp (PowerShell):
scp .\hopedc-core_vNNN.gz .\install_hopedc.sh admin@10.0.0.5:/tmp/
Больше ничего готовить не нужно: сборка, компиляторы и дополнительные пакеты не требуются.
На сервере выполните одну команду в папке со скачанными файлами:
sudo bash install_hopedc.sh hopedc-core_vNNN.gz
Без пути к пакету скрипт берёт самую новую hopedc-core_vNNN.gz рядом с собой или в /tmp. Журнал установки — /var/log/hopedc-install.log.
--version от имени пользователя службы. Если проверка не прошла, сервер не меняется.hopedc ещё нет): создаёт пользователя службы hopedc (на Astra Linux служба работает от root с метками МКЦ — раздел 13), ставит программу, создаёт мастер‑ключ шифрования базы и юнит hopedc.service, открывает порты в ufw/firewalld, ставит службу обновлений из панели hopedc-update и файл EULA.txt. Системные службы времени отключаются (время домена держит HopeDC); заглушка systemd-resolved на :53 отключается, чтобы поднялся DNS домена.hopedc-core.prev и hopedc-core.bak.<время> (хранятся три последних), недостающие настройки дополняются, служба перезапускается. Данные и ключ сохраняются.| Путь | Назначение |
|---|---|
/opt/hopedc/hopedc-core | программа (веб‑панель встроена); рядом EULA.txt и резервные копии прежних версий |
/var/lib/hopedc | база каталога и данные служб |
/var/log/hopedc | журналы с ежедневной ротацией (на Astra — /var/lib/hopedc/logs) |
/etc/hopedc/master.key | мастер‑ключ шифрования базы и бэкапов — сохраните копию (раздел 8) |
/etc/systemd/system/hopedc.service | служба контроллера |
hopedc-update.path, hopedc-update.service | служба установки обновлений из панели (раздел 11) |
Задаются переменными окружения перед командой:
| Переменная | Назначение |
|---|---|
DC_SELF_IP | IP контроллера; по умолчанию — адрес основного интерфейса |
DATA_DIR | каталог базы (по умолчанию /var/lib/hopedc) |
UI_PORT / API_PORT | порты веб‑панели и API (9443 / 9444) |
JOIN_CLUSTER=1 | новый узел кластера: не создаёт демо‑домен, а получает данные от пира (Документ 7) |
HOSTED_DOMAINS=child.hope.local | региональный сервер своих доменов |
KEEP_TIMESYNC=1 | не отключать системную службу времени |
KEEP_RESOLVED=1 | не отключать systemd-resolved |
NO_FIREWALL=1 | не трогать межсетевой экран |
Пример: sudo DC_SELF_IP=10.0.0.5 JOIN_CLUSTER=1 bash /tmp/install_hopedc.sh.
В конце установщик подсказывает, как войти. Откройте в браузере https://<IP сервера>:9443.
При первом старте на пустой базе контроллер автоматически создаёт домен hope.local и служебные объекты. Ход запуска виден в журнале journalctl -u hopedc -f:
🚀 Запуск системного ядра HopeDC...
✅ База данных HopeDB (WAL) инициализирована. Путь: /var/lib/hopedc ...
✅ Структура домена, Administrator и krbtgt успешно созданы!
LDAP TCP слушает на 0.0.0.0:389
Kerberos TCP слушает на 0.0.0.0:88
🔒 HTTPS API слушает на 0.0.0.0:9444 (TLS); 🔒 веб‑панель — на 0.0.0.0:9443
🔐 Шифрование данных на диске включено. Мастер-ключ: /etc/hopedc/master.key (отпечаток …)
| Что | Логин | Пароль | Примечание |
|---|---|---|---|
| Веб‑панель (Admin Center) | admin | Admin123! | e‑mail admin@hope.local, роль «Администратор» |
| Доменный администратор | Administrator | Admin123! | в домене hope.local |
Admin123! предназначены только для первичного входа. Панельный admin при первом входе обязан задать новый пароль — без этого панель не пустит дальше. Пароль доменного Administrator смените сами: Домены → hope.local → Структура домена.admin не заводской, а случайный: корневой сервер генерирует его при установке и один раз показывает в журнале установки. Доменные учётки, в том числе Administrator, такой узел не создаёт, а получает от кластера.:53) и DHCP (:67) создаются в состоянии «Остановлено» и портов не занимают: в свежем домене ещё нет зон и пулов, а запущенная служба могла бы конфликтовать со штатным DNS/DHCP в сети. Включите их после настройки — в разделе «Службы: DNS и DHCP» веб‑панели. Демо‑зона hope.local и демо‑пул засеиваются как данные, но не раздаются, пока служба выключена. При обновлении состояние служб не меняется.Второй и следующие контроллеры (полная реплика или региональный сервер своих доменов) можно не ставить вручную: в панели первого сервера откройте раздел Контроллеры главного меню (под «Доменами») → «Добавить контроллер», укажите адрес и доступ по SSH (пароль или закрытый ключ, пароль sudo), нажмите «Проверить», затем «Установить». Панель сама передаст пакет и этот же установщик, запустит его в режиме присоединения к кластеру и настроит сопряжение. Требования к серверу те же (раздел 2), плюс вход по SSH с правами root или sudo. Там же контроллеры потом обновляются.
Добавлять, менять и обновлять контроллеры могут только администраторы домена (Domain Admins); делегаты видят список только для просмотра. Пароль admin нового узла показывается один раз в журнале установки — сохраните его.
Вручную дополнительный узел ставится тем же скриптом с параметром JOIN_CLUSTER=1 (Документ 7).
sudo systemctl status hopedc # состояние
sudo systemctl restart hopedc # перезапуск
journalctl -u hopedc -f # журнал в реальном времени
/opt/hopedc/hopedc-core --version # установленная версия
Тонкие настройки задаются переменными окружения службы. Изменить их можно командой sudo systemctl edit hopedc (секция [Service], строки вида Environment=ИМЯ=значение), затем перезапустите службу.
| Переменная | Назначение |
|---|---|
DC_SELF_IP | IP этого контроллера для записей DNS/DHCP при первичном засеве. |
DC_DATA_DIR | Каталог базы (ставит установщик). |
DC_LOG_DIR | Каталог журналов с ежедневной ротацией (hopedc.log.ГГГГ‑ММ‑ДД). |
DC_UI_PORT / DC_API_PORT | Порты веб‑панели и API (9443 / 9444). |
DC_MASTER_KEY_FILE | Путь к файлу мастер‑ключа (по умолчанию /etc/hopedc/master.key). |
DC_MASTER_KEY | Сам мастер‑ключ (64 hex‑символа) — для внешних хранилищ секретов. Имеет приоритет над файлом. Не указывайте его в unit‑файле открытым текстом. |
DC_KRB_UDP_MAX | Наибольший ответ KDC по UDP, байт (по умолчанию 1465, как MaxDatagramReplySize у AD); больший ответ клиент получает по TCP. |
DC_WAL_COMPACT_MB | Порог размера журнала базы, при превышении которого раз в 15 минут выполняется фоновая компактизация (по умолчанию 64). |
DC_PKI_HTTP_PORT | Порт публикации CRL и сертификата ЦС (по умолчанию 80). |
sudo /opt/hopedc/hopedc-core key export --out /root/dc.hdckey --data-dir /var/lib/hopedc. Без ключа база и бэкапы не восстанавливаются (подробно — Документ 2, раздел «Шифрование данных на диске и мастер‑ключ»).Автобэкапы выполняются самим контроллером — настройка в разделе «Резервное копирование» веб‑панели (Документ 2). Для холодной копии остановите службу и скопируйте каталог данных:
sudo systemctl stop hopedc
sudo tar czf /backup/hopedc_data_$(date +%F).tgz -C /var/lib hopedc
sudo systemctl start hopedc
Каталог данных и архивы бэкапов зашифрованы мастер‑ключом, который не входит ни в каталог данных, ни в архив. Копия каталога без ключа бесполезна — храните копию ключа (.hdckey под паролем) отдельно от бэкапов.
Установите HopeDC на новый сервер скриптом (раздел 4), остановите службу, распакуйте холодную копию в /var/lib/hopedc и импортируйте ключ исходного сервера:
sudo systemctl stop hopedc
sudo /opt/hopedc/hopedc-core key import dc.hdckey --force --data-dir /var/lib/hopedc
sudo /opt/hopedc/hopedc-core key info --data-dir /var/lib/hopedc
sudo systemctl start hopedc
Команда key info должна показать одинаковый отпечаток у ключа и у базы. Для восстановления из ZIP‑архива бэкапа на сервере с собственным ключом импорт не нужен: в панели при восстановлении укажите файл .hdckey исходного сервера.
Установщик сам открывает порты в ufw или firewalld. Если вы запускали его с NO_FIREWALL=1 или используете другой межсетевой экран, откройте порты вручную.
ufw (Debian/Ubuntu):
for p in 53/udp 53/tcp 88/tcp 88/udp 464/tcp 464/udp 123/udp 135/tcp 49152/tcp 389/tcp 389/udp 636/tcp 445/tcp 67/udp 3268/tcp 3269/tcp 9443/tcp 9444/tcp 80/tcp; do sudo ufw allow $p; done
sudo ufw reload
firewalld (RHEL):
for p in 53/udp 53/tcp 88/tcp 88/udp 464/tcp 464/udp 123/udp 135/tcp 49152/tcp 389/tcp 389/udp 636/tcp 445/tcp 67/udp 3268/tcp 3269/tcp 9443/tcp 9444/tcp 80/tcp; do
sudo firewall-cmd --permanent --add-port=$p; done
sudo firewall-cmd --reload
# служба работает?
systemctl is-active hopedc
# LDAP отвечает? (пакет ldap-utils)
ldapsearch -x -H ldap://127.0.0.1:389 -b "dc=hope,dc=local" -s base
# Kerberos и панель слушают?
ss -ltnp | grep -E ':88|:9443'
# DNS резолвит зону? (после включения службы DNS в панели)
nslookup hope.local 127.0.0.1
После этого откройте веб‑панель https://<IP сервера>:9443 и войдите как admin / Admin123!.
Версии ставятся из веб‑панели: Настройки → Обновления (Документ 2, п.7). Пакет загружается в панели (закрытый контур) или скачивается по манифесту с сервера обновлений. Применяет его системная служба hopedc-update, которую ставит установщик: она заменяет программу, перезапускает службу и при неудаче откатывает прежнюю версию.
systemctl status hopedc-update.path;/run/hopedc-update/status.json, журнал — journalctl -t hopedc-update;/opt/hopedc/hopedc-core.prev и три последних hopedc-core.bak.*.Скопируйте новый hopedc-core_vNNN.gz в /tmp и снова запустите установщик — данные и ключ сохранятся, прежняя программа останется рядом как .prev/.bak:
sudo bash /tmp/install_hopedc.sh /tmp/hopedc-core_vNNN.gz
sudo install -m 0755 /opt/hopedc/hopedc-core.prev /opt/hopedc/hopedc-core && sudo systemctl restart hopedc
На Astra Linux после этого верните программе метку МКЦ: sudo pdpl-file 0:63:0:0 /opt/hopedc/hopedc-core.
Установщик кладёт рядом с программой /opt/hopedc/EULA.txt (его же выводит hopedc-core --eula). При первом входе в панель полный администратор принимает соглашение (Документ 8); службы контроллера работают и до принятия. Для автоматизированных стендов принятие можно зафиксировать переменной окружения службы HOPEDC_EULA_ACCEPTED=1 — она означает принятие условий организацией, которая разворачивает сервер.
| Симптом | Причина | Решение |
|---|---|---|
| Установщик остановился с сообщением о glibc | ОС старше поддерживаемой (glibc ниже 2.30) | использовать ОС из раздела 2 |
| Установщик остановился на проверке пакета | файл повреждён при копировании или это не пакет HopeDC | скопировать пакет заново; подробности — /var/log/hopedc-install.log |
| «Address already in use» | порт занят (другой DNS на :53, Samba на :445) | освободить порт; при KEEP_RESOLVED=1 — systemctl disable --now systemd-resolved |
Служба не стартует: журнал зашифрован другим мастер-ключом | на сервере не тот ключ (база перенесена с другого сервера) | установить ключ исходного сервера: hopedc-core key import файл.hdckey --force; сверить отпечатки hopedc-core key info (раздел 8) |
| Веб‑панель не открывается | порт 9443 закрыт или служба не запущена | systemctl status hopedc, ss -ltnp | grep 9443, проверить межсетевой экран (раздел 9) |
Та же сборка (требует glibc 2.30+, в Astra 1.8 — 2.36) работает на Astra 1.8 без пересборки и ставится тем же скриптом install_hopedc.sh. Установщик определяет Astra Linux и учитывает её особенности:
pdp-id показывает Уровень целостности=63).root; программа, данные и ключ получают высокую метку целостности МКЦ; журналы пишутся в /var/lib/hopedc/logs (каталог /var/log в Astra — низкой целостности). Новые файлы служба помечает сама, см. Документ 2, раздел 9.DIGSIG_ELF_MODE=2 в /etc/digsig/digsig_initramfs.conf, sudo update-initramfs -u -k all, перезагрузка.ufw/firewalld нет); если он включён — откройте порты из раздела 9.