| Title: How to install Kanboard on OpenBSD | |
| Author: Solène | |
| Date: 07 July 2023 | |
| Tags: openbsd selfhosting nocloud | |
| Description: In this article you will learn how to install the php web | |
| application Kanboard on an OpenBSD server | |
| # Introduction | |
| Let me share an installation guide on OpenBSD for a product I like: | |
| kanboard. It's a Kanban board written in PHP, it's easy of use, light, | |
| effective, the kind of software I like. | |
| While there is a docker image for easy deployment on Linux, there is no | |
| guide to install it on OpenBSD. I did it successfuly, including httpd | |
| for the web server. | |
| Kanboard official project website | |
| # Setup | |
| We will need a fairly simple stack: | |
| * httpd for the web server (I won't explain how to do TLS here) | |
| * php 8.2 | |
| * database backed by sqlite, if you need postgresql or mysql, adapt | |
| ## Kanboard files | |
| Prepare a directory where kanboard will be extracted, it must be owned | |
| by root: | |
| ``` | |
| install -d -o root -g wheel -m 755 /var/www/htdocs/kanboard | |
| ``` | |
| Download the latest version of kanboard, prefer the .tar.gz file | |
| because it won't require an extra program. | |
| Kanboard GitHub releases | |
| Extract the archive, and move the extracted content into | |
| `/var/www/htdocs/kanboard`; the file `/var/www/htdocs/kanboard/cli` | |
| should exists if you did it correctly. | |
| Now, you need to fix the permissions for a single directory inside the | |
| project to allow the web server to write persistent data. | |
| ``` | |
| install -d -o www -g www -m 755 /var/www/htdocs/kanboard/data | |
| ``` | |
| ## PHP configuration | |
| For kanboard, we will need PHP and a few extensions. They can be | |
| installed and enabled using the following command: (for the future, 8.2 | |
| will be obsolete, adapt to the current PHP version) | |
| ``` | |
| pkg_add php-zip--%8.2 php-curl--%8.2 php-zip--%8.2 php-pdo_sqlite--%8.2 | |
| for mod in pdo_sqlite opcache gd zip curl | |
| do | |
| ln -s /etc/php-8.2.sample/${mod}.ini /etc/php-8.2/ | |
| done | |
| rcctl enable php82_fpm | |
| rcctl start php82_fpm | |
| ``` | |
| Now you have the service php82_fpm (chrooted in /var/www/) ready to be | |
| used by httpd. | |
| ## HTTPD configuration | |
| Configure the web server httpd, you can use nginx or apache if you | |
| prefer, with the following piece of configuration: | |
| ``` | |
| server "kanboard.my.domain" { | |
| listen on * port 80 | |
| location "*.php" { | |
| fastcgi socket "/run/php-fpm.sock" | |
| } | |
| # don't rewrite for assets (fonts, images) | |
| location "/assets/*" { | |
| root "/htdocs/kanboard/" | |
| pass | |
| } | |
| location match "/(.*)" { | |
| request rewrite "/index.php%1" | |
| } | |
| location "/*" { | |
| root "/htdocs/kanboard" | |
| } | |
| } | |
| ``` | |
| Now, enable httpd if not already done, and (re)start httpd: | |
| ``` | |
| rcctl enable httpd | |
| rcctl restart httpd | |
| ``` | |
| From now, Kanboard should be reachable and usable. The default | |
| credentials are admin/admin. | |
| ## Sending emails | |
| If you want to send emails, you have three choices: | |
| * use php mail() which just use the local relay | |
| * use sendmail command, which will also use the local relay | |
| * configure an smtp server with authentication, can be a remote server | |
| ### Local email | |
| If you want to use one of the first two methods, you will have to add a | |
| few files to the chroot like `/bin/sh`; you can find accurate and up to | |
| date information about the specific changes in the file | |
| `/usr/local/share/doc/pkg-readms/php-8.2`. | |
| ### Using a remote smtp server | |
| If you want to use a remote server with authentication (I made a | |
| dedicated account for kanboard on my mail server): | |
| Copy `/var/www/htdocs/kanboard/config.default.php` as | |
| `/var/www/htdocs/kanboard/config.php`, and changes the variables below | |
| accordingly: | |
| ``` | |
| define('MAIL_TRANSPORT', 'smtp'); | |
| define('MAIL_SMTP_HOSTNAME', 'my-server.local'); | |
| define('MAIL_SMTP_PORT', 587); | |
| define('MAIL_SMTP_USERNAME', 'YOUR_SMTP_USER'); | |
| define('MAIL_SMTP_PASSWORD', 'XXXXXXXXXXXXXXXXXXXx'); | |
| define('MAIL_SMTP_HELO_NAME', null); | |
| define('MAIL_SMTP_ENCRYPTION', "tls"); | |
| ``` | |
| Your kanboard should be able to send emails now. You can check by | |
| creating a new task, and click on "Send by email". | |
| NOTE: Your user also NEED to enable email notifications. | |
| ## Cronjob configuration | |
| For some tasks like reminding emails or stats computation, Kanboard | |
| requires to run a daily job by running a the CLI version. | |
| You can do it as the www user in root crontab: | |
| ``` | |
| 0 1 * * * -ns su -m www -c 'cd /var/www/htdocs/kanboard && /usr/local/bin/php-8… | |
| ``` | |
| # Conclusion | |
| Kanboard is a fine piece of software, I really like the kanban workflow | |
| to organize. I hope you'll enjoy it as well. | |
| I'd also add that installing software without docker is still a thing, | |
| this requires you to know exactly what you need to make it run, and how | |
| to configure it, but I'd consider this a security bonus point. Think | |
| that it will also have all its dependencies updated along with your | |
| system upgrades over time. |