====Kanboard on CentOS 8==== Kanboard is an excellent opensource kanban system that also integrated with Active Directory. This setup will be based on a LAMP stack running in CentOS 8 (or Rocky OS 8 or RHEL8) ====Initial Setup==== Follow steps to setup LAMP stack at outlined in [[tech_documents:misc:lamp_stack_centos8|Install CentOS 8 LAMP stack]] ===Kanboard Specific Prerequisites=== ==Install additional php modules== sudo dnf install php php-mbstring php-pdo php-gd php-json php-cli php-mysql php-ldap php-mysqlnd php-xml php-zip ==Create Kanboard SQL database== sudo mysql -u root -p CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; (this is the DB user for the kanboard DB) CREATE DATABASE kanboard; GRANT ALL PRIVILEGES ON kanboard . * TO 'newuser'@'localhost'; FLUSH PRIVILEGES; ====Install Kanboard==== cd /var/www/html/kanboard.your_domain sudo wget https://github.com/kanboard/kanboard/archive/refs/tags/v1.2.20.zip sudo unzip v1.2.20.zip sudo mv public_html public_html.delete sudo mv kanboard-lastest public_html sudo chown -R apache:apache /var/www/html/kanboard.your_domain/public_html sudo chmod -R 764 /var/www/html/kanboard.your_domain/public_html/plugins sudo setsebool -P httpd_can_network_connect=1 sudo chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard.your_domain/public_html/data sudo chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard.your_domain/public_html/plugins sudo rm kanboard-latest.zip ==Perform Initual Configuration== sudo mv /var/www/html/kanboard.your_domain/public_html/config.default.php /var/www/html/kanboard/config.php sudo vim /var/www/html/kanboard.your_domain/public_html/config.php Set the SQL parameters // We choose to use MySQL instead of Sqlite define('DB_DRIVER', 'mysql'); // MySQL parameters define('DB_USERNAME', 'REPLACE_ME'); define('DB_PASSWORD', 'REPLACE_ME'); define('DB_HOSTNAME', 'REPLACE_ME'); define('DB_NAME', 'kanboard'); // And disable users from creating their own accounts define('LDAP_USER_CREATION', false); // Optionally enable installation of plugins if needed, leave disabled otherwise define('PLUGIN_INSTALLER', true); Restart MariaDB, Apache and PHP-FPM sudo systemctl restart mariadb sudo systemctl restart httpd sudo systemctl restart php-fpm * In a web browser, go to the FQDN of the kanboard virtual server (e.g. kanban.yourdomain.com) and login with admin/admin to verify function. * Go to Plugins page and install any plugins you might need (like calendar, task board date, mailgun) * Go to Settings -> Application Settings; set Application URL, set Timezone + date/time format. ==Configure Crontab for Kanboard Routines== sudo crontab -u apache -e Add the following 0 8 * * * cd /var/www/html/kanboard.your_domain/public_html && ./cli cronjob >/dev/null 2>&1 ====Active Directory Integration==== * Create AD user on Windows server that will be used for proxy * create an AD user that will act as a Kanboard admin + create 2 security groups, 1 for KanboardAdmins and 1 for KanboardManagers. ==Set AD Variables== sudo vim /var/www/html/kanboard.your_domain/public_html/config.php Configure Settings (remember to replace variables with your own and remember to add 'aroundyour@@names@@passwords') define('LDAP_SSL_VERIFY', false); define('LDAP_AUTH', true); define('LDAP_SERVER', 'yourserver.ad.domain or IP.ADD.R.ESS'); define('LDAP_BIND_TYPE', 'proxy'); define('LDAP_USERNAME', 'kanboardaduser@ad.domain'); define('LDAP_PASSWORD', 'my super secret password'); define('LDAP_USER_BASE_DN', 'CN=Users,DC=ad,DC=domain'); define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))'); define('LDAP_USER_ATTRIBUTE_USERNAME', 'sAMAccountName'); //And enable account creation or you'll get a failed login response define('LDAP_USER_CREATION', true); If you've enabled LDAPs on your Windows domain controllers you can authenticate via LDAPs by using the following variations: define('LDAP_SERVER', 'ldaps://myserver.example.com:636'); define('LDAP_SSL_VERIFY', false); define('LDAP_START_TLS', false); Active Directory Groups // LDAP DN for administrators // Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local define('LDAP_GROUP_ADMIN_DN', 'CN=KanboardAdmins,OU=Groups,OU=Specialized,OU=Company,DC=Domain,DC=local'); // LDAP DN for managers // Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local define('LDAP_GROUP_MANAGER_DN', 'CN=KanboardManagers,OU=Groups,OU=Specialized,OU=Company,DC=Domain,DC=local'); define('LDAP_GROUP_PROVIDER', true); // LDAP Base DN for groups define('LDAP_GROUP_BASE_DN', 'OU=Company,DC=Domain,DC=local'); // LDAP group filter // Example for ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*)) define('LDAP_GROUP_FILTER', '(&(objectClass=group)(sAMAccountName=%s*))'); ===E-Mail Notifications=== Sending E-Mail via SMTP sudo vim /var/www/html/kanboard.your_domain/public_html/config.php Configuration define('MAIL_FROM', 'no_reply_kanban@yourdomain.com'); define('MAIL_TRANSPORT', 'smtp'); define('MAIL_SMTP_HOSTNAME', 'mail.domain.com'); (or if on the same host as mailserver I had to use 127.0.0.1 or localhost for postfix to work) define('MAIL_SMTP_PORT', 25); define('MAIL_SMTP_USERNAME', 'username'); define('MAIL_SMTP_PASSWORD', 'password'); define('MAIL_SMTP_ENCRYPTION', null); // Valid values are null (not a string "null"), "ssl" or "tls" Then in Web UI go to settings -> email settings and set the default email from email address. ====Upgrading==== Always do the following after upgrading to a new version: * From the archive (stable version) -> Decompress the new archive to /var/www/html/somefolder * Copy the data folder into the newly uncompressed directory * Copy your custom config.php * If you have installed some plugins, use the latest version * Remove/rename your old Kanboard directory * Rename the new dir to the name of the old removed dir Reset the permissions sudo find /var/www/html\kanboard.your_domain/public_html -type f -exec chmod 640 {} \; sudo find /var/www/html\kanboard.your_domain/public_html -type d -exec chmod 755 {} \; sudo restorecon -R /var/www/html\kanboard.your_domain/public_html sudo chcon -R -t httpd_sys_content_t /var/www/html/kanboard.your_domain/public_html sudo chown -R apache:apache /var/www/html/kanboard.your_domain/public_html sudo chown -R apache:apache /var/www/html/kanboard.your_domain/public_html/data sudo chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard.your_domain/public_html/data sudo chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard.your_domain/public_html/plugins ==E-Mail== Install Cyrus-SASL (though this might not be needed) sudo dnf install cyrus-sasl Edit config.php and setup similar to: // Mail transport available: "smtp", "sendmail", "mail" (PHP mail function), "postmark", "mailgun", "sendgrid" define('MAIL_TRANSPORT', 'smtp'); // SMTP configuration to use when the "smtp" transport is chosen define('MAIL_SMTP_HOSTNAME', 'mail.domain.com'); define('MAIL_SMTP_PORT', 587); define('MAIL_SMTP_USERNAME', 'no-reply.kanban@domain.com'); define('MAIL_SMTP_PASSWORD', 'someGoodPassword'); define('MAIL_SMTP_ENCRYPTION', 'tls'); // Valid values are "null", "ssl" or "tls" The setup your notification options per project in the Web UI.