Установка FreeIPA в Docker на Debian 12
Важно: во всех примерах замените имена хостов, IP‑адреса, домен и realm на значения вашей сети.
Содержание
- Введение
- Требования
- Настройка FQDN и часового пояса
- Установка Docker CE
- Сборка Docker‑образа FreeIPA
- Создание и настройка контейнера FreeIPA
- Аутентификация через Kerberos
- Управление пользователями и группами из контейнера
- Добавление хоста‑клиента в FreeIPA
- Рекомендации по безопасности и резервному копированию
- Чек‑листы, критерии приёмки и типичные ошибки
- Короткий глоссарий и финум
Введение
FreeIPA — это решение с открытым исходным кодом для управления идентификацией и доступом в Linux/Unix‑окружениях. Проект является upstream‑версиями компонентов Red Hat Identity Management и сочетает LDAP‑каталог (389 Directory Server), Kerberos, PKI, DNS (опционально через BIND), веб‑интерфейс и вспомогательные утилиты. Развёртывание FreeIPA внутри Docker‑контейнера удобно для тестовых и небольших производственных сред и позволяет изолировать сервисы, при этом сохраняя централизованное управление учётными записями и политиками доступа.
Кратко о терминах: FQDN — полное доменное имя хоста; realm — Kerberos‑реально (обычно домен в верхнем регистре).
Требования
- Сервер с Debian 12 (или Debian 11) с минимум 4 ГБ ОЗУ.
- Root‑доступ или пользователь с правами sudo.
- Для клиента — любой Linux (в примере используется Ubuntu).
- Корректно настроенные DNS/FQDN либо запись в /etc/hosts для тестовой среды.
Настройка FQDN и часового пояса
Перед установкой Docker и FreeIPA проверьте FQDN сервера, файл /etc/hosts и часовой пояс.
Установите FQDN сервера:
sudo hostnamectl set-hostname ipa.hwdomain.lanОткройте /etc/hosts и добавьте строку с внутренним IP, FQDN и коротким именем:
sudo nano /etc/hosts192.168.5.10 ipa.hwdomain.lan ipaСохраните файл и проверьте:
sudo hostname -f
sudo ping -c3 ipa.hwdomain.lanУстановите часовой пояс (замените Europe/Stockholm на ваш):
sudo timedatectl set-timezone Europe/Stockholm
sudo unlink /etc/localtime
sudo ln -s /usr/share/timezone/Europe/Stockholm /etc/localtimeПерейдите к установке Docker.

Установка Docker CE
FreeIPA можно развернуть несколькими способами; для Debian‑производных удобен Docker. Ниже — шаги установки Docker CE из официального репозитория и добавления пользователя в группу docker.
Установите зависимости:
sudo apt install ca-certificates \
curl \
gnupg \
git \
lsb-release
Добавьте GPG‑ключ Docker и репозиторий:
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullОбновите индекс пакетов и установите Docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверьте статус службы Docker:
sudo systemctl is-enabled docker
sudo systemctl status dockerОбычно вы увидите enabled и active (running).

Если собираетесь запускать контейнеры от имени обычного пользователя, добавьте его в группу docker (пример для пользователя bob):
sudo usermod -aG docker bob
su - bob
docker run hello-worldЕсли приветственное сообщение появилось — запуск от имени пользователя работает.

Далее все команды в статье выполняются от имени пользователя bob (или аналогичного обычного пользователя с правами Docker).
Сборка Docker‑образа FreeIPA
FreeIPA предоставляет репозиторий freeipa-container на GitHub с Dockerfile для разных базовых дистрибутивов. Вы можете выбрать подходящую базу (AlmaLinux, CentOS‑производные и т.д.).
Установите git и клонируйте репозиторий:
sudo apt install git
git clone https://github.com/freeipa/freeipa-container.git
cd freeipa-container
ls
Список файлов покажет несколько Dockerfile — выберите нужный. Пример сборки образа на базе AlmaLinux 9:
docker build -t freeipa-almalinux9 -f Dockerfile.almalinux-9 .Процесс сборки займёт время — он скачает базовый образ и установит пакеты.

После завершения вы увидите тег freeipa-almalinux9 в выводе docker images:
docker images
Создание контейнера FreeIPA Server
Создайте каталог для хранения данных FreeIPA на хосте — так данные переживут удаление контейнера:
sudo mkdir -p /var/lib/freeipa-dataЗапустите временный контейнер для первоначальной настройки:
docker run --name freeipa-server-almalinux9 -ti \
-h ipa.hwdomain.lan --read-only --sysctl net.ipv6.conf.all.disable_ipv6=0 \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /var/lib/freeipa-data:/data:Z freeipa-almalinux9Во время запуска контейнера вы попадёте в интерактивную инициализацию, где потребуется выполнить базовую конфигурацию (имя сервера, домен, REALM, пароли). По умолчанию можно отказаться от интеграции DNS (BIND), нажимая ENTER или вводя no, если DNS обслуживается отдельно.

В интерактивном режиме задайте hostname, domain и REALM, затем пароли для Directory Manager и admin (запомните их):

Оставьте NetBIOS по умолчанию и при необходимости откажитесь от настройки NTP внутри контейнера:

Подтвердите параметры и дождитесь завершения установки. В конце вы увидите сообщение Setup complete и краткие инструкции для следующего шага.

После успешной первичной настройки остановите и удалите временный контейнер, чтобы запустить контейнер с проброшенными портами и тем же томом данных:
docker stop freeipa-server-almalinux9
docker rm freeipa-server-almalinux9Запустите контейнер с маппингом портов (включая LDAP, LDAPS, HTTP(S), Kerberos, DNS если нужно и NTP):
docker run --name freeipa-server-almalinux9 -ti \
-h ipa.hwdomain.lan -p 53:53/udp -p 53:53 -p 80:80 -p 443:443 -p 389:389 -p 636:636 -p 88:88 -p 464:464 -p 88:88/udp -p 464:464/udp -p 123:123/udp \
--read-only --sysctl net.ipv6.conf.all.disable_ipv6=0 \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /var/lib/freeipa-data:/data:Z freeipa-almalinux9Запустите контейнер в фоне и убедитесь, что он up:
docker stop freeipa-server-almalinux9
docker start freeipa-server-almalinux9
docker psПосле этого FreeIPA доступен по портам, проброшенным на хост.
Аутентификация через FreeIPA / Kerberos
Проверьте, что в /etc/hosts на хосте записан FQDN и IP вашего FreeIPA:
sudo nano /etc/hosts192.168.5.10 ipa.hwdomain.lanУстановите Kerberos‑утилиты:
sudo apt install krb5-userПри установке укажите REALM (в примере HWDOMAIN.LAN) и Kerberos‑сервер ipa.hwdomain.lan. Конфигурация сохранится в /etc/krb5.conf.
Получите тикет Kerberos от имени admin:
kinit admin
klistЕсли команда klist показывает тикеты — аутентификация прошла успешно.

После этого можно открыть веб‑интерфейс FreeIPA в браузере по адресу https://ipa.hwdomain.lan/ и войти под admin.

Управление пользователями и группами из контейнера (ipa)
Для удобства выполните команды управления из самого контейнера (или удалённо через ipa CLI).
Откройте shell внутри контейнера:
docker exec -it freeipa-server-almalinux9 /bin/bashАутентифицируйтесь через Kerberos в контейнере (kinit admin) и проверьте тикет (klist):
kinit admin
klist
Установите shell по умолчанию для пользователей FreeIPA:
ipa config-mod --defaultshell=/bin/bashСоздайте пользователя ubuntu и задайте пароль:
ipa user-add ubuntu --first=Ubuntu --last=Linux --passwordПроверьте, что пользователь создан:
ipa user-find ubuntu
ipa user-show --raw ubuntu
Создайте группу development и добавьте в неё пользователя ubuntu:
ipa group-add --desc='Development Team' development
ipa group-add-member --user=ubuntu development
ipa group-show development
Добавление хоста‑клиента в FreeIPA
Для управления хостами FreeIPA предоставляет клиента с утилитой ipa‑client‑install. В примере добавляем Ubuntu‑машину.
Шаги кратко:
- Настроить FQDN и часовой пояс клиента.
- Установить пакеты freeipa‑client и oddjob‑mkhomedir.
- Выполнить ipa-client-install с указанием сервера, домена и realm.
Настройка FQDN и часового пояса на клиенте
На клиенте установите FQDN:
sudo hostnamectl set-hostname client01.hwdomain.lanОтредактируйте /etc/hosts:
sudo nano /etc/hosts192.168.5.10 ipa.hwdomain.lan ipa
192.168.5.121 client01.hwdomain.lan client01Проверьте доступность через ping и настройте часовой пояс, как на сервере.

