| 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.
|
|
# 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.
|
|
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.2 cli cronjob'
```
# 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. |