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: //
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.