Cómo instalar GroupOffice en CentOS.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2009 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

¿Qué es Group Office?

Es un conjunto Groupware que puede ajustarse a un amplio rango de audiencia. Ofrece muchas funciones que son importantes para cualquier empresa. Es amistoso con el usuario y se combina con funciones poderosas. Se desarrolló con los siguientes conceptos en mente:

•  Velocidad: A diferencia de otras alternativas que son pesadas para el sistema y requieren servidores de gran capacidad, Group Office está diseñado para ser ligero y trabajar tan rápido como sea posible sin sacrificar funcionalidad (utiliza AJAX).
•  Simplicidad: La interfaz de usuario está diseñada para ser intuitiva de modo que los usuarios pueden encontrar fácilmente las funciones que necesiten, sin sacrificar funcionalidad.
•  Modularidad: Es fácil de actualizar gracias a su buen diseño de código. Actualizar no es un calvario.
•  Escalabilidad: Está diseñado para ser utilizado por uno o por miles de usuarios.

Nota: CentOS 5 y Red Hat Enterprise Linux 5 solo pueden utilizar hasta la versión 2.18.STABLE21, debido a que estos sistemas operativos incluyen la versión 5.1.6 de PHP. Las versiones posteriores de GroupOffice (3.00, 3.01 y 3.02) requieren PHP 5.2, que oficialmente carece de soporte para CentOS 5 y Red Hat Enterprise Linux. La versión 2.18.STABLE21 es sumamente funcional y es ideal para pequeñas y medianas empresas. Se recomienda implementar en servidores con uno o dos microprocesadores con al menos 1 GB RAM para atender cómodamente hasta 25 usuarios, 2 GB RAM para hasta 50 usuarios y 4 GB RAM para hasta 100 usuarios.

GroupOffice

Group Office es un muy completo sistema informático colaborativo (Groupware), en modalidad HTTP, que incluye un sistema base y diferentes módulos. Éstos últimos están diseñados de la forma en que los grupos de personas pueden colaborar en linea. Incluye como funciones a calendarios, libretas de direcciones, gestor de proyectos, gestor de archivos y correo electrónico. Los usuarios solo necesitan utilizar cualquier navegador gráfico para acceder a su Groupware desde cualquier parte del mundo. Combinado con un servidor GNU/Linux bien configurado, es una solución completa para las pequeñas y medianas empresas.

Siguiendo los procedimientos de este documento, es posible implementar fácilmente una aplicación colaborativa (Groupware) en menos de 5 minutos.

Equipamiento lógico necesario.

Configuración de depósitos YUM para CentOS 5 y Red Hat Enterprise Linux 5.

Se pueden utilizar el siguiente depósito YUM para la plataforma Enterprise Linux 5.

[AL-Server]
name=Enterprise Linux $releasever - $basearch - AL Server
mirrorlist=http://www.alcancelibre.org/al/el$releasever/al-server
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY

Instalar el paquete principal y el paquete de instalación utilizando el siguiente mandato:

yum -y install groupoffice groupoffice-install

Procedimientos.

1) Crear una base de datos en MySQL

mysqladmin -p create groupoffice

2) Otorgar privilegios a la nueva base de datos con un usuario y clave de acceso de la siguiente manera:

mysql -p
> GRANT all
> ON groupoffice.*
> TO groupoffice@localhost
> IDENTIFIED BY 'clave-de-acceso';
> exit;

Lo anterior también permitirá realizar conexiones remotas a MySQL desde cualquier ubicación.

3) Configurar sudo para que el usuario apache pueda ejecutar los mandatos /usr/sbin/chpasswd, /usr/bin/quota y /usr/sbin/edquota, así como también los archivos /usr/share/groupoffice/action.php y /usr/share/groupoffice/modules/email/account.php. Ejecute el siguiente mandato:

visudo

Y al final de la configuración se añade:

apache  ALL=NOPASSWD: /usr/sbin/chpasswd
apache  ALL=NOPASSWD: /usr/bin/quota
apache  ALL=NOPASSWD: /usr/sbin/edquota
apache  ALL=NOPASSWD: /usr/share/groupoffice/action.php
apache  ALL=NOPASSWD: /usr/share/groupoffice/modules/email/account.php
apache  ALL=NOPASSWD: /usr/sbin/useradd
apache  ALL=NOPASSWD: /usr/sbin/userdel

Se debe conceder acceso al intérprete de mandatos al usuario apache, utilizado por Apache:

usermod -s /bin/bash apache

4) Configurar políticas y contextos de SELinux, cuando está habilitado. El directorio /etc/groupoffice/ varios archivos de configuración, los cuales se requiere se les asigne contexto para que se le considere como contenido HTTP a fin de que SELinux permita escribir sobre /etc/groupoffice/config.php al momento de crear la configuración y acceder hacia otras configuraciones. Ejecute el siguiente mandato:

chcon -R -t httpd_sys_content_t /etc/groupoffice/

También es necesario cambiar recursivamente el contexto los directorios /usr/share/groupoffice y /var/lib/groupoffice/ a fin de que SELinux considere a este y sus sub-directorios, como contenido HTTP a fin de permitir del ejecución de PHP en el primero y crear carpetas y almacenar contenidos en el caso segundo. Ejecute los siguientes mandatos:

chcon -R -t httpd_sys_content_t /var/lib/groupoffice
chcon -R -t httpd_sys_content_t /usr/share/groupoffice

Siendo que GroupOffice requiere tener acceso a varias partes del sistema a fin de poder hacer uso del mandato sudo y otros componentes, se debe crear una nueva política en SELinux. Primeramente se crea un nuevo directorio denominado /usr/share/selinux/packages/groupoffice/:

mkdir /usr/share/selinux/packages/groupoffice/

Cambiarse al directorio /usr/share/selinux/packages/groupoffice/:

cd /usr/share/selinux/packages/groupoffice/

Crear el archivo groupoffice.te:

vim groupoffice.te

Añadir el siguiente contenido al nuevo archivo groupoffice.te:


module groupoffice 1.0;

require {
        type man_t;
        type saslauthd_t;
        type etc_mail_t;
        type httpd_t;
        type restorecon_t;
        type src_t;
        class capability sys_resource;
        class file { read write };
        class dir { read search };
        class netlink_audit_socket create;
}

#============= httpd_t ==============
allow httpd_t man_t:dir read;
allow httpd_t self:capability sys_resource;
allow httpd_t self:netlink_audit_socket create;
allow httpd_t src_t:dir { read search };

#============= restorecon_t ==============
allow restorecon_t etc_mail_t:file { read write };

#============= saslauthd_t ==============
allow saslauthd_t etc_mail_t:file { read write };

Generar el módulo de SELinux utilizando el siguiente mandato:

checkmodule -M -m -o groupoffice.mod groupoffice.te

Generar la política de SELinux utilizando el siguiente mandato:

semodule_package -o groupoffice.pp -m groupoffice.mod

Cargar la política junto con las políticas existentes en el núcleo en ejecución utilizando lo siguiente:

semodule -i /usr/share/selinux/packages/groupoffice/groupoffice.pp

Al terminar, se pude eliminar con toda seguridad los archivos groupoffice.te y groupoffice.mod.

rm -f groupoffice.te groupoffice.mod
cd

Utilizando lo anterior se puede instalar y trabajar con GroupOffice sin necesidad alguna de desactivar o cambiar a modo permisivo a SELinux y sin activar las políticas httpd_disable_trans ni mysqld_disable_trans, las cuales desactivan la protección de SELinux para los servicios httpd y mysqld correspondientemente.

Si el servidor MySQL se encuentras en un servidor distinto, es necesario establecer las políticas httpd_can_network_connect y httpd_can_network_connect_db para que SELinux permita al servidor httpd establecer conexiones hacia servidores remotos. Ejecute los siguientes mandatos:

setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db 1

5) Recargar el servicio httpd:

service httpd reload

6) Acceder hacia http://www.dominio.algo/groupoffice/install/install.php y configurar únicamente los datos de la base de datos y el usuario y la clave de acceso requeridos, así como los datos regionales como país, moneda y uso horario. En el resto de las pantallas se puede dar clic en los botones de Continue (continuar) sin necesidad de realizar cambio alguno, puesto que todo lo necesario ya viene previamente configurado en el paquete RPM, excepto los privilegios de acceso a las herramientas.

Ajustes posteriores a la instalación.

Corrección del módulo Archivos.

De ser necesario, hay que corregir instalación del módulo de Archivos. Este se instala incorrectamente en algunos casos, por lo que es necesario crear manualmente las tablas en la base de datos.

cd /usr/share/groupoffice/modules/filesystem/sql/
mysql -p groupoffice < filesystem.install.sql

Modificaciones a la configuración en el archivo /etc/groupoffice/config.php.

Si se edita el parámetro register_modules_write del archivo /etc/groupoffice/config.php y se colocan los valores email, calendar, addressbook, todos, projects, cms, filesystem, summary y notes del siguiente modo, los usuarios que se registren a partir de ese momento, tendrán activadas las funciones de correo electrónico, calendario, libreta de direcciones, tareas, CMS, archivos, proyectos, resumen y notas.

$config['register_modules_write']='email,calendar,addressbook,summary,notes';

Si se activa la función allow_registration del siguiente modo, los usuarios podrán registrarse desde la pantalla de autenticación (requiere que el administrador active las cuentas):

$config['allow_registration']=true;

Lo anterior también se puede configurar volviendo a acceder a la interfaz de instalación en http://www.dominio.algo/groupoffice/install/install.php, misma que permitirá en todo momento realizar cambios.

Si se ha concluido con los ajustes de la configuración, por seguridad, es importante desinstalar el paquete groupoffice-install, mismo que será innecesario en lo sucesivo, salvo que, como se menciona arriba, se requiera modificar desde interfaz HTTP la configuración del acceso hacia la base de datos o cambiar cualquiera de los datos suministrados durante el procedimiento de instalación.

rpm -e groupoffice-install

Ingresando como administrador.

Se puede ingresar a GroupOffice como administrador desde la pantalla de ingreso en http://www.dominio.algo/groupoffice/ como el usuario admin y la clave de acceso admin, todo en minúsculas.


Pantalla de ingreso de GroupOffice.

Hecho lo anterior, se podrá personalizar y dar de alta en el Groupware a los usuarios, los cuales deben existir previamente en el servidor como cuentas regulares de usuario de correo electrónico. Para dar de alta los usuarios se hace clic en el icono de menú de administración y luego en el icono Usuarios.


Lista de usuarios. Desde esta interfaz se dan de alta los usuarios.

Las herramientas administrativas permiten hacer respaldos dela base de datos y verificar integridad de los datos.

También permite instalar otros complementos y desactivar los complementos que se considere innecesarios.

Ingresando como usuario regular.

Cuando se ingrese como usuario regular y se de de alta la cuenta de correo electrónico de éste, es importante rellenar la casilla No validar el certificado, salvo que se cuente con un certificado validado por Verisign y si éste está configurado en el servidor IMAP. Puede darse de alta más de una cuenta IMAP.


Ventana de configuración de cuenta de correo electrónico del usuario.

La ventana para crear un nuevo mensaje tiene suficientes funciones para cubrir las necesidades de la mayoría de los usuarios. Permite enviar corre electrónico en formato de texto simple y en formato HTML, guardar mensajes como borrador, establecer prioridad y solicitar confirmación de lectura al destinatario.


Ventana de configuración de cuenta de correo electrónico del usuario.

Para compartir la libreta de direcciones o el calendario con otros usuarios, hacer clic en los iconos de cualquiera de éstos, luego hacer clic en el icono Administrar, seleccionar y hacer doble clic sobre la entrada de la libreta de direcciones o calendario del usuario, según sea el caso.


Definiendo permisos de lectura en la libreta de direcciones.

Luego se hace clic en la pestaña de Leer permisos o Escribir permisos. Desde esta interfaz se pueden añadir usuarios a quienes se les comparte la libreta de direcciones o calendario con permisos de solo lectura o permisos de lectura y escritura.


Añadiendo usuarios con permiso de lectura en el módulo Libreta de Direcciones.

Para compartir la carpeta del módulo Archivos con otros usuarios, se debe hacer clic en el icono Archivos, luego hacer clic en el icono Administrar y en esta interfaz habilitar la casilla de Activar comparticiónen el módulo Archivos.


Activando compartición en carpeta del módulo Archivos.

Para definir los usuarios a quienes se comparte la carpeta, se hace clic en las pestañas de Permisos leer o Permisos escribir de la misma forma en que se hace para los módulos de Calendario o Libreta de direcciones.


Añadiendo usuarios con permiso de lectura y escritura en el módulo Archivos.