Инструкция по интеграции Nextcloud с контроллером домена Samba AD
В современных IT-инфраструктурах единая точка аутентификации — это не просто удобство, а необходимость. Когда пользователи работают с десятками сервисов, повторный ввод паролей в каждом из них быстро превращается в проблему: растёт нагрузка на службу поддержки, появляются слабые и дублирующиеся пароли, а администратор теряет контроль над доступом.
💡 Присоединяйтесь к нашим сообществам!
Ранее мы уже настроили Nextcloud и контроллер домена на базе Samba AD DC.
Nextcloud — популярная open-source платформа для совместной работы с файлами и данными — поддерживает интеграцию с каталогом LDAP/LDAPS, что позволяет связать его с контроллером домена на базе Samba AD.
Настроим аутентификацию пользователей Nextcloud через Samba AD DC по протоколу LDAPS, обеспечив защищённое соединение и централизованное управление учётными записями.
Технические характеристики развертывания:
- Домен:
ITSCH.LAN - IP контроллера домена (Samba AD DC): 192.168.0.11/24
- IP (внутренней) сервера Nextcloud:
192.168.0.17 - Версия Nextcloud: 34.0.4
- Учетная запись для привязки (Bind DN):
Administrator
1. Подготовка контроллера домена (Samba AD DC)
Для безопасного соединения серверу Nextcloud необходимо доверять сертификату контроллера домена.
Получаем открытый ключ центра сертификации (CA) Samba.
- Подключаемся к контроллеру домена по SSH под пользователем
root. - Выводим содержимое файла корневого сертификата:
cat /var/lib/samba/private/tls/ca.pem
- Копируем весь вывод (от
-----BEGIN CERTIFICATE-----до-----END CERTIFICATE-----) в буфер обмена.
2. Подготовка сервера Nextcloud
На сервере с Nextcloud необходимо установить необходимые PHP-модули и добавить сертификат Samba в список доверенных.
- Подключаемся к серверу Nextcloud по SSH под пользователем
root. - Устанавливаем необходимые пакеты (если они еще не установлены):
apt-get update
apt-get install -y php-ldap ldap-utils
- Создаём директорию для пользовательских сертификатов:
mkdir -p /usr/local/share/ca-certificates/samba
- Создаём и открываем на редактирование файл для сертификата:
mcedit /usr/local/share/ca-certificates/samba/itsch-ca.crt
- Вставляем скопированное на Шаге 1 содержимое сертификата. Сохраняем файл
F2, закрываем редакторF10. - Обновляем хранилище доверенных сертификатов в системе:
update-ca-certificates
Должно появиться сообщение вида 1 added, 0 removed; done.
- Перезапускаем веб-сервер для применения изменений в PHP:
systemctl restart apache2
3. Создание и настройка конфигурации LDAP через консоль
Настройка через веб-интерфейс Nextcloud часто приводит к ошибкам из-за экранирования специальных символов (например, $ в пароле) или проблем с определением базового DN. Настройка через консольную утилиту occ является наиболее надежной.
- Переходим в корневую директорию Nextcloud (у нас это
/var/www/html):
cd /var/www/html
- Создаём новую пустую конфигурацию LDAP. Система присвоит ей идентификатор (обычно
s01):
php occ ldap:create-empty-config
- Последовательно выполняем следующие команды для настройки параметров.
- Указываем хост с обязательным префиксом
ldaps://
php occ ldap:set-config s01 ldapHost "ldaps://192.168.0.11"
- Указываем порт LDAPS
php occ ldap:set-config s01 ldapPort "636"
- Указываем учетную запись для подключения к LDAP (Bind DN)
php occ ldap:set-config s01 ldapAgentName "CN=Administrator,CN=Users,DC=itsch,DC=lan"
- Указываем пароль
php occ ldap:set-config s01 ldapAgentPassword 'НАШ_ПАРОЛЬ'
- Указываем базовый DN для поиска
php occ ldap:set-config s01 ldapBase "DC=itsch,DC=lan"
php occ ldap:set-config s01 ldapBaseUsers "DC=itsch,DC=lan"
php occ ldap:set-config s01 ldapBaseGroups "DC=itsch,DC=lan"
- Настраиваем фильтры (исключаем компьютеры, оставляем только пользователей и группы)
php occ ldap:set-config s01 ldapUserFilter "(&(objectclass=person)(objectclass=user)(!(objectclass=computer)))"
php occ ldap:set-config s01 ldapGroupFilter "(&(objectclass=group))"
php occ ldap:set-config s01 ldapLoginFilter "(&(objectclass=person)(objectclass=user)(sAMAccountName=%uid))"
- Указываем атрибуты для отображения и входа
php occ ldap:set-config s01 ldapExpertUsernameAttr "sAMAccountName"
php occ ldap:set-config s01 ldapUserDisplayName "displayName"
php occ ldap:set-config s01 ldapEmailAttribute "mail"
- Разрешаем игнорирование проверки сертификата (на случай нюансов с самоподписанным сертификатом Samba)
php occ ldap:set-config s01 turnOffCertCheck "1"
- Активируем конфигурацию
php occ ldap:set-config s01 ldapConfigurationActive "1"
4. Проверка конфигурации
После внесения настроек необходимо проверить, может ли Nextcloud подключиться к контроллеру домена и найти пользователей.
- Проверяем статус подключения:
php occ ldap:test-config s01
Ожидаемый результат: The configuration is valid and the connection could be established!
- Проверяем, видит ли Nextcloud конкретного пользователя:
php occ ldap:check-user usertest
Ожидаемый результат: Сообщение об успехе или информация о том, что пользователь найден.
5. Финальная настройка через веб-интерфейс
Хотя основная настройка выполнена через консоль, веб-интерфейс удобен для визуальной проверки и тонкой настройки отображения.
- Открываем веб-интерфейс Nextcloud под учетной записью глобального администратора.
- Переходим в Параметры сервера → Администрирование → LDAP/AD интеграция.


- Если все настройки верны, то при нажатии на кнопку “Проверить конфигурацию“ появится индикатор зелёного цвета и надпись "Конфигурация настроена верно. Связь установлена!”

6. Первый вход пользователя и важные примечания
- Открываем страницу входа Nextcloud (рекомендуется использовать режим инкогнито в браузере).
- Вводим логин доменного пользователя (значение атрибута
sAMAccountName, например,usertest) и его доменный пароль.
Как работает создание пользователей в Nextcloud:
- При первом успешном входе через LDAP Nextcloud автоматически создает "теневую" локальную учетную запись для этого пользователя в своей базе данных.
- Эта запись связывается с уникальным UUID пользователя из Active Directory (
objectGUID). - Конфликты: Если пользователь с таким же логином (
sAMAccountName) уже существовал в Nextcloud как локальный пользователь до настройки LDAP, Nextcloud, как правило, успешно "подхватывает" его и привязывает к LDAP. Пароль для входа при этом начнет проверяться через контроллер домена. - Если пользователь был удален из Active Directory, его учетная запись в Nextcloud будет помечена как отключенная при следующей синхронизации фоновых задач (Cron).
Заключение
Интеграция Nextcloud с контроллером домена Samba AD настроена. Пользователи домена могут входить в Nextcloud, используя свои доменные учётные записи, а при первом входе автоматически создаются связанные локальные профили. Управление доступом теперь осуществляется централизованно — через Active Directory. При удалении пользователя из домена его учётная запись в Nextcloud будет автоматически отключена при следующей синхронизации.