Установка FreeIPA Client
sudo apt update
sudo apt install freeipa-client oddjob-mkhomedirПри установке укажите REALM и Kerberos‑сервер. Затем выполните ipa‑client‑install:
ipa-client-install --hostname=`hostname -f` \
--mkhomedir \
--server=ipa.hwdomain.lan \
--domain hwdomain.lan \
--realm HWDOMAIN.LANПодтвердите предложенные опции (yes), при необходимости откажитесь от установки NTP в клиенте.

После успешной регистрации в FreeIPA на сервере вы увидите хост в списке.

Проверка доступа по SSH от сервера к клиенту
С сервера выполните ssh к клиенту от имени FreeIPA‑пользователя ubuntu:
ssh [email protected]Примите fingerprint, введите пароль и при первом входе смените пароль если потребуется. Убедитесь, что id и whoami показывают учётную запись FreeIPA.

Рекомендации по безопасности, бэкапам и обслуживанию
- Данные FreeIPA (LDAP, CA, NSSDB) должны храниться на устойчивом томе (host volume или внешний том). В приведённом примере используется /var/lib/freeipa-data.
- Регулярно делайте резервные копии каталога и PKI: экспорт ldap‑бэкапов и сертификатов. Для FreeIPA есть встроенные инструменты для резервного копирования и восстановления; при использовании контейнеров убедитесь, что они могут обращаться к тем же томам при восстановлении.
- Ограничьте доступ к портам административного интерфейса (LDAP, LDAPS, HTTP(S), Kerberos) межсетевыми списками доступа (firewall) при эксплуатации в публичных сетях.
- Мониторьте время на всех узлах (NTP) — Kerberos чувствителен к дрейфу времени.
- Для продакшна рассмотрите развёртывание FreeIPA на отдельных виртуальных машинах или кластере с репликацией, а не в одном контейнере.
Чек‑листы и роли
Ниже — компактные чек‑листы задач по ролям для развертывания и проверки FreeIPA.
Роль: Системный администратор (сервер)
- Настроить FQDN и сделать запись в /etc/hosts или DNS.
- Установить Docker и собрать образ FreeIPA.
- Создать постоянный том для /var/lib/freeipa-data.
- Запустить контейнер в интерактивном режиме и выполнить первоначальную настройку.
- Перезапустить контейнер с пробросом портов и проверкой доступности сервисов.
- Настроить резервное копирование данных.
Роль: Администратор каталога (FreeIPA)
- Проверить вход в веб‑панель под admin.
- Создать базовые OU, политики паролей и группы.
- Создать учётные записи сервисов и пользователей управления.
- Настроить SSL/TLS для LDAPS и веб‑интерфейса при необходимости.
Роль: Оператор клиента
- Настроить FQDN клиента и /etc/hosts / DNS.
- Установить freeipa‑client и выполнить ipa-client-install.
- Проверить вход через kerberos (kinit) и доступ к NFS/SSH, если применимо.
Критерии приёмки
- Контейнер FreeIPA запущен и отвечает на требуемые порты.
- kinit admin и klist возвращают валидный тикет Kerberos.
- Веб‑интерфейс доступен по HTTPS и позволяет войти под admin.
- Клиент успешно присоединён и отображается в списке хостов на сервере.
- Создание пользователя, группы и присвоение пользователя в группу работает и синхронизируется.
Частые ошибки и способы решения
- “Не удаётся kinit” — проверьте совпадение времени между хостами, правильность записи в /etc/hosts или DNS для FQDN сервера.
- Неправильный DNS/FQDN — Kerberos и LDAP требуют корректных имён; при тестах используйте /etc/hosts.
- Проблемы с правами на том /var/lib/freeipa-data — убедитесь, что владелец/контекст SELinux (если включён) настроен правильно; при необходимости используйте :Z при монтировании тома в Docker.
- Если веб‑интерфейс выдаёт ошибки сертификата — проверьте сертификаты CA в /etc/ipa‑ca‑certs и в браузере добавьте доверенный CA или импортируйте CA вручную.
Мини‑методология развёртывания (шаги)
- Подготовить хост: FQDN, часовой пояс, обновления.
- Установить Docker и подготовить том /var/lib/freeipa-data.
- Склонировать freeipa-container и собрать образ под выбранный дистрибутив.
- Запустить контейнер для первичной конфигурации, задать realm и admin‑пароли.
- Остановить временный контейнер и запустить контейнер с пробросом портов.
- Настроить Kerberos на хосте и проверить kinit/klist.
- Установить freeipa‑client на клиент и выполнить ipa-client-install.
- Настроить бэкапы и мониторинг.
Шаблон команд — быстрый чек‑лист (cheat sheet)
- Установка зависимостей и Docker:
sudo apt install ca-certificates curl gnupg git lsb-release
# Добавить ключи и репозиторий Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin- Сборка образа:
git clone https://github.com/freeipa/freeipa-container.git
cd freeipa-container
docker build -t freeipa-almalinux9 -f Dockerfile.almalinux-9 .- Первичная настройка контейнера:
sudo mkdir -p /var/lib/freeipa-data
docker run --name freeipa-server-almalinux9 -ti -h ipa.hwdomain.lan --read-only --sysctl net.ipv6.conf.all.disable_ipv6=0 -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/lib/freeipa-data:/data:Z freeipa-almalinux9- Перезапуск с портами:
docker stop freeipa-server-almalinux9
docker rm freeipa-server-almalinux9
# затем запустить с -p ...- В контейнере для управления:
docker exec -it freeipa-server-almalinux9 /bin/bash
kinit admin
ipa user-add ubuntu --first=Ubuntu --last=Linux --password- На клиенте:
sudo apt install freeipa-client oddjob-mkhomedir
ipa-client-install --hostname=`hostname -f` --mkhomedir --server=ipa.hwdomain.lan --domain hwdomain.lan --realm HWDOMAIN.LANКороткий глоссарий (1‑строчные определения)
- FreeIPA — платформа управления идентификацией: LDAP + Kerberos + PKI + (опционально) DNS + веб‑UI.
- FQDN — полное доменное имя хоста (hostname + domain).
- REALM — Kerberos‑realm, обычно домен в верхнем регистре.
- ipa-client-install — утилита для регистрации клиента в FreeIPA.
- kinit/klist — утилиты Kerberos для получения тикета и просмотра его статуса.
Безопасность и эксплуатация (рекомендации)
- Для продакшна используйте отдельные серверы FreeIPA (или репликацию) вместо одного контейнера на одном хосте.
- Включите LDAPS и убедитесь, что сертификаты доверены клиентами.
- Храните ключи и резервные копии в защищённом месте.
- Разграничивайте права: сервисные аккаунты, административные аккаунты и обычные пользователи.
- Тестируйте восстановление из резервной копии в контролируемой среде.
Советы миграции и совместимости
- Если у вас уже есть существующий домен LDAP/Kerberos, планируйте миграцию поэтапно; часто проще развернуть новую FreeIPA‑инфраструктуру и синхронизировать учетные записи.
- При переходе между OS‑базами образов контейнера проверяйте совместимость версий пакетов (389‑ds, ipa‑server, dogtag).
Заключение
В этом руководстве вы узнали, как:
- Установить Docker CE на Debian.
- Собрать образ freeipa‑container и развернуть FreeIPA Server в контейнере с сохранением данных на хосте.
- Выполнить базовую настройку FreeIPA, получить Kerberos‑тикет и войти в веб‑интерфейс.
- Управлять пользователями и группами через ipa CLI внутри контейнера.
- Присоединить Ubuntu‑клиент к FreeIPA и проверить вход через SSH.
Дальше вы можете расширять инфраструктуру: добавить реплики FreeIPA, настроить DNS через BIND, интегрировать с AD или автоматизировать деплой с помощью Ansible/terraform. Для подробной информации и глубоких сценариев эксплуатации обратитесь к официальной документации проекта FreeIPA.
Критические ссылки и ресурсы
- Репозиторий контейнеров FreeIPA: https://github.com/freeipa/freeipa-container
- Официальная документация FreeIPA: https://www.freeipa.org
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента