Ka
Developer Tools Azure

Kanboard on Ubuntu 24.04 on Azure User Guide

| Product: Kanboard on Ubuntu 24.04 LTS on Azure

Overview

Kanboard is an open source self-hosted kanban board for visual project management. It focuses on simplicity: a clean board of columns and cards that limits work in progress and makes the status of every task obvious at a glance. This image runs Kanboard 1.2.52 behind nginx, with PHP-FPM 8.3 and OPcache enabled.

Kanboard stores its data in SQLite, so the appliance is fully self-contained: there is no separate database server to install, secure or back up. The SQLite database, uploaded files, cache and logs live under /var/www/kanboard/data on a dedicated, independently resizable Azure data disk, so you can grow your project store without touching the operating system disk.

There is no first-run setup wizard to step through. The Kanboard administrator password is generated on the first boot of every deployed VM, so the stock admin / admin password that ships with upstream Kanboard is never used. Two VMs deployed from the same image never share credentials. The initial administrator password is written to /root/kanboard-credentials.txt with mode 0600 so that only the root user can read it.

What is included:

  • Kanboard 1.2.52 at /var/www/kanboard, served by nginx on port 80
  • PHP 8.3 (php-fpm) with OPcache and every extension Kanboard requires
  • Self-contained SQLite storage on a dedicated Azure data disk at /var/www/kanboard/data
  • A per-VM administrator password generated at first boot, in a root-only file
  • The bundled Kanboard console (cli) and the JSON-RPC API at /jsonrpc.php
  • 24/7 cloudimg support

Kanboard sign-in

Prerequisites

An active Azure subscription, an SSH key pair, and a VNet + subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is a good starting point; scale up for larger teams. NSG inbound: allow 22/tcp from your management network and 80/tcp (plus 443/tcp if you enable HTTPS) from the networks your users will use.

Step 1 — Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Kanboard by cloudimg, and select Create. On Basics pick your subscription, resource group, region and size; under Administrator account choose SSH public key and paste your key; under Inbound port rules allow SSH (22) and HTTP (80). Review the dedicated data disk on the Disks tab, then Review + createCreate. First boot initialisation completes within about a minute of the VM reaching the Running state.

Step 2 — Deploy from the Azure CLI

az vm create \
  --resource-group <your-rg> \
  --name kanboard \
  --image <marketplace-image-urn> \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard

az vm open-port --resource-group <your-rg> --name kanboard --port 80 --priority 1010

Step 3 — Connect and Retrieve Initial Credentials

Connect over SSH as the administrator account you chose at deployment:

ssh azureuser@<vm-public-ip>

The administrator credentials generated on first boot are stored in a root-only file. Retrieve them with the following command, which prints the Kanboard administrator user name and password for this specific VM:

sudo cat /root/kanboard-credentials.txt

The file lists the application URL, the JSON-RPC API URL, the administrator user name (admin), and the per-VM administrator password. Keep this password somewhere safe and treat the file as sensitive.

Step 4 — Verify the Service is Running

Confirm that the web server, the PHP-FPM pool and the first-boot service are all active:

systemctl is-active nginx php8.3-fpm kanboard-firstboot

All three report active. You can confirm the installed Kanboard version with the bundled console:

cd /var/www/kanboard && sudo php cli version

This prints 1.2.52. Confirm the web application answers on the loopback interface (an unauthenticated request is redirected to the sign-in page, which is the expected behaviour):

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/

This returns 302, the redirect to /login.

Service status

Step 5 — Confirm the Data Disk

The SQLite database, uploaded files and cache are kept on a dedicated Azure data disk mounted at /var/www/kanboard/data. Confirm it is a separate filesystem:

findmnt -no SOURCE,FSTYPE /var/www/kanboard/data

This shows the data device and ext4. Because the data tier is a distinct disk, you can grow it with the Azure portal or CLI and then expand the filesystem online, without resizing the operating system disk.

Data tier

Step 6 — First Login

Open a web browser and browse to http://<vm-public-ip>/. Sign in as the user admin with the per-VM password from /root/kanboard-credentials.txt.

Kanboard project board

After signing in you reach the dashboard, which lists your projects, the tasks assigned to you, and a project activity stream.

Kanboard dashboard

We strongly recommend that you change the administrator password to one of your own choosing after first login. Open the user menu in the top right, choose My profile, then Change password.

Step 7 — Create a Project and Build a Board

From the dashboard choose New project, give the project a name, and open it. Kanboard creates a board with the default columns Backlog, Ready, Work in progress and Done. Select the blue + icon at the head of a column to add a task card, give it a title, optionally assign a colour, an owner, a due date and a description, then save. Drag cards between columns as work progresses. You can rename, add or remove columns from the project Settings, set work-in-progress limits per column, add swimlanes, and define automated actions that fire when a card moves.

Step 8 — Use the JSON-RPC API

Kanboard exposes a JSON-RPC API at /jsonrpc.php for integration and automation. User-level calls authenticate with HTTP Basic using the administrator user name and the per-VM password. The following call returns the signed-in user's profile and confirms the API is reachable. Run it on the VM:

PASS=$(sudo grep '^kanboard.admin.pass=' /root/kanboard-credentials.txt | cut -d= -f2-)
curl -s -u "admin:${PASS}" -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"getMe","id":1}' http://127.0.0.1/jsonrpc.php

The response is a JSON document whose result object contains the admin user. The full API reference is published in the Kanboard documentation; common procedures include createProject, createTask, getAllTasks and getBoard.

Version and API

Step 9 — Enable HTTPS (Recommended)

The image serves Kanboard over plain HTTP on port 80 so that it works immediately behind a load balancer or for evaluation. For production use you should terminate TLS. The simplest approach is to obtain a free certificate from Let's Encrypt once you have pointed a DNS name at the VM's public IP.

Install Certbot and its nginx plugin, then request a certificate for your domain. Because this step needs your own domain name and prompts for an email address, run the Certbot command yourself at an interactive shell rather than from a script:

  • Install the client: sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
  • Request and install the certificate: run sudo certbot --nginx -d your-domain.example.com and follow the prompts. Certbot edits the nginx server block to add the TLS listener and sets up automatic renewal.

After Certbot completes, allow 443/tcp in the VM's network security group, then browse to https://your-domain.example.com/ and sign in over the encrypted connection.

Step 10 — Backup and Maintenance

Because all state lives on the data disk, backing up Kanboard is straightforward. The recommended approach is an Azure snapshot of the data disk, which captures the SQLite database, uploaded files and configuration atomically. You can also copy the SQLite database file directly:

sudo cp /var/www/kanboard/data/db.sqlite /var/www/kanboard/data/db.sqlite.backup

The image ships fully security-patched at capture time, and unattended-upgrades remains enabled so security updates keep arriving on your VM. Apply updates on your own schedule with sudo apt-get update && sudo apt-get upgrade. To upgrade Kanboard itself, follow the upstream upgrade notes for your target version; always snapshot the data disk first.

Security baseline

Support

This image is published and supported by cloudimg. Support covers deployment, Kanboard configuration, plugin and API integration, upgrades, performance tuning, and storage administration, by email and chat. Kanboard is open source software licensed under the MIT License; the application itself is developed by the Kanboard project.

All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.