Productivity, Task Management, Self-Hosted

Vikunja: The Self-Hosted To-Do App That Actually Works

Tried Todoist for a while. Hit the free tier limits. Found Vikunja - open source, self-hosted, with mobile apps. Here's how I've been using it for 8 months.

March 11, 2026 ยท 11 min read

Started looking for a self-hosted to-do app after getting tired of Todoist's free tier limitations. Wanted something with mobile apps, calendar integration, and recurring tasks. Found Vikunja.

Quick summary: Been using it for 8 months. Does everything I need.

Mobile apps work great. Calendar sync is reliable. Recurring tasks actually recur. Self-hosted means my data stays on my server.

So what is it?

Vikunja is an open-source to-do app. Think of it as a self-hosted Todoist alternative. You can run it on your own server or use their hosted service. Either way, it's got the features you'd expect:

Created by the same people behind Vikunja (a project management tool). But this is their personal task manager - simpler, focused on individual use.


Getting it running with Docker

Docker is the way to go. Here's what worked for me:

# Create directories for data persistence
mkdir -p ~/vikunja/data
mkdir -p ~/vikunja/files

# Run with Docker
docker run -d \
  --name vikunja \
  -p 3456:3456 \
  -v ~/vikunja/data:/app/vikunja/files \
  -v ~/vikunja/files:/app/vikunja/files \
  -e VIKUNJA_API_URL=https://api.vikunja.io \
  vikunja/vikunja:latest

# Access at http://your-server:3456

First run asks you to create an account. That's it - you're in.

๐Ÿ’ก Port note

Using port 3456 (instead of default 80) avoids conflicts with other web apps on your server. You can use whatever port works for you.

For production, use docker-compose with proper backups:

version: '3'

services:
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: changeme
      POSTGRES_DB: vikunja
    volumes:
      - ./db:/var/lib/postgresql/data
    restart: unless-stopped

  vikunja:
    image: vikunja/vikunja:latest
    ports:
      - 3456:3456
    environment:
      VIKUNJA_API_URL: https://api.vikunja.io
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: changeme
      VIKUNJA_DATABASE_TYPE: postgres
    volumes:
      - ./files:/app/vikunja/files
    depends_on:
      - db
    restart: unless-stopped

First time setup

When you first open Vikunja, you'll see a blank screen. Here's what to do:

1

Create your first list

I started with "Personal", "Work", "Shopping"

2

Add some tasks

Hit the big "+" button. Type your task name. Press Enter.

3

Set details

Add due dates, priorities, reminders if you need them.

