Recientemente, he tenido que instalar un Alfresco 7.2 en un servidor con Rocky Linux. Seguramente, la calidad de este post no merezca miles de likes, pero como tuve que dedicar cierto tiempo para conseguir que todo funcionara correctamente, he decidido compartirlo por si a laguien le pudiera resultar de utilidad.
El proceso de instalación, está perfectamente detallado aquí, por lo que no voy a repetirlo pero, si te voy a indicar aquellos pasos que han requerido alguna acción adicional.
Yo opté por la instalación con ansible en un servidor único.
En un servidor con una instalación convencional de Rocky Linux 8, segui las intruciones de la documentación que en resumidas cuentas sería algo así:
yum update yum install unzip https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum update --nobest yum install ansible mkdir alfresco_tmp cd alfresco_tmp wget https://nexus.alfresco.com/nexus/service/local/repositories/releases/content/org/alfresco/alfresco-ansible-deployment/1.1.1/alfresco-ansible-deployment-1.1.1.zip unzip alfresco-ansible-deployment-1.1.1.zip cd alfresco-ansible-deployment-1.1.1
Hasta aquí ningún problema, pero al ejecutar el playbook de instalación, me encuentré con la sorpresa de que la cosa no fue demasiado bien. Así que te aconsejo que te detengas aquí un momento y, no sigas con la instalación.
Tras algo de troubleshooting descubro que, el origen de todo, está en que hay una serie de variables que no están definidas en caso de que la instalación se ejecute sobre Rocky Linux. Una vez descubierto esto, la solución es fácil, crear las variables a partir de las de sus distros gemelas.
cp ./roles/sfs/vars/RedHat.yml ./roles/sfs/vars/Rocky8.yml cp ./roles/repository/vars/RedHat.yml ./roles/repository/vars/Rocky8.yml cp ./roles/search/vars/RedHat.yml ./roles/search/vars/Rocky8.yml cp ./roles/trouter/vars/RedHat.yml ./roles/trouter/vars/Rocky8.yml cp ./roles/sync/vars/RedHat.yml ./roles/sync/vars/Rocky8.yml cp ./roles/nginx/vars/RedHat.yml ./roles/nginx/vars/Rocky8.yml cp ./roles/adw/vars/RedHat.yml ./roles/adw/vars/Rocky8.yml cp ./roles/common/vars/CentOS8.yml ./roles/common/vars/Rocky8.yml cp ./roles/postgres/vars/CentOS8.yml ./roles/postgres/vars/Rocky8.yml cp ./roles/transformers/vars/CentOS8.yml ./roles/transformers/vars/Rocky8.yml
Ahota sí, ya podemos ejecutar el playbook
ansible-playbook playbooks/acs.yml -i inventory_local.yml -e "@community-extra-vars.yml"
Esto tardará unos minutos pero, tenemos que agradecer a los autores que nos hayan puesto tan fácil la instlación. Al finalizar, tendremos un alfresco completamente funcional, eso sí, si tienes activado el firewall, asegurate de que permites las conexiones entrantes.
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
Llegados a este punto, ya podemos entra en http://mi-servidor/share con el usuario admin y la contraseña admin. Supongo que no hace falta que recomiende el cambio de contraseña como la primera acción a realizar tras comprobar que la instlación ha funcionado correctamente.
Ya podemos utilzar usuarios locales, pero lo que me interesaba era permitir el acceso a los usuarios de nuestro Active Directory. La ubicación de los ficheros de configuración ha cambiado respecto a versiones anteriores y, tuve que realizar varias pruebas hasta encontrar la ubicación correcta.
nano /etc/opt/alfresco/content-services/classpath/alfresco-global.properties
Al final del fichero, tenemos que añadir algo parecido a esto:
authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap synchronization.syncWhenMissingPeopleLogIn=true synchronization.import.cron=0 0/10 * * * ? ldap.authentication.active=true ldap.authentication.allowGuestLogin=true ldap.authentication.userNameFormat=%s@tudominio.net ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory ldap.authentication.java.naming.provider.url=ldap://tudominio.net:389 ldap.authentication.java.naming.security.authentication=simple ldap.authentication.escapeCommasInBind=false ldap.authentication.escapeCommasInUid=false ldap.authentication.defaultAdministratorUserNames=Administrator,otrousuario,tuusuario ldap.synchronization.active=false ldap.synchronization.java.naming.security.authentication=simple ldap.synchronization.java.naming.security.principal=cn\=UsuarioAd,OU\=IT,OU\=OtraOU,DC\=tudominio,DC\=net ldap.synchronization.java.naming.security.credentials=ContraseñaDeUsuarioConexionAD ldap.synchronization.queryBatchSize=1000 ldap.synchronization.attributeBatchSize=1000 ldap.synchronization.groupQuery=(objectclass\=group) ldap.synchronization.groupDifferentialQuery=(&(objectclass\=group)(!(whenChanged<\={0}))) ldap.synchronization.personQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)) ldap.synchronization.personDifferentialQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(whenChanged<\={0}))) ldap.synchronization.groupSearchBase=DC\=tudominio,DC\=net ldap.synchronization.userSearchBase=DC\=tudominio,DC\=net ldap.synchronization.modifyTimestampAttributeName=whenChanged ldap.synchronization.timestampFormat=yyyyMMddHHmmss'.0Z' ldap.synchronization.userIdAttributeName=sAMAccountName ldap.synchronization.userFirstNameAttributeName=givenName ldap.synchronization.userLastNameAttributeName=sn ldap.synchronization.userEmailAttributeName=mail ldap.synchronization.userOrganizationalIdAttributeName=company ldap.synchronization.defaultHomeFolderProvider=largeHomeFolderProvider ldap.synchronization.groupIdAttributeName=cn ldap.synchronization.groupDisplayNameAttributeName=displayName ldap.synchronization.groupType=group ldap.synchronization.personType=user ldap.synchronization.groupMemberAttributeName=member ldap.synchronization.enableProgressEstimation=true ldap.authentication.java.naming.read.timeout=0
Naturalmente, si quieres que esto funcione con tu Active Directory, tendrás que realizar las adaptaciones pertinentes para que se adapte a tu configuración particular.
Y esto es todo, espero que a alguien le resulte de utilidad.
Top comments (0)