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:
- โ Tasks with due dates, reminders, repeat schedules
- โ Lists, projects, and tags for organization
- โ Priority levels and labels
- โ Mobile apps (iOS and Android)
- โ Calendar integration (CalDAV)
- โ File attachments
- โ Team sharing and collaboration
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:
Create your first list
I started with "Personal", "Work", "Shopping"
Add some tasks
Hit the big "+" button. Type your task name. Press Enter.
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:
- Push notifications - Reminders actually show up
- Quick add widget - Add tasks from home screen
- Offline mode - Works without internet, syncs when back
- Calendar view - See tasks on calendar
- Siri shortcuts - "Hey Siri, add task to Vikunja"
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:
- โข Choose from presets (Daily, Weekly, Monthly)
- โข Or set custom intervals (every X days, every Y weeks)
- โข Set end date or repeat forever
- โข Adjust when the next occurrence is created
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:
Labels for categorization:
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:
- โ You're okay with Docker or basic server admin
- โ You want recurring tasks without paying for premium
- โ You care about data privacy (self-hosted)
- โ You need mobile apps that actually work
- โ You want calendar integration via CalDAV
Stick with Todoist if:
- โ You don't want to manage a server
- โ You need lots of integrations (Slack, Google Calendar directly)
- โ You love the natural language input ("Task tomorrow at 3pm")
- โ You want something that just works without any setup
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.