Comparison12 min read

Vikunja vs Plane: which self-hosted tool replaces Jira in 2026

Atlassian has recently closed new subscriptions to Jira Software Data Center. Linear Enterprise has seen significant price increases this year. For agencies and technical teams looking to regain control of their project management tooling, Vikunja and Plane CE are two mature open-source alternatives you can host on your own VPS. This guide compares the two tools across nine criteria and provides precise installation steps to help you choose with confidence.

Why replace Jira in 2026

Atlassian has recently closed new subscriptions to Jira Software Data Center. Teams already under licence can renew, but any organisation without an existing contract must now use Jira Cloud — a SaaS model with per-seat billing that removes your infrastructure control. Linear Enterprise, another benchmark for tech teams, raised its prices earlier this year, affecting mid-sized teams using it for sprints and GitHub integration.

This context is pushing a growing number of agencies to evaluate self-hosted open-source alternatives. Two projects stand out: Vikunja, a lightweight Go single-binary task manager under the AGPL-3.0 licence, and Plane CE (Community Edition), a more fully-featured project management platform built around five Docker services, also under AGPL-3.0. The two have very different profiles: understanding their VPS requirements and functional limits is the first decision to make before migrating.

Vikunja vs Plane CE — comparison table

CriterionVikunjaPlane CE
RAM required512 MB (light production)≥ 4 GB (8 GB recommended)
LicenceAGPL-3.0AGPL-3.0
KanbanNative (Kanban, list, Gantt views)Native (Board view, customisable states)
GanttNativeVia modules and due dates
Sprints / cyclesNot natively present — simulable with listsNative cycles (start, end, progress)
REST APIComplete, OpenAPI documentedComplete, OpenAPI documented
Git integrationsOutgoing webhooks, no native GitHub/GitLab integrationNative GitHub and GitLab integration in settings
Multi-tenant / workspacesYes — projects and teams separated by namespaceYes — distinct workspaces, members and roles per workspace
Mobile applicationOfficial native iOS and Android appsPWA only (no published native app)

Vikunja — lightweight and versatile

Vikunja strengths

  • Minimal memory footprint — 512 MB of RAM is sufficient for production; an entry-level VPS can run Vikunja without resizing.
  • Go single binary — one binary bundles the API server and background task service; the Docker deployment reduces to a single application service and a database.
  • Multiple native views — Kanban, list, Gantt and summary table are available with no additional extension or plugin.
  • Complete REST API — every entity (task, list, project, user, label) is exposed via an OpenAPI-documented API, making agency workflow automation straightforward.
  • Native mobile applications — official iOS and Android apps are published in the stores, which is rare among open-source task management tools.
  • AGPL-3.0 licence — the source code is public, and community contributions are fast, particularly on security patches.

Install Vikunja on a VPS with Docker Compose

01

Create the working directory

Connect to your VPS and create a dedicated directory: mkdir -p /opt/vikunja && cd /opt/vikunja. This directory will hold the docker-compose.yml file, the config.yml configuration file, and persistent data.

02

Write the docker-compose.yml file

Create a docker-compose.yml file with two services: the database and Vikunja itself. Minimal example with PostgreSQL:

services:
  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: vikunja
      POSTGRES_PASSWORD: changeme
      POSTGRES_DB: vikunja
    volumes:
      - vikunja-db:/var/lib/postgresql/data
  vikunja:
    image: vikunja/vikunja:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:3456:3456"
    environment:
      VIKUNJA_DATABASE_TYPE: postgres
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_PASSWORD: changeme
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_PUBLICURL: https://vikunja.your-domain.com
    volumes:
      - vikunja-files:/app/vikunja/files
    depends_on:
      - db
volumes:
  vikunja-db:
  vikunja-files:
03

Start the services

Start the stack with docker compose up -d. On first start, Vikunja applies database migrations automatically. The interface is available on port 3456 within seconds — Vikunja starts very quickly thanks to its Go binary.

04

Configure the HTTPS reverse proxy

Point Nginx or Caddy to 127.0.0.1:3456. With Caddy, the configuration is:

vikunja.your-domain.com {
    reverse_proxy 127.0.0.1:3456
}

Caddy manages the Let's Encrypt certificate automatically. With Nginx, add Upgrade and Connection headers to proxy WebSockets correctly if you use real-time notifications.

05

Create the first administrator account

Open your subdomain in a browser. Vikunja displays a registration screen: the first account created automatically receives administrator rights. Then enable two-factor authentication (TOTP) from the account settings — essential if the instance is publicly exposed.

06

Verify backups

Schedule a daily backup of the PostgreSQL volume and the vikunja-files volume. A sufficient command: docker exec vikunja-db-1 pg_dump -U vikunja vikunja | gzip > /backup/vikunja-$(date +%Y%m%d).sql.gz. Test restoration on a test environment before migrating your production data.

Plane CE — enterprise features in open source

Plane CE strengths

  • Native cycles (sprints) — create cycles with start and end dates, track progress by points or issues, and archive completed cycles without losing history.
  • Modules and cross-project groupings — group issues from different projects in a thematic module, useful for agencies managing multiple clients in parallel.
  • Native Jira importer — Plane CE includes a Jira import connector in Settings > Importers, transferring issues, statuses, priorities, comments and members in a few clicks.
  • Native GitHub and GitLab integrations — link your repositories directly from workspace settings; commits and pull requests appear in the related issues.
  • Clear Docker architecture — five documented services (web, API, worker, PostgreSQL, Redis) and optional MinIO for file storage; each service scales independently.
  • Integrated wiki pages — each project has a structured documentation space, available without an external module.
  • Complete REST API — all Plane entities are accessible via a versioned API; Python and JavaScript SDKs are maintained by the community.
  • AGPL-3.0 licence — the source code is auditable, and the GitHub community counts several thousand active contributors.

Install Plane CE on a VPS

01

Check system requirements

Plane CE requires at least 4 vCPU and 8 GB of RAM for a comfortable production deployment. Below this threshold, Celery workers compete for memory with PostgreSQL and Redis, causing unexpected restarts. Verify that Docker Engine ≥ 24 and Docker Compose ≥ 2.20 are installed: docker --version && docker compose version.

02

Download the official deployment script

Plane CE provides an installation script that generates the docker-compose.yml and .env files with random secrets:

curl -fsSL https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh | bash

The script creates an /opt/plane directory and places all required files there. Review the generated .env before continuing: SECRET_KEY, DATABASE_URL and REDIS_URL variables are pre-filled with secure random values.

03

Configure the domain in the .env file

Open /opt/plane/.env and set WEB_URL=https://plane.your-domain.com. If you use MinIO for file storage, also set AWS_S3_ENDPOINT_URL, AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. Disable MinIO storage if you prefer to store files on the local volume — set USE_MINIO=0.

04

Start the five Docker services

From /opt/plane, run docker compose up -d. The five main services start: web (React interface), api (Django REST), worker (Celery), beat (Celery periodic tasks), and db (PostgreSQL). Redis is included as a sixth service for caching and message queuing. Wait approximately two to three minutes for Django migrations to complete before opening the interface.

05

Configure the HTTPS reverse proxy

Plane exposes the web service on port 3000 and the API on port 8000 internally. Your reverse proxy must route both: the React interface on / and API requests on /api/ and /auth/. With Nginx, use two location blocks in the same server block pointing to 127.0.0.1:3000 and 127.0.0.1:8000 respectively. WebSockets are used for real-time updates — forward the Upgrade and Connection headers.

06

Create the first workspace

Open your domain in a browser. Plane displays a registration screen: create an administrator account, then follow the workspace creation wizard. Import your first project from Jira or create a blank project to validate the installation. Invite members from Settings > Members > Invite Members — each member receives an email invitation link.

07

Plan backups for the five stateful services

Plane has five stateful services to back up: PostgreSQL (volume pgdata), Redis (volume redisdata), and MinIO if enabled (volume uploads). Schedule daily PostgreSQL dumps (pg_dump from the db container), and archive Docker volumes with your preferred backup tool. Systematically test restoration on a test VPS before putting the main instance into production.

Security — how quickly both projects respond

The question of security maturity in open-source tools is legitimate, and both projects offer concrete answers. Both projects have shown a quick patch turnaround, with fixes published within days of disclosure. A fix was integrated in Vikunja within ten days of public disclosure, demonstrating the fast-response capability of a well-organised open-source community. The practical lesson: keep Vikunja up to date via docker compose pull && docker compose up -d on a weekly cycle, and enable security notifications on the GitHub repository (Watch > Security alerts).

Plane CE follows a monthly release cycle with a detailed public changelog. Security issues are handled in a private channel before publication, following a documented responsible disclosure process in the repository. For both tools, the audit trail of user actions (who changed what, when) is available in application logs — exportable to meet internal compliance requirements.

To import from Jira into Plane CE: back up your Plane database before starting (docker exec plane-db-1 pg_dump -U plane plane > backup-before-import.sql). Then, in Plane, go to Settings > Importers > Jira. The importer asks for your Jira URL, a Jira Personal Access Token, and the project name to import. Issues, statuses, priorities, comments and members are transferred in a single operation. Also back up your database after the import and verify the total number of imported issues before revoking Jira access.

Decision guide — when to choose each tool

Choose Vikunja if your team manages primarily tasks and lists without a formalised sprint process, if your VPS is limited to 1 or 2 GB of RAM, if you need native mobile applications for teams on the move, or if you prefer a simple architecture to maintain (a single binary, a single database). Vikunja is also an excellent choice if you host multiple client projects on the same instance thanks to its namespace system.

Choose Plane CE if your team is coming from Jira and wants to find familiar concepts — cycles (sprints), customisable states, and a native Jira importer. Plane CE is better suited to agencies managing cross-functional workflows (multi-project modules), needing GitHub or GitLab integration directly in issues, or wanting a tool whose interface will be immediately recognisable to developers used to Linear or Jira. The 4 to 8 GB RAM requirement is the main constraint: verify your VPS before choosing.

In all cases, start with a pilot project on a separate instance before migrating production. The effort of migrating a project management tool is rarely neutral for a team — planning two weeks of cohabitation between the old and new tool allows validation of status mapping, workflow habits and CI integrations without blocking deliveries.

ServOrbit agency resources

ServOrbit offers Linux VPS with full root access, sized from 1 vCPU / 1 GB RAM (sufficient for Vikunja) to 8 vCPU / 32 GB RAM (comfortable for Plane CE with several dozen users). All VPS come with a Docker-ready image, secure SSH access, and high-bandwidth connectivity on internal traffic. For agencies managing multiple clients, our VPS offers include the ability to provision isolated instances per client from a centralised console.

To go further with your migration from Atlassian or Linear tools, consult our related guides: migrating from Jira to OpenProject or Plane, the context of Jira Data Center's closure and its implications for existing teams, and our full comparison of self-hosted project management tools including Huly.

Host Vikunja or Plane CE on a ServOrbit VPS

Our VPS are sized to accommodate both tools: from 512 MB for Vikunja to 8 GB for Plane CE. Root access, Docker image included, generous bandwidth. Your project management data stays in your infrastructure, with no member limits and no seat fees.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab