LINUX

Cómo instalar Kanboard y autenticarse usando Ldap en Ubuntu Linux

Kanboard es un programa de software de gestión de proyectos de código abierto y gratuito que está diseñado para gestionar proyectos de manera eficiente utilizando la metodología kanban. Utilizando el método kanban se puede visualizar el flujo de trabajo, lo que limita el trabajo en curso y el trabajo de manera eficiente. Hay una descripción general clara del proyecto con un tablero donde cada columna representa un paso en un flujo de trabajo. El límite de tareas evita trabajar en demasiadas tareas al mismo tiempo y se concentra en hacer el trabajo. La metodología kanban tiene menos restricciones que otros enfoques de gestión de proyectos ágiles como scrum. Kanban es más flexible y se centra solo en lo esencial. Este artículo cubre la instalación y configuración de kanboard en ubuntu 16.

1. Sistema de actualización

Antes de instalar kanboard, actualice el sistema.

# sudo apt-get update

2. Instale MariaDB

De forma predeterminada, Kanboard usa SQLite para almacenar datos. Usaremos MariaDB para mejorar el rendimiento en una producción. Utilice el siguiente comando para instalar mariadb.

# sudo apt-get install mariadb-server mariadb-client

Verifique el estado de mariadb y habilítelo durante el inicio del sistema.

# sudo systemctl status mysql
# sudo systemctl enable mysql

Opcionalmente, puede proteger mariadb usando mysql_secure_installation

# sudo mysql_secure_installation

3. Configurar la base de datos MariaDB

A continuación, crearemos una base de datos y un usuario para kanboard.

# mysql -u root -p -e "CREATE DATABASE kanboard;"
# mysql -u root -p -e "CREATE USER 'kanboarduser'@'localhost' IDENTIFIED BY 'somepassword';"
# mysql -u root -p -e "GRANT ALL PRIVILEGES ON kanboard.* TO 'kanboarduser'@'localhost' IDENTIFIED BY 'somepassword' WITH GRANT OPTION;"
# mysql -u root -p -e "FLUSH PRIVILEGES;"

4. Instale Apache y PHP

Kanboard requiere PHP 5.3.9 o superior. Para obtener el mejor rendimiento, instalaremos PHP 7 y sus dependencias necesarias usando el siguiente comando.

# sudo apt-get install -y apache2 libapache2-mod-php7.0 php7.0-cli php7.0-mbstring php7.0-sqlite3 php7.0-opcache php7.0-json php7.0-mysql php7.0-pgsql php7.0-ldap php7.0-gd

Verifique el estado de apache y php, habilite apache para que se inicie durante el inicio del sistema.

# sudo systemctl status apache2
# sudo systemctl enable apache2
# php --version

5. Instalar Kanboard

Cambie a la raíz web y descargue el último kanboard, descomprímalo y cambie la propiedad del directorio de datos y complementos al usuario de Apache, es decir, www-data. Elimina el archivo zip.

# cd /var/www/html
# sudo wget https://kanboard.net/kanboard-latest.zip
# sudo apt-get install unzip
# sudo unzip kanboard-latest.zip
# sudo chown -R www-data:www-data kanboard/data kanboard/plugins
# sudo rm kanboard-latest.zip

Importar el esquema mysql del directorio Kanboard descargado

# mysql -u root -p kanboard < /var/www/html/kanboard/app/Schema/Sql/mysql.sql

Edite el archivo de configuración de kanboard para usar la base de datos mariadb

# cd /var/www/html/kanboard
# sudo mv config.default.php config.php

Cambie el controlador de la base de datos de sqlite a mariadb. También especifique el nombre de usuario, contraseña, base de datos y nombre de host de mariadb.

# vi config.php
// Database driver: sqlite, mysql or postgres (sqlite by default)
define('DB_DRIVER', 'mysql');
// Mysql/Postgres username
define('DB_USERNAME', 'kanboarduser');
// Mysql/Postgres password
define('DB_PASSWORD', 'somepassword');
// Mysql/Postgres hostname
define('DB_HOSTNAME', 'localhost');
// Mysql/Postgres database name
define('DB_NAME', 'kanboard');

Reinicie Apache y apunte su navegador a http: // Inicie sesión usando el nombre de usuario como ‘admin’ y la contraseña como ‘admin’. Una vez que haya iniciado sesión, cambie la contraseña de administrador haciendo clic en ‘administración de usuarios’ en el menú desplegable de administración en la esquina superior derecha de la página.

6. Configurar trabajo cron

Kanboard necesita ejecutar un trabajo en segundo plano a diario para lo siguiente:

→ Informes y análisis (calcula estadísticas diarias de cada proyecto)
→ Enviar notificaciones de tareas vencidas
→ Ejecutar acciones automáticas relacionadas con el evento «Trabajo en segundo plano diario para tareas»

Definiremos un cronjob para las tareas diarias usando crontab que será ejecutado por el usuario de Apache, es decir, www-data

# sudo crontab -u www-data -e
no crontab for www-data - using an empty one

Ejecute el cronjob diario a las 8 a. M.

0 8 * * * cd /var/www/html/kanboard && ./cli cronjob >/dev/null 2>&1

7. Autenticación OpenLDAP

Hasta ahora hemos instalado y accedido a kanboard con acceso de administrador. También puede utilizar LDAP como proveedor de cuentas local para autenticar usuarios. En la configuración de OpenLDAP, hemos creado un usuario LDAP con el nombre ‘mike’. Autentiquemos a este usuario en kanboard.

