Vikunja Hosting on Hostim.dev
Vikunja is an open-source, self-hosted to-do and project management app. It has lists, Kanban boards, Gantt and table views, labels, reminders, sharing with teams and links, and a CalDAV server for your calendar app.
API and web frontend ship as one binary in one container, so there is only one thing to run.
Self-host Vikunja with Docker Compose (minimal)
Vikunja runs on SQLite, PostgreSQL or MySQL. This example uses PostgreSQL and keeps task attachments in /app/vikunja/files.
services:
vikunja:
image: vikunja/vikunja:latest
restart: unless-stopped
environment:
VIKUNJA_SERVICE_PUBLICURL: https://tasks.example.com/
VIKUNJA_SERVICE_SECRET: change-me-to-a-long-random-string
VIKUNJA_DATABASE_TYPE: postgres
VIKUNJA_DATABASE_HOST: db
VIKUNJA_DATABASE_DATABASE: vikunja
VIKUNJA_DATABASE_USER: vikunja
VIKUNJA_DATABASE_PASSWORD: change-me
volumes:
- ./files:/app/vikunja/files
ports:
- "3456:3456"
depends_on:
- db
db:
image: postgres:17
restart: unless-stopped
environment:
POSTGRES_DB: vikunja
POSTGRES_USER: vikunja
POSTGRES_PASSWORD: change-me
volumes:
- ./db:/var/lib/postgresql/data
The container runs as user 1000, so create ./files first and make it writable by that user (mkdir -p files && sudo chown 1000:1000 files). If Vikunja starts before PostgreSQL is ready, it exits and Docker restarts it. Run docker compose up -d and open http://<your-server>:3456. For HTTPS you also need a reverse proxy and a certificate. More stacks are in our Docker Compose library.
Deploy Vikunja on Hostim.dev (One-Click)
The hosted route: no VPS, no proxy, no certificates. The template runs the official image with a managed PostgreSQL database, a persistent volume, a domain and HTTPS.
Guest project runs for 1 hour. Log in to save and extend to 5 days.
Why Host Vikunja on Hostim.dev?
- One-click Docker deployment
- Managed PostgreSQL database
- Persistent volume for attachments
- Automatic HTTPS and domain
- Real-time logs and metrics
What's included
| Resource | Details |
|---|---|
| App | vikunja/vikunja:latest Docker image |
| Volume | /app/vikunja/files (attachments, backgrounds, avatars) |
| Database | Managed PostgreSQL |
| Domain | Free *.hostim.dev subdomain |
| SSL | Let’s Encrypt (auto-enabled) |
| Port | 3456 |
The template sets these variables for you:
| Variable | Value |
|---|---|
VIKUNJA_SERVICE_PUBLICURL | https://<your app domain>/ |
VIKUNJA_SERVICE_SECRET | Random 32-character string, generated on deploy |
VIKUNJA_SERVICE_IPEXTRACTIONMETHOD | xff, so login rate limits see the visitor's IP, not the proxy's |
VIKUNJA_DATABASE_TYPE | postgres |
VIKUNJA_DATABASE_HOST | <host>:<port> of the managed PostgreSQL |
VIKUNJA_DATABASE_DATABASE, _USER, _PASSWORD | Database name and credentials |
How to Deploy
- Go to your Hostim.dev dashboard.
- Click Create Project → Use a Template.
- Select Vikunja.
- Choose a resource plan.
- Deploy.
- Open the app URL, click Create account and register your first user.
Registration is open by default, so anyone who finds the URL can sign up. Once your own accounts exist, set VIKUNJA_SERVICE_ENABLEREGISTRATION=false on the app and redeploy. Users you already have keep working.
FAQ
Where does Vikunja store its data?
Tasks, projects, users and settings are in the managed PostgreSQL database.
Task attachments, uploaded backgrounds and avatars are files in
/app/vikunja/files, on a persistent volume. We restarted the app
three times in a row with tasks and an attachment in place, and nothing was lost.
What is VIKUNJA_SERVICE_SECRET?
Vikunja signs login sessions and share links with it. The template generates
a random value on deploy. If you change it, everyone has to log in again and
old share links stop working. API tokens and CalDAV tokens keep working.
Without a fixed secret, Vikunja makes a new one at every start. Older guides call it
VIKUNJA_SERVICE_JWTSECRET; that name still works but is deprecated.
How do I get email reminders?
Vikunja sends reminders and password resets only when a mailer is
configured. Set VIKUNJA_MAILER_ENABLED=true and the
VIKUNJA_MAILER_HOST, VIKUNJA_MAILER_PORT,
VIKUNJA_MAILER_USERNAME, VIKUNJA_MAILER_PASSWORD and
VIKUNJA_MAILER_FROMEMAIL variables for your SMTP provider, then
redeploy. See the
config options.
Three things change or matter once the mailer is on. New accounts must confirm
their email address before they can log in. Each user turns on reminder emails
in Settings → General, or you set
VIKUNJA_DEFAULTSETTINGS_EMAIL_REMINDERS_ENABLED=true for new users.
Set VIKUNJA_MAILER_FROMEMAIL to an address your SMTP provider
accepts; the default mail@vikunja is usually rejected.
Can I sync tasks with my calendar app?
Yes. CalDAV is on by default. In Vikunja, open Settings → CalDAV to get the URL and create a token for your client.
Can I run more than one replica?
Keep the app at 1 replica. By default Vikunja keeps its cache, login-failure
counters and rate limits in memory, so each replica would have its own. Running
several needs Redis: VIKUNJA_REDIS_ENABLED=true,
VIKUNJA_REDIS_HOST, VIKUNJA_KEYVALUE_TYPE=redis, and
VIKUNJA_RATELIMIT_STORE=keyvalue for shared rate limits.
Which timezone does Vikunja use?
GMT by default, and new users inherit it. Reminder and overdue emails use each
user's timezone, so set VIKUNJA_SERVICE_TIMEZONE (for example
Europe/Berlin) or have users set theirs in their settings.
How do I use my own domain?
Add the domain to the app in the Hostim.dev dashboard and point a DNS record
at it. HTTPS is set up for it automatically. Then change
VIKUNJA_SERVICE_PUBLICURL to the new address and redeploy.
How do I back up Vikunja?
Back up the PostgreSQL database and the /app/vikunja/files
volume. Together they hold the whole state.
How do I update Vikunja?
The :latest tag follows the newest release. Vikunja runs its
database migrations on start, so back up the database and the volume before
an update. To stay on one version, change the image tag (for example
vikunja/vikunja:2.7.1) and redeploy. Docker:
docker compose pull && docker compose up -d. Hostim.dev:
redeploy the app.
Alternatives
- Planka — Kanban boards in the style of Trello
- Wekan — open-source Kanban board
- Focalboard — project boards, also part of Mattermost
Source + Docs
Looking for something else? Browse all templates →