👥 Nextcloud - Integração LDAP
Configuração da integração do Nextcloud com Samba Active Directory para autenticação centralizada
📋 Índice
- Pré-requisitos
- Instalação da App LDAP
- Configuração do Servidor LDAP
- Filtros de Utilizadores
- Filtros de Grupos
- Atributos LDAP
- Configurações Avançadas
- Teste e Verificação
- Troubleshooting
- Referências
📦 Pré-requisitos
Conta de Serviço no AD
Criar conta de serviço no Domain Controller:
# No servidor DC (192.168.1.10)
sudo samba-tool user create nextcloud-ldap 'StrongP@ssw0rd!' \
--description="Nextcloud LDAP Service Account" \
--mail-address=nextcloud-ldap@fsociety.pt
# Definir password para não expirar
sudo samba-tool user setexpiry nextcloud-ldap --noexpiry
# Verificar
sudo samba-tool user show nextcloud-ldap
Testar Conectividade LDAP
No servidor Nextcloud:
# Instalar ferramentas LDAP
sudo apt install -y ldap-utils
# Testar conexão ao DC
ldapsearch -x -H ldap://192.168.1.10 -D "CN=nextcloud-ldap,CN=Users,DC=fsociety,DC=pt" -W -b "DC=fsociety,DC=pt" "(objectClass=user)"
# Deve retornar lista de utilizadores
📥 Instalação da App LDAP
Via Interface Web
- Login como administrador:
https://nextcloud.fsociety.pt - Apps → Integration → LDAP user and group backend
- Clicar em Download and enable
Via Linha de Comandos
# Instalar app user_ldap
sudo -u www-data php /var/www/nextcloud/occ app:install user_ldap
# Ativar app
sudo -u www-data php /var/www/nextcloud/occ app:enable user_ldap
# Verificar
sudo -u www-data php /var/www/nextcloud/occ app:list | grep ldap
🔧 Configuração do Servidor LDAP
Settings → LDAP/AD Integration
Tab 1: Server
Host: ldap://192.168.1.10:389
Port: 389
User DN: CN=nextcloud-ldap,CN=Users,DC=fsociety,DC=pt
Password: [password da conta de serviço]
Base DN: DC=fsociety,DC=pt
Configuração via OCC:
# Criar configuração LDAP (s01)
sudo -u www-data php /var/www/nextcloud/occ ldap:create-empty-config
# Configurar servidor
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapHost "ldap://192.168.1.10"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapPort "389"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentName "CN=nextcloud-ldap,CN=Users,DC=fsociety,DC=pt"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentPassword "StrongP@ssw0rd!"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapBase "DC=fsociety,DC=pt"
Testar Conexão
# Testar configuração LDAP
sudo -u www-data php /var/www/nextcloud/occ ldap:test-config s01
# Deve retornar: "The configuration is valid and the connection could be established!"
👤 Filtros de Utilizadores
User Filter
Objetivo: Sincronizar apenas utilizadores ativos do AD
(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
Explicação:
objectClass=user- Objeto é utilizadorobjectCategory=person- Categoria é pessoa!(userAccountControl:1.2.840.113556.1.4.803:=2)- Conta NÃO está desativada
Configurar via OCC:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUserFilter "(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"
Login Filter
samaccountname=%uid
Configurar via OCC:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapLoginFilter "samaccountname=%uid"
User Display Name Field
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUserDisplayName "displayName"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUserDisplayName2 "cn"
👥 Filtros de Grupos
Group Filter
objectClass=group
Configurar via OCC:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapGroupFilter "objectClass=group"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapGroupDisplayName "cn"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapGroupMemberAssocAttr "member"
Base DN para Grupos
# OU onde estão os grupos
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapBaseGroups "OU=Grupos,OU=FSociety,DC=fsociety,DC=pt"
📝 Atributos LDAP
Mapeamento de Atributos
# Email
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapEmailAttribute "mail"
# Quota (não usado por defeito)
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapQuotaAttribute ""
# User UUID Attribute
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUuidUserAttribute "objectGUID"
# Group UUID Attribute
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUuidGroupAttribute "objectGUID"
# Username (usado internamente)
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapExpertUsernameAttr "samaccountname"
⚙️ Configurações Avançadas
Nested Groups
# Ativar grupos aninhados
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapNestedGroups "1"
Paging
# Ativar paging para grandes diretórios
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapPagingSize "500"
Turn on SSL/TLS (Opcional)
Se usar LDAPS (porta 636):
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapHost "ldaps://192.168.1.10"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapPort "636"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapTLS "0" # Não usar STARTTLS
Cache
# Configurar cache
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapCacheTTL "600"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapConfigurationActive "1"
Base Users
# OU onde estão os utilizadores
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapBaseUsers "OU=FSociety,DC=fsociety,DC=pt"
✅ Teste e Verificação
Verificar Configuração
# Ver toda a configuração LDAP
sudo -u www-data php /var/www/nextcloud/occ ldap:show-config s01
# Testar conexão
sudo -u www-data php /var/www/nextcloud/occ ldap:test-config s01
Sincronizar Utilizadores
# Procurar utilizadores LDAP
sudo -u www-data php /var/www/nextcloud/occ ldap:check-user
# Contar utilizadores
sudo -u www-data php /var/www/nextcloud/occ ldap:search "(objectClass=user)"
# Forçar sincronização
sudo -u www-data php /var/www/nextcloud/occ user:sync "OCA\User_LDAP\User_Proxy"
Listar Utilizadores Sincronizados
# Listar todos os utilizadores
sudo -u www-data php /var/www/nextcloud/occ user:list
# Deve mostrar 19 utilizadores do AD
Verificar Grupos
# Listar grupos
sudo -u www-data php /var/www/nextcloud/occ group:list
# Ver membros de um grupo
sudo -u www-data php /var/www/nextcloud/occ group:list GRP_TI
Testar Login
- Abrir
https://nextcloud.fsociety.pt - Login com utilizador AD (ex:
rbarbosa) - Password do AD
- Deve fazer login com sucesso
🔍 Troubleshooting
Debug Mode
# Ativar debug LDAP
sudo -u www-data php /var/www/nextcloud/occ config:system:set loglevel --value=0
# Ver logs
sudo tail -f /var/www/nextcloud/data/nextcloud.log | grep -i ldap
# Desativar debug (depois)
sudo -u www-data php /var/www/nextcloud/occ config:system:set loglevel --value=2
Limpar Cache LDAP
# Limpar cache LDAP
sudo -u www-data php /var/www/nextcloud/occ ldap:invalidate-cache
Verificar Conectividade LDAP
# Teste manual
ldapsearch -x -H ldap://192.168.1.10 \
-D "CN=nextcloud-ldap,CN=Users,DC=fsociety,DC=pt" \
-W \
-b "DC=fsociety,DC=pt" \
"(&(objectClass=user)(objectCategory=person))" \
samaccountname displayName mail
Problemas Comuns
Utilizadores não aparecem
# Verificar filtro de utilizadores
sudo -u www-data php /var/www/nextcloud/occ ldap:show-config s01 | grep ldapUserFilter
# Re-sincronizar
sudo -u www-data php /var/www/nextcloud/occ user:sync "OCA\User_LDAP\User_Proxy" --missing-account-action=enable
Login não funciona
# Verificar login filter
sudo -u www-data php /var/www/nextcloud/occ ldap:show-config s01 | grep ldapLoginFilter
# Testar credenciais manualmente
ldapwhoami -x -H ldap://192.168.1.10 -D "CN=rbarbosa,OU=TI,OU=FSociety,DC=fsociety,DC=pt" -W
Grupos não sincronizam
# Verificar filtro de grupos
sudo -u www-data php /var/www/nextcloud/occ ldap:show-config s01 | grep ldapGroupFilter
# Forçar sincronização de grupos
sudo -u www-data php /var/www/nextcloud/occ group:list
📊 Estatísticas de Sincronização
Utilizadores Sincronizados
# Contar utilizadores LDAP
sudo -u www-data php /var/www/nextcloud/occ user:list | grep -c "ldap"
Esperado: 19 utilizadores
Grupos Sincronizados
| Grupo AD | Membros | Descrição |
|---|---|---|
| GRP_TI | 3 | Departamento TI |
| GRP_Gestores | 2 | Gestores |
| GRP_Financeiro | 4 | Financeiro |
| GRP_Comercial | 5 | Comercial |
| GRP_RH | 3 | Recursos Humanos |
| GRP_VPN_Users | 15 | Utilizadores VPN |
📖 Configuração Completa via OCC
Script completo para configurar LDAP:
#!/bin/bash
# Criar configuração
sudo -u www-data php /var/www/nextcloud/occ ldap:create-empty-config
# Servidor
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapHost "ldap://192.168.1.10"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapPort "389"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentName "CN=nextcloud-ldap,CN=Users,DC=fsociety,DC=pt"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentPassword "password_here"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapBase "DC=fsociety,DC=pt"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapBaseUsers "OU=FSociety,DC=fsociety,DC=pt"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapBaseGroups "OU=Grupos,OU=FSociety,DC=fsociety,DC=pt"
# Filtros
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUserFilter "(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapLoginFilter "samaccountname=%uid"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapGroupFilter "objectClass=group"
# Atributos
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUserDisplayName "displayName"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapEmailAttribute "mail"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapGroupDisplayName "cn"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapGroupMemberAssocAttr "member"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUuidUserAttribute "objectGUID"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUuidGroupAttribute "objectGUID"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapExpertUsernameAttr "samaccountname"
# Avançado
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapNestedGroups "1"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapPagingSize "500"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapCacheTTL "600"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapConfigurationActive "1"
# Testar
sudo -u www-data php /var/www/nextcloud/occ ldap:test-config s01
# Sincronizar
sudo -u www-data php /var/www/nextcloud/occ user:sync "OCA\User_LDAP\User_Proxy"
📝 Checklist
- Conta de serviço LDAP criada no AD
- Conectividade LDAP testada
- App user_ldap instalada e ativada
- Servidor LDAP configurado
- Filtros de utilizadores definidos
- Filtros de grupos definidos
- Atributos mapeados
- Configurações avançadas aplicadas
- Teste de conexão bem-sucedido
- 19 utilizadores sincronizados
- 6 grupos sincronizados
- Login testado com sucesso
📖 Referências
**[⬅️ Voltar: Configuração Nextcloud](/fsociety-infrastructure/05-servidor-ficheiros/03-nextcloud-config.html)** | **[Próximo: Nextcloud Apps ➡️](/fsociety-infrastructure/05-servidor-ficheiros/05-nextcloud-apps.html)**
Última atualização: Dezembro 2025