Cuando se activa la autenticación LDAP, el proceso de inicio de sesión funciona de la siguiente manera:
→ Primero intente autenticar al usuario usando la base de datos.
→ Si el usuario no se encuentra dentro de la base de datos, se realiza una autenticación LDAP.
→ Si la autenticación LDAP se realiza correctamente, de forma predeterminada, se crea un usuario local automáticamente sin contraseña y se marca como usuarios LDAP.

Edite el archivo de configuración de kanboard para agregar un usuario de autenticación LDAP. Active el modo de depuración y escriba los registros en un archivo seguido de las configuraciones LDAP. Puede cambiar el modo de depuración a falso más adelante. Para este artículo, la ubicación de los archivos de registro estará en /var/www/html/kanboard/data/debug.log

# cd /var/www/html/kanboard/
# vi config.php
define('DEBUG', true);
// Available log drivers: syslog, stderr, stdout or file
define('LOG_DRIVER', 'file');

// Log filename if the log driver is "file"
define('LOG_FILE', DATA_DIR.DIRECTORY_SEPARATOR.'debug.log');

Para la autenticación LDAP, edite lo siguiente.

// Enable LDAP authentication (false by default)
define('LDAP_AUTH', true);

// LDAP server hostname
define('LDAP_SERVER', '10.0.0.196');

// LDAP server port (389 by default)
define('LDAP_PORT', 389);

// By default, require certificate to be verified for ldaps:// style URL. Set to false to skip the verification
define('LDAP_SSL_VERIFY', false);

// Enable LDAP START_TLS
define('LDAP_START_TLS', false);

// Set to true if you want to preserve the case
define('LDAP_USERNAME_CASE_SENSITIVE', false);

// LDAP bind type: "anonymous", "user" or "proxy"
define('LDAP_BIND_TYPE', 'user');

// LDAP username to use with proxy mode
// LDAP username pattern to use with user mode
define('LDAP_USERNAME', 'uid=%s,ou=groups,dc=linoxide,dc=com');

// LDAP password to use for proxy mode
define('LDAP_PASSWORD', '');

// LDAP DN for users
// Example for ActiveDirectory: CN=Users,DC=kanboard,DC=local
// Example for OpenLDAP: ou=People,dc=example,dc=com
define('LDAP_USER_BASE_DN', 'ou=groups,dc=linoxide,dc=com');

// LDAP pattern to use when searching for a user account
// Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))'
// Example for OpenLDAP: 'uid=%s'
define('LDAP_USER_FILTER', 'uid=%s');

// LDAP attribute for username
// Example for ActiveDirectory: 'samaccountname'
// Example for OpenLDAP: 'uid'
define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid');

// LDAP attribute for user full name
// Example for ActiveDirectory: 'displayname'
// Example for OpenLDAP: 'cn'
define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn');

// LDAP attribute for user email
define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail');

// LDAP attribute to find groups in user profile
define('LDAP_USER_ATTRIBUTE_GROUPS', 'gid');

// LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto
define('LDAP_USER_ATTRIBUTE_PHOTO', '');

// LDAP attribute for user language, example: 'preferredlanguage'
// Put an empty string to disable language sync
define('LDAP_USER_ATTRIBUTE_LANGUAGE', '');

// Allow automatic LDAP user creation
define('LDAP_USER_CREATION', false);

// LDAP DN for administrators
// Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local
define('LDAP_GROUP_ADMIN_DN', 'cn=ircusers,ou=groups,dc=linoxide,dc=com');

// LDAP DN for managers
// Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local
define('LDAP_GROUP_MANAGER_DN', '');

// Enable LDAP group provider for project permissions
// The end-user will be able to browse LDAP groups from the user interface and allow access to specified projects
define('LDAP_GROUP_PROVIDER', false);

// LDAP Base DN for groups
define('LDAP_GROUP_BASE_DN', 'ou=groups,dc=linoxide,dc=com');

// LDAP group filter
// Example for ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*))
define('LDAP_GROUP_FILTER', '');

// LDAP user group filter
// If this filter is configured, it will search user groups in LDAP_GROUP_BASE_DN with this filter
// Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s))
define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))');

// LDAP attribute for the group name
define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');

Guarde el archivo e intente iniciar sesión como ‘mike’ y la contraseña como ‘mypass’ que hemos creado en el artículo de OpenLDAP. Es posible que el usuario ‘mike’ no pueda iniciar sesión porque kanboard no puede crear un usuario local predeterminado sin contraseña y marcó al usuario como usuario LDAP en la base de datos MySQL. Obtenga más información sobre los problemas en kanboard github center. Si tiene alguna pregunta sobre la sección LDAP, publíquela en el sección de problemas de github. La solución a este problema es agregar manualmente al usuario como usuario LDAP en la base de datos MySQL, ya sea mediante la ejecución de una consulta SQL o mediante la administración de usuarios en la sección superior derecha de la interfaz de administración. En la sección de administración de usuarios, haga clic en ‘Nuevo usuario’ y complete solo el nombre de usuario, marque este usuario como ‘usuario remoto’ y proporcione el rol como ‘usuario’ en la sección de seguridad. También puede ejecutar la siguiente consulta para hacer lo mismo desde el shell mysql como usuario root;

mysql> insert into users (username, is_ldap_user) VALUES ('mike',1);

Ahora el usuario remoto LDAP ‘mike’ podrá autenticarse en kanboard.

Conclusión

Kanboard proporciona una forma sencilla de gestionar proyectos y es más ligero y rápido que otro software de gestión de proyectos. Kanboard se centra en la simplicidad y la eficiencia. La curva de aprendizaje es mínima. No se necesita formación especial ni para aprender procesos complejos. Las personas no técnicas pueden usarlo fácilmente. Gracias por leer este artículo.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar