Getting vikunja right from the start saves hours of debugging later. In this comprehensive guide, we'll cover everything from initial setup to production-ready configuration, including tasks and kanban considerations.
Prerequisites
- A reverse proxy configured (Nginx or Traefik)
- Basic familiarity with the Linux command line
- A VPS running Ubuntu 22.04 or later (2GB+ RAM recommended)
- A registered domain name (for public-facing services)
- Docker and Docker Compose installed
Docker Compose Setup
Regular maintenance is essential for keeping your vikunja installation running smoothly. Schedule periodic reviews of log files, disk usage, and security updates to prevent issues before they occur.
# docker-compose.yml
version: '3.8'
services:
vikunja:
image: vikunja/vikunja:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- vikunja_data:/data
- vikunja_config:/config
environment:
- TZ=UTC
- PUID=1000
- PGID=1000
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=vikunja
- POSTGRES_USER=vikunja
- POSTGRES_PASSWORD=changeme
volumes:
vikunja_data:
vikunja_config:
db_data:
These commands should be run as root or with sudo privileges. If you're using a non-root user, prefix each command with sudo.
Initial Configuration
After applying these changes, monitor the server's resource usage for at least 24 hours to ensure stability. Tools like htop, iostat, and vmstat can provide real-time insights into system performance.
# Reverse proxy configuration
server {
listen 443 ssl http2;
server_name vikunja.example.com;
ssl_certificate /etc/letsencrypt/live/vikunja.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vikunja.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
client_max_body_size 0;
}
}
Note that file paths may vary depending on your Linux distribution. The examples here are for Debian/Ubuntu; adjust paths accordingly for RHEL/CentOS-based systems.
Reverse Proxy Integration
For production deployments, consider implementing high availability by running multiple instances behind a load balancer. This approach provides both redundancy and improved performance under heavy load.
# docker-compose.yml
version: '3.8'
services:
vikunja:
image: vikunja/vikunja:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- vikunja_data:/data
- vikunja_config:/config
environment:
- TZ=UTC
- PUID=1000
- PGID=1000
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=vikunja
- POSTGRES_USER=vikunja
- POSTGRES_PASSWORD=changeme
volumes:
vikunja_data:
vikunja_config:
db_data:
Make sure to restart the service after applying these changes. Some settings require a full restart rather than a reload to take effect.
Common Issues and Solutions
- Slow performance: Check for disk I/O bottlenecks with
iostat -x 1and network issues withmtr. Review application logs for slow queries or requests. - Service won't start: Check the logs with
journalctl -xe -u vikunja. Common causes include port conflicts, missing configuration files, or insufficient permissions.
Summary
You've successfully configured vikunja on your VPS. Remember to monitor performance, keep your software updated, and maintain regular backups. If you run into issues, consult the official documentation or open a support ticket for assistance.