В рамках текущего проекта для хранения сведений о настройках серверов и рабочих станций был выбран подход IaaS. Хранение типовых конфигураций будет реализовано в Git-репозитарии (Gitea), а настройка серверов и рабочих станций будет выполняться при помощи Ansible.
Gitea: краткое описание
Gitea — это легковесная, открытая платформа для хостинга IT‑проектов и совместной разработки (аналог GitHub, GitLab), написанная на языке Go.
Ключевые особенности
- Лицензия: MIT (полностью открытый код).
- SelfHosted: можно развернуть на собственном сервере/VPS.
- Минимальные требования: работает даже на слабом железе (например, на Raspberry Pi).
- Функции:
- управление репозиториями (Git);
- система отслеживания задач (issues);
- запросы на включение изменений (pull requests);
- вики для проектов;
- CI/CD через внешние инструменты (напрямую не встроен);
- обзоры кода, уведомления, веб‑хуки.
- Безопасность: поддержка SSH, HTTPS, двухфакторной аутентификации (2FA).
- Интеграции: LDAP/Active Directory, OAuth (GitHub, Google и др.), Docker.
- Интерфейсы: веб‑интерфейс + API (REST).
Плюсы
- Простота установки и администрирования.
- Малый объём памяти и CPU.
- Активное сообщество и частые обновления.
- Полный контроль над данными и инфраструктурой.
Минусы
- Меньше встроенных интеграций и функций, чем у GitHub/GitLab.
- Для продвинутого CI/CD нужны внешние решения.
- Интерфейс проще, чем у коммерческих аналогов.
Где используется
- Внутренние репозитории компаний.
- Открытые проекты, где важен самохостинг.
- Образовательные и малые команды с ограниченными ресурсами.
Итог: Gitea — хороший выбор для тех, кто хочет собственный GitHub‑подобный сервис с минимумом накладных расходов.
Установка Gitea
Официальные ресурсы:
Создаем каталог где будет находиться Gitea, загружаем приложение, распаковываем из запускаем. Так-как это бинарное Go-приложение, то особых зависимостей не требуется и наш минимальный RedOS сервер нас вполне устраивает.
Приступим.
Устанавливаем git.
# dnf install git
Скачиваем и распаковываем.
# mkdir /opt/gitea
# cd /opt/gitea
# wget https://dl.gitea.com/gitea/1.25.2/gitea-1.25.2-linux-amd64
# mv ./gitea-1.25.2-linux-amd64 ./gitea
# chmod +x ./gitea
Создаем пользователя от имени которого будет запускаться сервис.
# adduser --system --shell /bin/bash --home /opt/gitea/ git
# chown -R git:git /opt/gitea/
Тестовый запуск.
# su git
$ ./gitea web --port 18000
Сейчас Gitea доступна по адресу сервера на порту 18000.

Настройка максимально простая и особо на ней задерживаться не будем.
- Выбираем тип базы данных
- Параметры подключения к базе данных
- логин/пароль администратора
- Сервисы
- Настройки почты и т.п.
На первое время можно оставить как есть и в дальнейшем мы сможем все настроить в конфигурационном файле /opt/gitea/custom/conf/app.ini.
Запуск Gitea в виде SystemD сервиса
Создаем файл /usr/lib/systemd/system/gitea.service.
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
[Service]
LimitNOFILE=524288:524288
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/opt/gitea
ExecStart=/opt/gitea/gitea web --port 18000
Restart=always
Environment=USER=git HOME=/opt/gitea/ GITEA_WORK_DIR=/opt/gitea/
[Install]
WantedBy=multi-user.target
Настраиваем автозапуск сервера.
# systemctl daemon-reload
# systemctl enable gitea
# systemctl start gitea
# systemctl status gitea
Проверяем, что Gitea работает.

