Vikunja: El gestor de tareas que realmente posees

Publicado por


vikunja
Gestor de tareas autoalojado

Vikunja: El gestor de tareas que realmente posees

Una aplicación de gestión de tareas y proyectos de código abierto, licenciada bajo AGPL-3.0, diseñada para autoalojamiento con control total sobre los datos.

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Vikunja: El gestor de tareas que realmente posees en el canal GENBYTE:

¿Qué es Vikunja: El gestor de tareas que realmente posees?

Vikunja es un gestor de tareas y proyectos de código abierto desarrollado en Go con frontend en Vue.js. Su filosofía central es que el usuario tenga propiedad total sobre sus datos, ofreciendo una alternativa autoalojada a servicios como Todoist, Asana o Trello. El proyecto está licenciado bajo AGPL-3.0-or-later, lo que garantiza que las modificaciones en despliegues de red permanezcan abiertas. Cuenta con una instancia de prueba pública en try.vikunja.io, una versión alojada gestionada en vikunja.cloud y una edición Pro con características adicionales como panel de administración, registros de auditoría y seguimiento de tiempo.

Control total de datos mediante autoalojamiento con licencia AGPL-3.0, API REST documentada y arquitectura multi-etapa optimizada para contenedores.

Características principales

Gestión de proyectos y tareas

Organización mediante proyectos, listas, tareas, subtareas, etiquetas, prioridades, fechas de vencimiento, recordatorios y repeticiones.

Vistas múltiples

Tablero Kanban, lista, tabla, calendario y diagrama de Gantt para visualizar el trabajo según la necesidad.

Colaboración en equipo

Compartir proyectos con usuarios o equipos, asignar tareas, comentarios, adjuntos y permisos granulares.

API REST y OpenAPI

API versionada (v2) con documentación Swagger/OpenAPI en /api/v2/docs para integraciones y clientes personalizados.

Autenticación flexible

Soporte para registro local, OAuth2/OIDC (Google, GitHub, Microsoft, GitLab, genérico), LDAP y autenticación de dos factores (TOTP).

Notificaciones

Notificaciones por correo electrónico, webhooks, notificaciones push del navegador y dentro de la aplicación.

Importación y migración

Herramientas para importar desde Todoist, Trello, Microsoft To Do, Vikunja JSON/CSV y otras fuentes.

Interfaz multilingüe

Traducciones gestionadas mediante Crowdin con soporte para numerosos idiomas.

Cliente de escritorio y móvil

Aplicaciones nativas para Linux, Windows, macOS (licenciadas bajo GPL-3.0) y clientes móviles para Android e iOS.

Requisitos del sistema

  • Docker Engine 20.10+ o Docker Compose v2+ para despliegue en contenedor
  • Puerto 3456 TCP accesible para la interfaz web y API
  • Volumen persistente para la base de datos SQLite (ruta por defecto /db/vikunja.db) o servidor PostgreSQL/MySQL externo
  • Mínimo 512 MB RAM y 1 vCPU para instancias pequeñas; 1 GB+ RAM recomendado para uso en equipo
  • Sistema de archivos con soporte para permisos de usuario 1000:1000 (UID/GID del contenedor)

Instalación con Docker Compose

Despliegue con Docker (imagen oficial)

La imagen oficial se publica en Docker Hub como vikunja/vikunja. El Dockerfile multi-etapa compila el frontend (Node.js 24, pnpm, Vue.js) y el backend (Go 1.27, Mage) en una imagen final scratch que expone el puerto 3456 y ejecuta el binario como usuario 1000. No se encontró un archivo docker-compose.yml en el repositorio principal; la documentación oficial en vikunja.io/docs/installing/ proporciona ejemplos completos con bases de datos externas, proxy inverso y variables de entorno.

docker run -d \
–name vikunja \
-p 3456:3456 \
-v vikunja-data:/db \
-v vikunja-config:/app/vikunja/config.yml \
vikunja/vikunja:latest

Compilación desde código fuente

El repositorio incluye un Magefile para automatizar la compilación. Requiere Go 1.27+, Node.js 24+ y pnpm. El proceso compila el frontend, incrusta los assets en el binario Go y genera ejecutables multiplataforma mediante xgo.

git clone https://github.com/go-vikunja/vikunja.git
cd vikunja
mage build:clean
mage release:xgo vikunja linux/amd64

Acceder al proyecto

Interfaz web y API

Tras iniciar el contenedor, la aplicación está disponible en http://<host>:3456. La API REST v2 se sirve bajo /api/v2 y su documentación Swagger en /api/v2/docs. El primer acceso muestra un asistente de configuración inicial para crear el usuario administrador y definir ajustes básicos.

Casos de uso

  • Gestión personal de tareas y proyectos con control total de privacidad
  • Colaboración en equipos pequeños y medianos que requieren autoalojamiento por cumplimiento normativo
  • Sustitución de SaaS de productividad (Todoist, Asana, Trello) manteniendo la soberanía de datos
  • Integración con flujos de trabajo existentes mediante API REST y webhooks
  • Entornos educativos o asociaciones que necesitan una herramienta gratuita y sin límites de usuarios

Configuración avanzada

Variables de entorno principales

El contenedor expone variables para configuración sin archivo YAML. Las más relevantes según el Dockerfile y la documentación oficial: VIKUNJA_SERVICE_ROOTPATH (ruta base si se sirve bajo subpath), VIKUNJA_DATABASE_PATH (ruta del archivo SQLite), VIKUNJA_DATABASE_TYPE (sqlite, postgres, mysql), VIKUNJA_SERVICE_JWTSECRET (clave para tokens JWT), VIKUNJA_SERVICE_PUBLICURL (URL pública para enlaces en correos), VIKUNJA_CORS_ENABLED y VIKUNJA_CORS_ORIGINS para CORS.

docker run -d \
-e VIKUNJA_DATABASE_TYPE=sqlite \
-e VIKUNJA_DATABASE_PATH=/db/vikunja.db \
-e VIKUNJA_SERVICE_PUBLICURL=https://vikunja.ejemplo.com \
-e VIKUNJA_SERVICE_JWTSECRET=clave-secreta-larga \
-e VIKUNJA_CORS_ENABLED=true \
-e VIKUNJA_CORS_ORIGINS=https://vikunja.ejemplo.com \
vikunja/vikunja:latest

Configuración mediante archivo YAML

Para configuraciones complejas se recomienda montar un archivo config.yml en /app/vikunja/config.yml. El archivo permite definir base de datos, correo SMTP, caché (Redis), colas, métricas Prometheus, logging, rate limiting, y ajustes de frontend. La estructura completa está documentada en config-raw.json del repositorio y en la guía de configuración oficial.

# Ejemplo mínimo config.yml
database:
type: sqlite
path: /db/vikunja.db
service:
publicurl: https://vikunja.ejemplo.com
jwtsecret: "clave-secreta-muy-larga-y-segura"
rootpath: /app/vikunja/
cors:
enabled: true
origins:
– https://vikunja.ejemplo.com

Uso con base de datos externa (PostgreSQL)

Para producción con alta concurrencia se recomienda PostgreSQL. Requiere crear la base de datos y usuario, y configurar las variables de conexión. El contenedor ejecuta migraciones automáticas al inicio.

docker run -d \
-e VIKUNJA_DATABASE_TYPE=postgres \
-e VIKUNJA_DATABASE_HOST=db \
-e VIKUNJA_DATABASE_PORT=5432 \
-e VIKUNJA_DATABASE_USER=vikunja \
-e VIKUNJA_DATABASE_PASSWORD=secreto \
-e VIKUNJA_DATABASE_DATABASE=vikunja \
–link postgres:db \
vikunja/vikunja:latest

Gestión y mantenimiento

Actualización de versión

Actualizar la imagen y recrear el contenedor preservando los volúmenes de datos y configuración. Las migraciones de base de datos se aplican automáticamente al arranque.

docker pull vikunja/vikunja:latest
docker stop vikunja
docker rm vikunja
docker run -d –name vikunja … (mismos parámetros y volúmenes)

Copia de seguridad

La base de datos SQLite (/db/vikunja.db) y el directorio de archivos adjuntos (configurable, por defecto en /app/vikunja/files) deben incluirse en las copias de seguridad. Para PostgreSQL/MySQL usar herramientas nativas (pg_dump, mysqldump).

# Backup SQLite
docker exec vikunja sqlite3 /db/vikunja.db .dump > vikunja-backup-$(date +%F).sql
# Backup archivos adjuntos (si se usa almacenamiento local)
docker cp vikunja:/app/vikunja/files ./files-backup-$(date +%F)

Logs y monitorización

Los logs se escriben en stdout/stderr en formato JSON configurable. Se pueden recopilar con Loki, Elasticsearch o journalctl. La aplicación expone métricas Prometheus en /metrics si se habilita en configuración.

docker logs -f vikunja
# Métricas Prometheus (requiere config.yml con metrics.enabled: true)
curl http://localhost:3456/metrics

Stack técnico

  • Go 1.27 (backend)
  • Vue.js 3 (frontend)
  • Node.js 24 / pnpm (build frontend)
  • Mage (automatización de build)
  • xgo (compilación cruzada Go)
  • SQLite / PostgreSQL / MySQL (base de datos)
  • Docker (imagen multi-etapa scratch)
  • AGPL-3.0-or-later (licencia principal)
  • GPL-3.0-or-later (cliente de escritorio)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *