How to Deploy Kanboard on a VPS: Step-by-Step Guide
Managing tasks through third-party services works well enough — until the team starts worrying about data privacy, subscription costs, or depending on someone else's infrastructure. At some point a reasonable question comes up: what if we hosted our own tool? Kanboard is one of those applications where the question actually makes sense.
It's a lightweight, PHP-based task manager built around the Kanban methodology. It has no heavy dependencies, no complex infrastructure requirements, and covers most of what a small team needs for project planning. Deploying Kanboard on a VPS takes about thirty minutes — even without deep sysadmin experience. This guide walks through the entire process, from the first SSH connection to a fully working task board.
What Is Kanboard and Why Deploy It on a VPS
Kanboard is a free, open-source project management tool built around the Kanban methodology. The application is written in PHP, stores data in SQLite by default (or PostgreSQL and MySQL if preferred), and requires no Node.js, Docker, or dedicated application server. The entire application lives in a single directory, which makes it unusually straightforward for a PHP project.
Kanban as a methodology originated at Toyota in the 1950s — initially for managing manufacturing workflows. The idea is simple: tasks are represented as cards moving through columns. For example, "To Do" → "In Progress" → "Done." The team sees the full picture at a glance, spots bottlenecks early, and works with a clear sense of priority. Kanboard brings that logic to a minimalist web interface.
A VPS (Virtual Private Server) is a virtualized dedicated server that behaves like a standalone machine: you get root access, fixed resources, and full control over the environment. That's exactly what matters when deploying Kanboard on a VPS — the application runs on your own infrastructure, which means the data stays where you put it. In short, the Kanboard + VPS combination solves three things at once: data privacy, no subscription fees, and independence from external platforms.
What You'll Need
Before starting, it's worth making sure everything is in place. To deploy Kanboard on a VPS you'll need:
- A VPS running Ubuntu 22.04 LTS — at minimum 1 vCPU, 1 GB RAM, 10 GB disk space.
- Root access via SSH, or a user with sudo privileges.
- A domain name — optional, but recommended if you plan to enable HTTPS.
- Basic familiarity with the command line.
Kanboard supports PHP 7.4 and above, though PHP 8.1 or 8.2 is recommended — both receive active security patches and perform noticeably faster. Either Nginx or Apache will work as a web server; this guide uses Nginx throughout.
In practice, a 1 GB RAM server handles Kanboard comfortably even with a few dozen concurrent users — the application is remarkably efficient with system resources.
Step-by-Step Kanboard Installation on a VPS
Step 1. Connect to the Server and Update the System
Connect to your VPS over SSH. The first thing to do is refresh the package list and bring all existing packages up to date:
sudo apt update && sudo apt upgrade -y
The update will take a few minutes. Once it completes, the system is ready for the installation.
Step 2. Install Nginx
Nginx will handle incoming HTTP requests and pass them to the PHP processor:
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
Check that the server started successfully:
sudo systemctl status nginx
The output should include active (running). Opening the server's IP address in a browser should show the Nginx welcome page — a clear sign the web server is working.
Step 3. Install PHP and Required Extensions
Kanboard needs PHP along with several extensions. Install PHP 8.2 and everything the application depends on:
sudo apt install php8.2-fpm php8.2-cli php8.2-gd php8.2-mbstring php8.2-xml php8.2-sqlite3 php8.2-curl php8.2-zip php8.2-pdo -y
Once installed, start PHP-FPM:
sudo systemctl enable php8.2-fpm
sudo systemctl start php8.2-fpm
It's important to confirm PHP-FPM is running before configuring Nginx — otherwise the web server won't be able to process PHP requests:
sudo systemctl status php8.2-fpm
Step 4. Download and Extract Kanboard
Switch to the web applications directory and download the latest release archive from GitHub. You can always check the current version tag on the repository's releases page — the v1.2.x tag changes with each update:
cd /var/www/
sudo wget https://github.com/kanboard/kanboard/archive/refs/tags/v1.2.39.tar.gz
sudo tar -xzf v1.2.39.tar.gz
sudo mv kanboard-1.2.39 kanboard
sudo rm v1.2.39.tar.gz
After extraction, the application will be located at /var/www/kanboard.
Step 5. Set File Permissions
The web server runs as the www-data user. That user needs ownership of the Kanboard directory:
sudo chown -R www-data:www-data /var/www/kanboard
sudo chmod -R 755 /var/www/kanboard
sudo chmod -R 777 /var/www/kanboard/data
The data directory requires write access — this is where Kanboard stores the SQLite database, user-uploaded files, and internal cache. Without correct permissions the application won't start.
Step 6. Configure the Nginx Virtual Host
Create a configuration file for the site:
sudo nano /etc/nginx/sites-available/kanboard
Paste the configuration below, replacing your-domain.com with your domain name or server IP address:
server {
listen 80;
server_name your-domain.com;
root /var/www/kanboard;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
Enable the configuration and reload Nginx:
sudo ln -s /etc/nginx/sites-available/kanboard /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
The nginx -t command validates the configuration syntax. If the output includes syntax is ok, everything is correct and the server can be reloaded safely.
Step 7. Enable HTTPS with Let's Encrypt
Running Kanboard without HTTPS is not recommended — especially when the server is accessible from the public internet. Let's Encrypt provides free certificates with automatic renewal. Install Certbot and let it configure everything:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
Certbot will update the Nginx configuration automatically, add an HTTP-to-HTTPS redirect, and set up certificate auto-renewal. All connections to Kanboard will be encrypted from this point on.
Step 8. First Login
Open a browser and navigate to your domain or the server's IP address. Kanboard will show the login page. The default credentials are username admin and password admin.
Change the password immediately after the first login. Default credentials are widely known and represent a direct security risk — automated bots scan open ports and try common credential pairs within minutes of a server going public.
That covers the base deployment. Kanboard on VPS is ready to use.
Kanboard Pros and Cons
To make the assessment concrete, the key characteristics are laid out below. This should help clarify which scenarios Kanboard fits well and where its capabilities fall short.
| Aspect | Advantages | Limitations |
|---|---|---|
| Cost | Completely free — you only pay for the VPS | Requires time for initial setup and ongoing maintenance |
| Privacy | Data stays exclusively on your own server | Backups are your responsibility |
| Performance | Very lightweight: 10–30 MB RAM under normal load | SQLite is not designed for hundreds of concurrent users |
| Interface | Clean, minimalist, fast | No native mobile app; responsive design is basic |
| Features | Tasks, subtasks, labels, due dates, webhooks, REST API | No Gantt chart, no built-in time tracker |
| Integrations | Slack, GitHub, GitLab, email, REST API | Plugin ecosystem is much smaller than Jira or Linear |
| Updates | Open source with regular GitHub releases | Upgrades are manual — there's no built-in auto-update |
Limitations and Risks of Running Kanboard on a VPS
Worth noting: most of Kanboard's limitations come from the choice of storage engine rather than the application itself. SQLite works well for small teams — up to 20–30 users under moderate load. As the number of participants grows or concurrent access becomes more intense, SQLite starts showing strain: table locks, slower responses, and the potential for corrupted writes. Switching to PostgreSQL is the right move at that point — Kanboard supports it out of the box.
From a security standpoint, self-hosting means self-responsibility. Outdated PHP extensions, unpatched system packages, and weak passwords are all realistic attack vectors. Applying security updates regularly and keeping Kanboard itself current are not optional steps — they should be part of a routine maintenance schedule. In practice this takes little time, but it needs to be planned for.
Another gap worth knowing about is the absence of built-in backup tooling. Kanboard doesn't create backups on its own. The database file at /var/www/kanboard/data/db.sqlite needs to be copied manually or via an automated cron job to an external location or object storage.
At first glance, deploying Kanboard on a VPS looks more involved than signing up for a hosted service. That's true. But the difference in effort amounts to a few hours upfront and a few minutes of maintenance per month — in exchange for full ownership of the data and infrastructure.
Practical Use Cases for Kanboard
A Development Team With No Tooling Budget
A four-person startup doesn't want to pay for Jira or Notion. Kanboard on a VPS covers the essentials: project boards, tasks with assignees, priority labels, and GitHub integration via webhooks. The team sees who's working on what without burying each other in chat messages. The monthly cost is the price of a minimal VPS — which matters a lot when budgets are tight.
A Freelance Agency Managing Multiple Clients
Kanboard supports multiple projects with separate participant lists. Each client gets their own project, and access is scoped to it alone. Tasks belonging to one client remain invisible to another. This is particularly relevant when tasks involve commercially sensitive information — launch plans, financial figures, draft contracts. On a self-hosted instance, none of that data touches external servers.
An IT Department Running an Internal Request Queue
A sysadmin tracks a backlog of internal requests: hardware replacements, account provisioning, infrastructure incidents. Kanboard accepts tasks manually or via email — incoming messages can automatically become cards on the board. Notably, the entire history of requests and related communications stays within the company's own infrastructure rather than on a third-party platform.
A Personal Productivity System
A developer or content manager uses Kanboard as a personal tracker — books to read, project tasks, article deadlines. Self-hosting means no third party has access to personal plans or notes. There's also no risk of the service shutting down or changing its terms, which is a real consideration with many free-tier tools.
Learning and Side Projects
Kanboard makes a solid training ground for DevOps fundamentals. Deploying a PHP application, configuring Nginx, managing SSL certificates, automating backups with cron — one project covers the full server maintenance cycle without putting any production system at risk. It's worth noting that Kanboard has a clear advantage over Docker-heavy alternatives for this purpose: the environment is straightforward, transparent, and easy to replicate.
Common Mistakes When Deploying Kanboard
Wrong Permissions on the Data Directory
This is the most frequent reason Kanboard fails to start. If the data directory isn't writable by www-data, the application returns a blank page or a database error. Check the permissions with:
ls -la /var/www/kanboard/data/
The owner should be www-data and permissions should be 777, or 775 if the group is configured correctly.
Running Without HTTPS
HTTP transmits passwords and task contents in plain text. Let's Encrypt offers free certificates with automatic renewal, so skipping HTTPS is hard to justify even for internal-only deployments. If Kanboard is reachable from the internet without encryption, credentials are at direct risk of interception.
Leaving the Default Password in Place
Servers with default credentials get scanned and compromised within minutes — this isn't an exaggeration, it's a documented pattern of automated dictionary attacks. Changing the admin password right after first login is the highest-priority step after installation.
No Backup Strategy
The SQLite database is a single file. Filesystem corruption, an accidental rm, or a disk failure will wipe all tasks and history permanently. The simplest solution is a daily cron job that copies the data directory to external storage or an object store.
PHP-FPM Version Mismatch in the Nginx Config
If another PHP version is already installed on the server — say, 7.4 — Nginx may be passing requests to the wrong FPM socket. Check which socket is listed in the fastcgi_pass directive, then verify it matches the active PHP version:
ls /var/run/php/
The output will show available sockets with their version numbers — whichever matches your installed PHP is the one to reference in the Nginx configuration.
Choosing the Right Server for Kanboard
Kanboard is light on resources, which is one of its strengths. For personal use or a team of up to ten people, a VPS with 1 GB RAM and 10 GB SSD is sufficient. Switching to PostgreSQL and growing the user base warrants bumping RAM to 2 GB. Disk usage depends heavily on attachments — if users regularly upload files to tasks, 10 GB fills up faster than expected.
Choosing a provider with SSD or NVMe storage matters for SQLite performance. On spinning disks, the database slows down noticeably under parallel reads. Serverspace VPS instances run on NVMe, which covers Kanboard's needs with room to spare at any reasonable load level. Even the entry-level configuration delivers a responsive interface and fast page rendering.
If Kanboard is intended as a primary team tracker rather than a personal tool, it's worth starting with a 2–4 GB RAM instance and choosing a plan that allows easy vertical scaling as the team grows. The flexibility to upgrade resources without migrating the server is particularly convenient when the workload is hard to predict upfront.
Conclusion
Kanboard is a capable task management tool that deploys on a VPS without complex dependencies. PHP, Nginx, SQLite — that's all it takes to get a fully functional task manager under your own control. Deploying Kanboard on a VPS fits within an hour, even without prior sysadmin experience — the step-by-step commands in this guide cover the entire process from a fresh server to a working HTTPS-enabled instance.
Once set up, the team gets a private task board with no limits on projects or participants, no monthly payments to a third-party service, and no dependency on external platforms. For small teams, freelancers, and anyone who takes data privacy seriously, running Kanboard on a VPS is a practical and cost-effective choice.
Frequently Asked Questions (FAQ)
Is Kanboard free to use?
Yes. Kanboard is a free and open-source project management application released under the MIT License. You can use it for personal or commercial projects without paying licensing fees. The only ongoing costs are the VPS and any optional domain name or backup services you choose.
Can Kanboard run on a small VPS?
Yes. Kanboard is designed to be lightweight. A VPS with 1 vCPU, 1 GB of RAM, and around 10 GB of SSD storage is enough for personal use or small teams. As your organization grows, resources can be increased without changing the application itself.
Does Kanboard support PostgreSQL and MySQL?
Yes. Although Kanboard uses SQLite by default, it also supports PostgreSQL and MySQL. For larger teams or environments with higher concurrency, PostgreSQL is generally the preferred choice because it scales better than SQLite.
Is Kanboard suitable for business use?
Absolutely. Kanboard includes task boards, multiple projects, user management, due dates, labels, webhooks, email notifications, and a REST API. These features make it a practical solution for software teams, IT departments, agencies, and businesses that want to keep project data on their own infrastructure.
How do I keep Kanboard secure on a VPS?
Use HTTPS with a valid SSL certificate, change the default administrator password immediately after installation, keep Ubuntu, PHP, and Kanboard updated, restrict SSH access, configure a firewall, and create regular backups of the database and uploaded files. These basic practices significantly improve the security of a self-hosted deployment.
Can Kanboard integrate with other tools?
Yes. Kanboard supports integrations through webhooks, email, and its REST API. It can connect with services such as GitHub, GitLab, Slack, and many automation platforms, making it easy to include Kanboard in existing development and business workflows.