Managing Task Assignment in Agentic Workflows · FrankBoard

How to Migrate from Kanboard to FrankBoard

Migrating from Kanboard to FrankBoard preserves all existing task data because both platforms share the same underlying database schema. The process involves creating a backup, deploying FrankBoard alongside or in place of your existing instance, and redirecting your database connection—no complex data transformation is required.

How to Migrate from Kanboard to FrankBoard

What Makes This Migration Straightforward

FrankBoard is built directly on Kanboard's foundation, which means the database layer remains identical. Your projects, tasks, swimlanes, columns, users, and activity history all transfer without conversion scripts or manual field mapping. This architectural continuity eliminates the typical migration risks: data corruption, truncated histories, or broken relationships between records.

The primary change is the frontend layer. FrankBoard replaces Kanboard's dated interface with a modern, responsive UI while keeping the same REST API endpoints and plugin hooks where possible. For teams already comfortable with Kanboard's logic, this means zero retraining on workflow concepts—only a smoother visual experience.

Pre-Migration: Inventory Your Current Setup

Before touching any files, document your existing environment. Check your current Kanboard version, note which plugins are active, and verify your database type and size. PostgreSQL and MySQL are both supported, though PostgreSQL is recommended for new FrankBoard deployments due to better concurrency handling under the heavier frontend.

List any custom configurations in your config.php file: LDAP integration, SMTP settings, reverse proxy headers, or custom upload directories. These values transfer directly since FrankBoard reads the same configuration keys.

If you rely on Kanboard plugins, consult FrankBoard and Kanboard Plugin Compatibility to identify which extensions work unchanged, which need updates, and which have native FrankBoard equivalents.

Step 1: Create a Complete Database Backup

This is non-negotiable. Use your database's native dump tool:

PostgreSQL:

pg_dump -U kanboard_user -h localhost -Fc kanboard_db > kanboard_backup.dump

MySQL/MariaDB:

mysqldump -u kanboard_user -p kanboard_db > kanboard_backup.sql

Store this backup outside your server. Test that it restores correctly to a temporary database before proceeding. A verified backup is your only safety net if the migration encounters environment-specific issues.

Step 2: Preserve File Attachments and Data Directory

Kanboard stores uploaded files in a data directory, typically at /var/www/kanboard/data or wherever your Docker volume mounts. This directory contains task attachments, avatars, and plugin assets. Copy the entire directory:

rsync -avz /path/to/kanboard/data/ /backup/frankboard-data/

Verify the copy includes hidden files and maintains permissions. FrankBoard expects the same directory structure for file handling.

Step 3: Deploy FrankBoard Using Docker

The cleanest migration path deploys FrankBoard as a fresh container pointing to your existing database. This preserves your original Kanboard installation as a fallback until you confirm everything works.

Create a docker-compose.yml based on FrankBoard's recommended stack:

version: '3.8'

services:
  frankboard:
    image: frankboard/frankboard:latest
    ports:
      - "8080:80"
    environment:
      - DATABASE_URL=postgres://kanboard_user:password@db:5432/kanboard_db
      - FRANKBOARD_PLUGINS_DIR=/data/plugins
    volumes:
      - ./data:/data
    depends_on:
      - db

  db:
    image: postgres:15-alpine
    environment:
      - POSTGRES_USER=kanboard_user
      - POSTGRES_PASSWORD=your_password
      - POSTGRES_DB=kanboard_db
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

For detailed environment variables and security hardening, see Deploy FrankBoard with Docker and PostgreSQL.

If you're currently running Kanboard via Docker Compose, stop the Kanboard container but leave your database container running. Update the DATABASE_URL in FrankBoard's environment to point to the existing database host and credentials.

Step 4: Connect FrankBoard to Your Existing Database

Start only the FrankBoard container initially, keeping your database accessible. The application will detect the existing Kanboard schema on first connection and initialize its frontend metadata tables without altering core data.

Watch the container logs for connection errors:

docker-compose logs -f frankboard

Successful connection logs show schema recognition and cache warming. If you see authentication failures, verify your database user permissions include CONNECT, SELECT, INSERT, UPDATE, and DELETE on all existing tables.

Step 5: Verify Data Integrity

Log into FrankBoard with your existing Kanboard credentials. Systematically check:

Create a test task and verify it appears in the database alongside legacy records. This confirms write permissions are correct and the schema remains compatible.

Step 6: Switch Traffic and Decommission Kanboard

Once verification passes, update your reverse proxy or DNS to point your canonical URL to FrankBoard's port. Common patterns:

Maintain your Kanboard container stopped but present for 48-72 hours. This provides instant rollback if edge cases emerge under real team usage.

After the confidence period, remove the Kanboard container and reclaim its volume space. Retain your initial database dump indefinitely as an archival snapshot.

Handling Plugin and Customization Gaps

Not every Kanboard plugin has a FrankBoard equivalent. For critical workflow extensions, evaluate these paths:

  1. Native replacement: FrankBoard bundles several popular features (automatic actions, custom filters) that previously required plugins
  2. Community ports: Check if the plugin maintainer or FrankBoard community has released an updated version
  3. API integration: FrankBoard's API compatibility allows external scripts to replicate some plugin behaviors
  4. Feature request: The project maintains a public roadmap; missing capabilities may already be planned

Teams heavily dependent on niche plugins should run parallel instances longer or contribute to porting efforts. The core project management functionality, however, is fully preserved.

Migration Timing and Team Communication

Schedule the actual cutover during low-activity periods. Friday evenings or sprint boundaries work well for most teams. Announce the migration 48 hours ahead with:

Post-migration, reserve 30 minutes for a team walkthrough. Even though workflows are identical, the visual reorganization of menus and the responsive board view benefit from quick orientation.

Troubleshooting Common Issues

Blank boards after login: Usually indicates the frontend cache hasn't warmed. Hard-refresh (Ctrl+Shift+R) or restart the container.

Missing avatars: The data directory copy likely omitted hidden files or wrong permissions. Verify .htaccess files and directory ownership match the container's www-data user.

Plugin errors in logs: Incompatible extensions attempting to load. Remove from plugins/ directory and restart.

Slow initial load: FrankBoard's UI is heavier than Kanboard's vanilla interface. Ensure your VPS meets minimum specs (2 CPU cores, 4GB RAM recommended for teams under 20 users). For performance expectations, review FrankBoard vs. Kanboard: UI Performance and UX Benchmarks.

Why Teams Choose This Path

The migration to FrankBoard represents a broader trend among small technical teams reclaiming control over their tooling. SaaS Fatigue: Why Small Teams Are Switching from Trello and Notion to Self-Hosted Kanban Boards in 2026 examines the motivations—recurring costs, data sovereignty, and feature bloat—that make self-hosted solutions attractive.

For teams already invested in Kanboard's reliability, FrankBoard offers modernization without abandonment. The migration preserves institutional knowledge embedded in years of task histories while delivering an interface that matches contemporary expectations.

Those evaluating whether self-hosting aligns with their constraints should consult Self-Hosted vs. Cloud Kanban Boards: A Privacy-Focused Comparison or its cost-focused companion, Self-Hosted vs. Cloud Kanban Boards: Privacy and Cost Comparison.

Key Takeaways

Original resource: Visit the source site