Гид по технологиям

Установка FreeIPA в Docker на Debian 12

• 9 min read • DevOps • Обновлено 24 Nov 2025
FreeIPA в Docker на Debian 12 — пошагово
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/hosts
192.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.

Настройка FQDN и часового пояса

Установка 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.gpg
echo \
  "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

Если собираетесь запускать контейнеры от имени обычного пользователя, добавьте его в группу docker (пример для пользователя bob):

sudo usermod -aG docker bob
su - bob
docker run hello-world

Если приветственное сообщение появилось — запуск от имени пользователя работает.

Запуск контейнера от не‑root

Далее все команды в статье выполняются от имени пользователя 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

Клонирование репозитория FreeIPA

Список файлов покажет несколько Dockerfile — выберите нужный. Пример сборки образа на базе AlmaLinux 9:

docker build -t freeipa-almalinux9 -f Dockerfile.almalinux-9 .

Процесс сборки займёт время — он скачает базовый образ и установит пакеты.

Сборка образа FreeIPA

После завершения вы увидите тег freeipa-almalinux9 в выводе docker images:

docker images

Проверка образов Docker

Создание контейнера 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 обслуживается отдельно.

Запуск контейнера FreeIPA

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

Настройка realm и domain Пароли для admin и Directory Manager

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

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/hosts
192.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 показывает тикеты — аутентификация прошла успешно.

Аутентификация Kerberos

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

Страница входа FreeIPA Панель администратора FreeIPA

Управление пользователями и группами из контейнера (ipa)

Для удобства выполните команды управления из самого контейнера (или удалённо через ipa CLI).

Откройте shell внутри контейнера:

docker exec -it freeipa-server-almalinux9 /bin/bash

Аутентифицируйтесь через Kerberos в контейнере (kinit admin) и проверьте тикет (klist):

kinit admin
klist

Вход в контейнер FreeIPA

Установите 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/hosts
192.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

После успешной регистрации в 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 вручную.

Мини‑методология развёртывания (шаги)

  1. Подготовить хост: FQDN, часовой пояс, обновления.
  2. Установить Docker и подготовить том /var/lib/freeipa-data.
  3. Склонировать freeipa-container и собрать образ под выбранный дистрибутив.
  4. Запустить контейнер для первичной конфигурации, задать realm и admin‑пароли.
  5. Остановить временный контейнер и запустить контейнер с пробросом портов.
  6. Настроить Kerberos на хосте и проверить kinit/klist.
  7. Установить freeipa‑client на клиент и выполнить ipa-client-install.
  8. Настроить бэкапы и мониторинг.

Шаблон команд — быстрый чек‑лист (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.


Критические ссылки и ресурсы

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро