Vikunja Task Management¶
Service: Vikunja
URL: https://tasks.brennan.page
Version: Latest (v1.0.0-rc3)
Status: ✅ OPERATIONAL
Purpose: Task management and project organization
Overview¶
Vikunja is an open-source task management application that provides comprehensive project and task organization capabilities. It offers features similar to popular commercial solutions while maintaining data privacy and self-hosting capabilities.
Architecture¶
Container Configuration¶
services:
vikunja:
image: vikunja/vikunja:latest
container_name: vikunja
restart: unless-stopped
environment:
- VIKUNJA_DATABASE_HOST=postgresql
- VIKUNJA_DATABASE_TYPE=postgres
- VIKUNJA_DATABASE_USER=vikunja
- VIKUNJA_DATABASE_PASSWORD=vikunja_password
- VIKUNJA_DATABASE_DATABASE=vikunja
- VIKUNJA_SERVICE_URL=https://tasks.brennan.page
- VIKUNJA_PUBLIC_URL=https://tasks.brennan.page
- VIKUNJA_CORS_ENABLE=false
- VIKUNJA_ENOBLEREGISTRATION=true
- VIKUNJA_FRONTEND_URL=https://tasks.brennan.page
- VIKUNJA_MAILER_ENABLED=false
volumes:
- vikunja_files:/app/vikunja/files
networks:
- internal_db
- caddy
mem_limit: 256m
mem_reservation: 128m
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Network Configuration¶
- Internal Network:
internal_dbfor database access - Web Network:
caddyfor reverse proxy access - Port: 3456 (internal only)
- Access: HTTPS via Caddy reverse proxy
Features¶
Core Functionality¶
- Task Management: Create, edit, and organize tasks
- Project Organization: Group tasks into projects
- Labels and Tags: Categorize and filter tasks
- User Registration: Open registration enabled
- Due Dates: Set deadlines and reminders
- Priority Levels: Task prioritization
- Comments: Task discussion and collaboration
Advanced Features¶
- List Views: Multiple task list configurations
- Kanban Boards: Visual task management
- Calendar Integration: Due date visualization
- Search: Full-text search capability
- API: RESTful API for integrations
- File Attachments: File upload support
- Teams: Multi-user collaboration
Configuration¶
Environment Variables¶
- Database Configuration: PostgreSQL connection settings
- URL Configuration: Public and service URLs
- Security: CORS disabled for simplicity
- Registration: Open registration enabled
- Email: Mailer disabled (can be enabled later)
Database Integration¶
-- Vikunja database schema (auto-created)
-- Tables created by Vikunja migrations:
-- - users
-- - projects
-- - tasks
-- - labels
-- - task_assignees
-- - task_comments
-- - task_attachments
-- - project_members
-- - namespaces
Security Implementation¶
Access Control¶
- HTTPS Only: All traffic encrypted via Caddy
- User Registration: Open but can be restricted
- Database Security: Dedicated database user with limited privileges
- Network Isolation: Database access via internal network only
Data Protection¶
- Local Storage: All data stored on local PostgreSQL
- No Third Parties: No external service dependencies
- Backup Ready: Database included in backup strategy
- Privacy: Complete data control
Performance Optimization¶
Resource Management¶
- Memory Limit: 256MB maximum
- Memory Reservation: 128MB guaranteed
- File Storage: Persistent volume for attachments
- Logging: Rotated logs with size limits
Database Optimization¶
- Connection Pooling: Managed by Vikunja application
- Indexing: Database indexes created by migrations
- Query Optimization: PostgreSQL query optimization
- Caching: Application-level caching
User Experience¶
Interface Features¶
- Modern UI: Clean, responsive web interface
- Dark Mode: Available (theme preference)
- Mobile Support: Responsive design for mobile devices
- Keyboard Shortcuts: Productivity shortcuts available
- Drag & Drop: Task reorganization
Workflow Integration¶
- Quick Add: Fast task creation
- Bulk Operations: Multiple task management
- Templates: Task and project templates
- Import/Export: Data portability features
Maintenance¶
Regular Tasks¶
- Log Monitoring: Check for errors and performance issues
- Database Maintenance: Monitor database size and performance
- Backup Verification: Ensure data backup procedures work
- User Management: Monitor user registration and activity
Health Checks¶
# Check container status
docker ps | grep vikunja
# Check service logs
docker logs vikunja --tail 20
# Test database connectivity
docker exec vikunja wget -qO- http://localhost:3456
# Check resource usage
docker stats vikunja
# Test web accessibility
curl -I https://tasks.brennan.page
Troubleshooting¶
Common Issues¶
Service Unavailable¶
Symptoms: 503 error or connection refused Causes: Container not running, network issues Solutions:
# Restart service
cd /opt/homelab/services/vikunja && docker compose restart
# Check logs
docker logs vikunja --tail 50
# Verify network connectivity
docker exec caddy ping -c 2 vikunja
Database Connection Issues¶
Symptoms: Migration failures, database errors Causes: Incorrect credentials, network issues Solutions:
# Check database connectivity
docker exec postgresql psql -U vikunja -d vikunja -c "SELECT 1;"
# Verify environment variables
docker exec vikunja env | grep VIKUNJA_DATABASE
# Check database permissions
docker exec postgresql psql -U homelab -d homelab -c "\du"
Performance Issues¶
Symptoms: Slow response times, high resource usage Causes: Memory limits, database performance Solutions:
# Check resource usage
docker stats vikunja
# Monitor database queries
docker exec postgresql psql -U homelab -d vikunja -c "SELECT * FROM pg_stat_activity;"
# Check file storage usage
docker exec vikunja du -sh /app/vikunja/files
Integration¶
API Access¶
Vikunja provides a RESTful API for integrations: - Base URL: https://tasks.brennan.page/api/v1 - Authentication: Token-based authentication - Documentation: Available at /api/v1/docs - Rate Limiting: Configurable (default limits apply)
Webhooks¶
- Task Events: Task creation, updates, deletion
- Project Events: Project creation, updates
- User Events: User registration, profile updates
Third-Party Integrations¶
- Calendar Apps: CalDAV support available
- Mobile Apps: Third-party mobile applications
- Browser Extensions: Browser-based integrations
- Automation Tools: Zapier, n8n integrations
Backup and Recovery¶
Data Backup¶
# Database backup
docker exec postgresql pg_dump -U homelab vikunja > vikunja_backup.sql
# File backup
docker run --rm -v vikunja_vikunja_files:/data -v $(pwd):/backup alpine tar czf /backup/vikunja_files_backup.tar.gz -C /data .
# Configuration backup
cp /opt/homelab/services/vikunja/docker-compose.yml ./vikunja_config_backup.yml
Recovery Procedures¶
# Restore database
docker exec -i postgresql psql -U homelab vikunja < vikunja_backup.sql
# Restore files
docker run --rm -v vikunja_vikunja_files:/data -v $(pwd):/backup alpine tar xzf /backup/vikunja_files_backup.tar.gz -C /data
# Restart service
cd /opt/homelab/services/vikunja && docker compose restart
Monitoring¶
Metrics¶
- User Activity: Registration, login, task creation
- Performance: Response times, error rates
- Resource Usage: Memory, CPU, storage
- Database: Query performance, connection count
Logging¶
- Application Logs: Vikunja application events
- Access Logs: Caddy proxy logs
- Database Logs: PostgreSQL query logs
- System Logs: Container and system events
Future Enhancements¶
Planned Improvements¶
- Email Integration: Enable email notifications
- LDAP Authentication: Enterprise authentication
- File Storage: External storage integration
- API Enhancements: Extended API capabilities
- Mobile App: Native mobile application
Scaling Considerations¶
- Load Balancing: Multiple instance deployment
- Database Scaling: Read replicas, connection pooling
- Caching Layer: Redis integration
- CDN Integration: Static asset optimization
Service Owner: brennan.page Homelab
Last Updated: 2026-01-16
Next Review: After Phase 3 completion
Dependencies: PostgreSQL, Caddy, internal_db network