Why self-host a task manager
SaaS task tools monetise your productivity data, impose team member limits or double the price between plans. Self-hosting Vikunja inverts the model: all your tasks, attachments and history live in a SQLite volume on your VPS, exportable at any time via the REST API and syncable with your preferred calendar client via CalDAV. No cloud dependency, no premium plan needed to unlock Gantt or sprints.
What you get with a self-hosted Vikunja
- List, Kanban and Gantt views — switch between views per project without migrating any data.
- Task dependencies on the Gantt — draw relationships between tasks with dependency arrows and start/end dates.
- Recurring tasks and reminders — set daily, weekly or monthly recurrences with email notifications.
- CalDAV/WebDAV sync — connect Thunderbird, DAVx⁵ or Apple Reminders to your instance's
/dav/endpoint. - File attachments and inline images — attach documents, screenshots and files directly to tasks.
- REST API with Swagger spec — automate task creation from CI pipelines or webhooks.
- ~80 MB Docker image, under 256 MB RAM, SQLite by default — lightest self-hosted project manager in its class.
Requirements
A ServOrbit VPS with Ubuntu 24.04 and at least 512 MB RAM. Vikunja idles under 256 MB with SQLite, so it co-locates comfortably with other containers on any existing 1 GB instance. Docker and Docker Compose are provisioned automatically by AWX at deploy time. A domain name pointing to your VPS is required — Vikunja uses the public URL for email notification links and OAuth callbacks.
Deploy Vikunja on your VPS
One-click deploy from the ServOrbit marketplace
Open your ServOrbit control panel, go to Marketplace → Collaboration & Productivity → Vikunja, enter your domain (e.g. tasks.your-domain.com) and click Deploy. AWX installs Docker, generates an app secret, configures nginx with Let's Encrypt TLS and starts the Vikunja container in under 2 minutes.
Create the admin account
Navigate to https://tasks.your-domain.com. The first-run page prompts you to create an admin account with your email and a password. After login, set the instance name and choose whether registration is open or invite-only (Settings → General).
Create your first projects and tasks
Click the + button in the sidebar to create a project. Add tasks via the list view or switch to Kanban by clicking the board icon. Use labels, priorities and due dates to organise work. Invite teammates from Settings → Users.
Connect CalDAV (optional)
Vikunja exposes a CalDAV endpoint at https://tasks.your-domain.com/dav/. Point Thunderbird, DAVx⁵ or Apple Reminders to this URL with your Vikunja credentials to sync tasks to your calendar natively — no plugin required.
Logging in for the first time
Open the URL and click “Register” to create your account: there is no default login. Create it straight away — registration is open to anyone who knows the address.
Use case: sprint tracker for dev teams
Create one project per functional area (frontend, backend, ops). Add stories to the sprint via the Kanban view (Backlog → In Progress → Done). Switch to the Gantt view to visualise task dependencies and critical dates. Configure the REST API so your CI pipeline automatically opens a task on each new bug report and closes it on successful deploy — zero manual steps.
Backup and data portability
Vikunja stores all data in a SQLite database inside the vikunja-files volume. To back up: docker exec vikunja cp /app/vikunja/vikunja.db /tmp/backup.db && docker cp vikunja:/tmp/backup.db ./vikunja-backup.db. For attachments, back up the entire vikunja-files volume via docker run --rm -v vikunja-files:/data -v $(pwd):/backup alpine tar czf /backup/vikunja-files.tar.gz /data. The REST API also exposes a full export endpoint for all lists in JSON.