Vikunja logoTask Management

Vikunja

A self-hosted task management app with kanban, list, and calendar views as a Todoist alternative.

Review notes

Lightweight and fast, suitable for individuals or small teams. Use SQLite for simplicity or PostgreSQL for production.

Deployment guide

Run a single Docker container with frontend and API bundled in one binary.

  1. Create a data directory for Vikunja.
  2. Run the container with volume mounts for database and files.
  3. Access the web UI and create the first account.
  4. Configure mailer if email notifications are needed.
  5. Create projects, tasks, and invite collaborators.
Backup:Back up the database file (SQLite or PostgreSQL) and files directory containing attachments.

Copy and run on your server

Use each block separately: save the compose file, or copy the bash script to create it and start the container.

docker-compose.ymlyaml
services:
  vikunja:
    image: vikunja/vikunja:latest
    container_name: vikunja
    volumes:
      - ./files:/app/vikunja/files
      - ./db:/app/vikunja/db
    ports:
      - "3456:3456"
    environment:
      VIKUNJA_SERVICE_PUBLICURL: "http://SERVER_IP:3456"
    restart: unless-stopped
setup.shbash
#!/usr/bin/env bash
set -euo pipefail

sudo mkdir -p /opt/vikunja
sudo chown "$USER":"$USER" /opt/vikunja
cd /opt/vikunja

cat > docker-compose.yml <<'COMPOSE'
services:
  vikunja:
    image: vikunja/vikunja:latest
    container_name: vikunja
    volumes:
      - ./files:/app/vikunja/files
      - ./db:/app/vikunja/db
    ports:
      - "3456:3456"
    environment:
      VIKUNJA_SERVICE_PUBLICURL: "http://SERVER_IP:3456"
    restart: unless-stopped
COMPOSE

docker compose up -d
echo "Vikunja is running on http://SERVER_IP:3456"

Stack

GoVue.jsSQLite/PostgreSQL