Авторизация в IPA-домене
Чтобы настроить авторизацию Gitea через IPA (Identity Provider for Active Directory / FreeIPA), нужно использовать LDAP‑аутентификацию — поскольку IPA поддерживает LDAP‑интерфейс для аутентификации пользователей.
Подготовка: данные IPA
Убедитесь, что у вас есть:
- LDAP‑сервер IPA:
ldap://ipa.example.comилиldaps://ipa.example.com(рекомендуется TLS). - Base DN (база поиска): например,
dc=example,dc=com. - Bind DN (учётка для поиска пользователей): например,
uid=gitea-bind,cn=users,cn=accounts,dc=example,dc=com(можно создать служебную учётную запись в IPA). - Пароль Bind DN.
- Фильтр поиска пользователей: обычно
(uid=%s)или(cn=%s). - Атрибуты пользователя:
uid,mail,givenName,snи т. п. - Порт LDAP: 389 (без TLS), 636 (LDAPS).
- TLS/SSL: желательно включить (проверьте сертификат сервера IPA).
Настройка Gitea (через веб‑интерфейс)
- Войдите в Gitea как администратор.
- Перейдите в Site Administration → Authentication Sources → Add Authentication Source.
- Выберите тип: LDAP (via LDAP/LDAPS).
Основные параметры
- Authentication Name: например, «IPA LDAP».
- Server Host:
ipa.example.com(или IP). - Port:
636(для LDAPS) или389(для LDAP). - Enable TLS: отметьте, если используете LDAPS (порт 636).
- Bind DN:
uid=gitea-bind,cn=users,cn=accounts,dc=example,dc=com. - Bind Password: пароль служебной учётной записи.
- User Base:
cn=users,cn=accounts,dc=example,dc=com(где искать пользователей). - User Filter:
(uid=%s)(подставляет введённое имя пользователя). - Attribute Username:
uid. - Attribute Name:
givenName(илиcn). - Attribute Surname:
sn. - Attribute Email:
mail. - Admin Group: (опционально) DN группы администраторов, например
cn=gitea-admins,cn=groups,cn=accounts,dc=example,dc=com. - Allowed Domains: (опционально) список доменов, например
example.com.
Дополнительные настройки
- Skip Local 2FA: обычно
false. - Allow DN: (опционально) фильтр для разрешённых DN.
- TLS Config: если нужны особые настройки TLS (например, игнорирование ошибок сертификата — не рекомендуется в продакшене).
Проверка входа
- Выйдите из Gitea.
- Попробуйте войти с учётной записью IPA (например,
username@example.comили простоusername). - Если вход удался — интеграция работает.
Дополнительные рекомендации
- LDAPS (порт 636): всегда предпочтительнее, чем LDAP (порт 389). Убедитесь, что сертификат IPA доверен на сервере Gitea.
- Служебная учётная запись: создайте в IPA отдельную учётную запись (например,
gitea-bind) с минимальными правами — только на чтение пользователей и групп. - Группы и роли: если нужно назначать роли в Gitea по группам IPA, используйте поле Admin Group или настройте Group Sync (в некоторых версиях Gitea).
- Логи: если возникают проблемы, проверьте логи Gitea (
gitea.log) и сервер IPA.
Пример конфигурации (в файле app.ini)
Если вы предпочитаете редактировать app.ini вручную:
[auth.ldap]
ENABLED = true
NAME = IPA LDAP
HOST = ipa.example.com
PORT = 636
USE_TLS = true
BIND_DN = uid=gitea-bind,cn=users,cn=accounts,dc=example,dc=com
BIND_PASSWORD = your_password
USER_BASE = cn=users,cn=accounts,dc=example,dc=com
USER_FILTER = (uid=%s)
ATTRIBUTE_USERNAME = uid
ATTRIBUTE_NAME = givenName
ATTRIBUTE_SURNAME = sn
ATTRIBUTE_EMAIL = mail
ADMIN_GROUP = cn=gitea-admins,cn=groups,cn=accounts,dc=example,dc=com
Устранение неполадок
- Ошибка подключения: проверьте доступность сервера IPA и порт (например,
telnet ipa.example.com 636). - Ошибка аутентификации: проверьте Bind DN и пароль.
- Пользователь не найден: проверьте
User BaseиUser Filter. - Проблемы с TLS: убедитесь, что сертификат IPA доверен на сервере Gitea.





