docker.recipes

Vikunja

intermediate

Open-source task management and to-do app.

Overview

Vikunja is a powerful open-source task management and to-do application that provides teams and individuals with comprehensive project organization tools. Born from the need for a privacy-focused alternative to proprietary task managers, Vikunja offers advanced features like Kanban boards, Gantt charts, time tracking, and CalDAV integration while maintaining complete data ownership. The application supports multiple project views, collaborative workspaces, and extensive customization options that rival enterprise solutions. This deployment combines Vikunja with MariaDB to create a robust, production-ready task management system. MariaDB's enhanced performance characteristics and improved JSON handling make it ideal for Vikunja's complex data structures, including nested tasks, project hierarchies, and user permissions. The database's Aria storage engine provides better crash recovery for task data, while its advanced indexing capabilities ensure fast search and filtering across large project datasets. This stack is perfect for development teams, small businesses, and organizations seeking complete control over their project management data. Unlike cloud-based alternatives, this self-hosted solution ensures sensitive project information remains within your infrastructure while providing enterprise-grade features like LDAP authentication, webhook integrations, and comprehensive API access for custom workflows.

Key Features

  • Multiple project views including List, Kanban, Table, and interactive Gantt charts for comprehensive project visualization
  • CalDAV endpoint integration allowing synchronization with external calendar applications and mobile devices
  • Built-in data migration tools supporting imports from Todoist, Trello, Microsoft To-Do, and other popular task managers
  • MariaDB's enhanced JSON functions providing faster query performance for Vikunja's complex task metadata and custom fields
  • Advanced task relationships including subtasks, dependencies, and cross-project linking with visual dependency mapping
  • Time tracking and reporting features with detailed analytics on project progress and team productivity
  • Collaborative workspaces with granular permission controls for teams, projects, and individual task assignments
  • MariaDB's Galera Cluster compatibility enabling high-availability deployments for mission-critical project management

Common Use Cases

  • 1Software development teams managing sprints, backlogs, and release planning with Kanban and Gantt chart visualization
  • 2Marketing agencies coordinating campaign timelines, client deliverables, and creative asset production workflows
  • 3Construction and project management companies tracking milestones, dependencies, and resource allocation across multiple sites
  • 4Educational institutions managing curriculum development, research projects, and administrative task coordination
  • 5Non-profit organizations coordinating volunteer activities, fundraising campaigns, and community outreach programs
  • 6Personal productivity enthusiasts seeking advanced GTD (Getting Things Done) implementation with calendar integration
  • 7Remote teams requiring collaborative task management with detailed progress tracking and reporting capabilities

Prerequisites

  • Minimum 1GB RAM recommended for MariaDB with moderate task datasets and multiple concurrent users
  • Port 3456 available for Vikunja web interface access and API communications
  • Basic understanding of task management concepts including projects, labels, and user permission structures
  • Environment variable management knowledge for configuring database passwords and frontend URLs
  • Storage planning for task attachments, as Vikunja files volume will grow with document uploads
  • Network configuration knowledge if deploying behind reverse proxy for SSL termination and custom domains

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 vikunja:
3 image: vikunja/vikunja:latest
4 container_name: vikunja
5 restart: unless-stopped
6 environment:
7 VIKUNJA_DATABASE_TYPE: mysql
8 VIKUNJA_DATABASE_HOST: db
9 VIKUNJA_DATABASE_DATABASE: vikunja
10 VIKUNJA_DATABASE_USER: vikunja
11 VIKUNJA_DATABASE_PASSWORD: ${DB_PASSWORD}
12 VIKUNJA_SERVICE_FRONTENDURL: http://localhost:3456/
13 ports:
14 - "3456:3456"
15 volumes:
16 - vikunja_files:/app/vikunja/files
17 depends_on:
18 - db
19
20 db:
21 image: mariadb:10
22 container_name: vikunja-db
23 restart: unless-stopped
24 environment:
25 MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
26 MYSQL_DATABASE: vikunja
27 MYSQL_USER: vikunja
28 MYSQL_PASSWORD: ${DB_PASSWORD}
29 volumes:
30 - vikunja_db:/var/lib/mysql
31
32volumes:
33 vikunja_files:
34 vikunja_db:

.env Template

.env
1DB_PASSWORD=changeme

Usage Notes

  1. 1Docs: https://vikunja.io/docs/
  2. 2Access at http://localhost:3456 - register first user as admin
  3. 3MariaDB backend for better performance at scale
  4. 4Views: List, Kanban, Table, and Gantt charts
  5. 5CalDAV endpoint for calendar sync at /dav/
  6. 6Migrate from Todoist, Trello, MS To-Do via import

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

vikunja
vikunja:
  image: vikunja/vikunja:latest
  container_name: vikunja
  restart: unless-stopped
  environment:
    VIKUNJA_DATABASE_TYPE: mysql
    VIKUNJA_DATABASE_HOST: db
    VIKUNJA_DATABASE_DATABASE: vikunja
    VIKUNJA_DATABASE_USER: vikunja
    VIKUNJA_DATABASE_PASSWORD: ${DB_PASSWORD}
    VIKUNJA_SERVICE_FRONTENDURL: http://localhost:3456/
  ports:
    - "3456:3456"
  volumes:
    - vikunja_files:/app/vikunja/files
  depends_on:
    - db
db
db:
  image: mariadb:10
  container_name: vikunja-db
  restart: unless-stopped
  environment:
    MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
    MYSQL_DATABASE: vikunja
    MYSQL_USER: vikunja
    MYSQL_PASSWORD: ${DB_PASSWORD}
  volumes:
    - vikunja_db:/var/lib/mysql

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 vikunja:
5 image: vikunja/vikunja:latest
6 container_name: vikunja
7 restart: unless-stopped
8 environment:
9 VIKUNJA_DATABASE_TYPE: mysql
10 VIKUNJA_DATABASE_HOST: db
11 VIKUNJA_DATABASE_DATABASE: vikunja
12 VIKUNJA_DATABASE_USER: vikunja
13 VIKUNJA_DATABASE_PASSWORD: ${DB_PASSWORD}
14 VIKUNJA_SERVICE_FRONTENDURL: http://localhost:3456/
15 ports:
16 - "3456:3456"
17 volumes:
18 - vikunja_files:/app/vikunja/files
19 depends_on:
20 - db
21
22 db:
23 image: mariadb:10
24 container_name: vikunja-db
25 restart: unless-stopped
26 environment:
27 MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
28 MYSQL_DATABASE: vikunja
29 MYSQL_USER: vikunja
30 MYSQL_PASSWORD: ${DB_PASSWORD}
31 volumes:
32 - vikunja_db:/var/lib/mysql
33
34volumes:
35 vikunja_files:
36 vikunja_db:
37EOF
38
39# 2. Create the .env file
40cat > .env << 'EOF'
41DB_PASSWORD=changeme
42EOF
43
44# 3. Start the services
45docker compose up -d
46
47# 4. View logs
48docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/vikunja/run | bash

Troubleshooting

  • Database connection failed: Verify DB_PASSWORD environment variable matches between Vikunja and MariaDB containers
  • First user registration not creating admin privileges: Ensure clean database state and restart Vikunja container after MariaDB initialization
  • CalDAV sync failing with calendar applications: Check VIKUNJA_SERVICE_FRONTENDURL points to externally accessible address, not localhost
  • Task attachments not persisting: Confirm vikunja_files volume is properly mounted and container has write permissions
  • MariaDB container exits with initialization errors: Remove vikunja_db volume and restart to reinitialize database with correct credentials
  • Import from external services timing out: Increase MariaDB's max_allowed_packet setting for large dataset imports from Trello or Todoist

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space