Features that matter (and ones that don't)

โœ“ Actually use daily

  • Tasks with subtasks - Break down bigger items
  • Recurring tasks - "Every Monday", "Every 2 weeks"
  • Reminders - Push notifications on mobile
  • Calendar view - See everything in calendar format
  • Quick add - Hit "q" anywhere to add task fast
  • Labels - Color-code by category
  • Attachments - Files and images

โœ— Rarely touch

  • Teams - Never used the collaboration features
  • Projects - Lists work fine for me
  • Favorites - Don't need to star tasks
  • Filters - Search is good enough
  • Kanban board - Not into that view

Mobile apps are actually good

This was my biggest concern - would the mobile apps be as good as Todoist's? Surprisingly, yes.

What works on mobile:

Download from App Store or Google Play. Enter your server URL. Login. That's it.

โš ๏ธ One limitation

Apple Watch app is basic. It shows tasks and lets you check them off, but that's about it. No quick add from the watch. Not a huge deal for me, but worth mentioning.


Calendar integration (actually works)

This was a make-or-break feature for me. I need to see tasks alongside my calendar events.

Vikunja supports CalDAV. Here's how to set it up:

# In Vikunja, go to Settings โ†’ CalDAV

# Copy your CalDAV URL (something like):
https://your-domain.com/dav/calendars/user_id/calendar/

# Add to calendar app:

# macOS Calendar:
โ†’ Preferences โ†’ Accounts โ†’ Add CalDAV Account
โ†’ Enter URL and credentials

# Google Calendar (via bridge):
โ†’ Use a CalDAV bridge like Radicale
โ†’ Or sync Vikunja to Google Calendar using tasks.org

# Thunderbird:
โ†’ Events and Tasks โ†’ Calendar โ†’ Add โ†’ Calendar
โ†’ Enter CalDAV URL

Once connected, your tasks show up in your calendar. Due dates appear as all-day events. You can even see recurring tasks as repeating events.

โœ“ What actually works

I've been using it with macOS Calendar for 8 months. Sync is reliable. Changes in Vikunja show up in calendar within seconds. Changes in calendar update Vikunja tasks.


Recurring tasks that actually recur

This is the feature that made me leave Todoist. In Todoist, recurring tasks required premium. In Vikunja, it's free.

Examples of recurring tasks I use:

Daily:
โ”œโ”€โ”€ Take vitamins
โ”œโ”€โ”€ Check email first thing
โ””โ”€โ”€ Review daily priorities

Weekly:
โ”œโ”€โ”€ Water plants
โ”œโ”€โ”€ Backup server
โ””โ”€โ”€ Review weekly goals

Monthly:
โ”œโ”€โ”€ Pay bills
โ”œโ”€โ”€ Review subscriptions
โ””โ”€โ”€ Check server storage

Custom intervals:
โ”œโ”€โ”€ Every 2 weeks - water plants (don't overwater)
โ”œโ”€โ”€ Every 3 months - check smoke detectors
โ””โ”€โ”€ First Monday of month - team planning

Setup is straightforward. When creating a task, click "Repeat" and choose your schedule:

When you complete a recurring task, Vikunja automatically creates the next occurrence. Just like Todoist. Just free.


How I actually organize my tasks

Lists by category:

Personal
โ”œโ”€โ”€ Health
โ”‚   โ”œโ”€โ”€ Exercise
โ”‚   โ”œโ”€โ”€ Meal prep
โ”‚   โ””โ”€โ”€ Doctor appointments
โ”œโ”€โ”€ Finances
โ”‚   โ”œโ”€โ”€ Pay bills
โ”‚   โ”œโ”€โ”€ Review subscriptions
โ”‚   โ””โ”€โ”€ Budget tracking
โ””โ”€โ”€ Learning
    โ”œโ”€โ”€ Reading
    โ”œโ”€โ”€ Online courses
    โ””โ”€โ”€ Practice projects

Work
โ”œโ”€โ”€ Inbox (capture everything here first)
โ”œโ”€โ”€ Today (tasks for today)
โ”œโ”€โ”€ This Week (committed tasks)
โ”œโ”€โ”€ Backlog (stuff to do eventually)
โ””โ”€โ”€ Completed (auto-archive)

Shopping
โ”œโ”€โ”€ Groceries
โ”œโ”€โ”€ Household items
โ””โ”€โ”€ Wish list (stuff to buy someday)

Priority system that works

I keep it simple:

High - Urgent, needs to happen today or tomorrow
Medium - Sometime this week
Low - Would be nice to do, no deadline
None - Backlog, might not do

Labels for categorization:

coding health finance errands learning admin

Problems I hit (and how I fixed them)

Issue: Mobile apps wouldn't connect

Kept getting "Connection refused" errors.

Fix: Make sure you're using HTTPS with a valid certificate. Self-signed certs work, but you need to accept them in mobile browser first. Or use reverse proxy (nginx) with Let's Encrypt.

Issue: Database grew to 5GB quickly

Attachments were taking up space.

Fix: Disabled attachments in most tasks. Now only use them when absolutely necessary. Set file size limits in settings.

Issue: Tasks not syncing to calendar

Changes in Vikunja wouldn't show up in macOS Calendar.

Fix: Restart calendar app. Sometimes CalDAV connection gets stuck. Refreshing usually fixes it. Also check that CalDAV URL includes username/password in URL if using Basic auth.

Issue: Docker container stopped after update

Pulled new image, container wouldn't start.

Fix: Database schema changed. Needed to migrate. Had to restore from backup and then update properly. Lesson learned: Always backup before updating.


Vikunja vs Todoist: honest comparison

Where Vikunja wins

  • Cost: Free self-hosted vs $36/year for Todoist Premium
  • Privacy: Your data vs their servers
  • Control: You can modify the code if needed
  • Features: Recurring tasks are free, not premium

Where Todoist wins

  • Polish: More refined UI and UX
  • Integrations: Connects with everything (Slack, Google Calendar, Zapier)
  • AI: Natural language task creation
  • Support: Mature product, large community

โš ๏ธ Not for everyone

Vikunja requires more setup than Todoist. You need to host it yourself or pay for their hosted service. If you don't want to manage a server, Todoist is worth the money for the convenience.


So should you use it?

Vikunja is a good fit if:

Stick with Todoist if:


After 8 months of use

Vikunja has been working well for me. The mobile apps are reliable. Calendar sync is solid. Recurring tasks save me time.

Is it as polished as Todoist? No. The UI is functional but not beautiful. Some features feel a bit rough around the edges. But for core functionality - add tasks, mark them done, get reminded - it works great.

The biggest win is not paying for premium features. Recurring tasks. Unlimited projects. Mobile apps. All free. Just need to provide the server.

If you're tired of Todoist's free tier limits and want something self-hosted that actually works, Vikunja is worth trying.

๐Ÿ“š Recommended Reading