Task Management
Vikunja
A self-hosted task management app with kanban, list, and calendar views as a Todoist alternative.
Review notes
Lightweight and fast, suitable for individuals or small teams. Use SQLite for simplicity or PostgreSQL for production.
Deployment guide
Run a single Docker container with frontend and API bundled in one binary.
- Create a data directory for Vikunja.
- Run the container with volume mounts for database and files.
- Access the web UI and create the first account.
- Configure mailer if email notifications are needed.
- Create projects, tasks, and invite collaborators.
Backup:Back up the database file (SQLite or PostgreSQL) and files directory containing attachments.
Copy and run on your server
Use each block separately: save the compose file, or copy the bash script to create it and start the container.
docker-compose.ymlyaml
services:
vikunja:
image: vikunja/vikunja:latest
container_name: vikunja
volumes:
- ./files:/app/vikunja/files
- ./db:/app/vikunja/db
ports:
- "3456:3456"
environment:
VIKUNJA_SERVICE_PUBLICURL: "http://SERVER_IP:3456"
restart: unless-stoppedsetup.shbash
#!/usr/bin/env bash
set -euo pipefail
sudo mkdir -p /opt/vikunja
sudo chown "$USER":"$USER" /opt/vikunja
cd /opt/vikunja
cat > docker-compose.yml <<'COMPOSE'
services:
vikunja:
image: vikunja/vikunja:latest
container_name: vikunja
volumes:
- ./files:/app/vikunja/files
- ./db:/app/vikunja/db
ports:
- "3456:3456"
environment:
VIKUNJA_SERVICE_PUBLICURL: "http://SERVER_IP:3456"
restart: unless-stopped
COMPOSE
docker compose up -d
echo "Vikunja is running on http://SERVER_IP:3456"Stack
GoVue.jsSQLite/PostgreSQL