Cómo instalar TimeTagger en Docker - Seguimiento de tiempo en Docker

TimeTagger | Productividad | Docker

TimeTagger: Seguimiento de tiempo intuitivo en Docker

Controla tu tiempo con etiquetas, no proyectos. TimeTagger es un rastreador de tiempo web ligero, rápido y fácil de auto-alojar con Docker para freelancers y profesionales independientes.

¿Qué es TimeTagger?


TimeTagger es una solución de seguimiento de tiempo basada en web que puedes ejecutar localmente o en tu propio servidor. Está dirigida a personas que trabajan por su cuenta, como freelancers y profesionales independientes. Utiliza la filosofía de etiquetado en lugar de proyectos rígidos, lo que permite organizar tu tiempo con máxima flexibilidad.

En Docker: TimeTagger ofrece una imagen Docker oficial que hace que el auto-alojamiento sea extremadamente sencillo. Solo necesitas un contenedor con acceso a un volumen para la base de datos SQLite, y tendrás tu propio servidor de seguimiento de tiempo con todos los datos bajo tu control.

Ventaja principal: TimeTagger es extremadamente ligero. No necesita bases de datos separadas ni complejas configuraciones de backend. Simplemente corre Python y SQLite dentro del contenedor, ofreciendo sincronización entre dispositivos y una interfaz responsiva.

Características principales

Etiquetado flexible

Organiza tu tiempo usando etiquetas en lugar de proyectos rígidos. Más libertad, menos burocracia.

Interfaz interactiva

Timeline visual e intuitivo para registrar y revisar tu tiempo de forma natural y rápida.

Informes PDF y CSV

Genera informes profesionales en PDF y CSV para clientes o análisis personal.

Objetivos periódicos

Define metas diarias, semanales o mensuales y visualiza tu progreso fácilmente.

Pomodoro integrado

Método Pomodoro incorporado para mejorar tu enfoque y productividad (experimental).

Diseño responsivo

Interfaz adaptable que funciona perfectamente en dispositivos móviles y de escritorio.

Sincronización

Sincroniza datos entre múltiples dispositivos accediendo a tu instancia autoalojada.

Auto-alojamiento

Todos tus datos se quedan en tu servidor sin depender de servicios de terceros.

Backend Python ligero

Servidor ultra rápido con uvicorn y asgineer. Sin dependencias pesadas.

Base de datos SQLite

Bases de datos ligeras y portables con itemdb. Fácil de respaldar y restaurar.

Soporte multiusuario

Autenticación por credenciales o mediante reverse proxy para varios usuarios.

Código abierto

Licencia GPL-3.0. Totalmente transparente y libre para usar y modificar.

Requisitos del sistema

  • Docker y docker-compose instalados
  • 100 MB de RAM mínimo (¡es muy ligero!)
  • 1 GB de espacio en disco para la base de datos y configuración
  • Puerto 8080 (o el que definas) disponible
  • Python 3.6+ (si ejecutas fuera de Docker)
  • SQLite (incluido internamente)
Nota importante: TimeTagger utiliza SQLite internamente. El archivo de la base de datos se almacena en el volumen /data del contenedor. Asegúrate de persistir este volumen para no perder tus registros de tiempo.

Instalación rápida con Docker Compose

Paso 1: Crear docker-compose.yml

version: '3.8' services: timetagger: image: ghcr.io/almarklein/timetagger:latest container_name: timetagger restart: unless-stopped ports: - "8080:8080" volumes: - /path/to/timetagger/data:/data environment: - TIMETAGGER_CREDENTIALS=usuario:$2a$08$...

Paso 2: Iniciar el contenedor

docker compose up -d

Paso 3: Acceder a TimeTagger

Abre en tu navegador: http://localhost:8080

Inicia sesión con las credenciales que configuraste en el paso anterior.

Generar credenciales: Usa el generador oficial en https://timetagger.app/cred para crear tu hash de contraseña BCrypt antes de iniciar el contenedor.

Configuración avanzada

Autenticación con reverse proxy

Si usas un reverse proxy como Authelia que ya autentica usuarios:

environment: - TIMETAGGER_PROXY_AUTH_ENABLED=True - TIMETAGGER_PROXY_AUTH_TRUSTED=127.0.0.1 - TIMETAGGER_PROXY_AUTH_HEADER=X-Remote-User

Usar variantes root o non-root

La imagen por defecto corre como root dentro del contenedor. Para mayor seguridad, usa la variante non-root que corre como usuario 1000:

image: ghcr.io/almarklein/timetagger:latest-nonroot

Modificar el puerto interno

environment: - TIMETAGGER_PORT=8000

Backup de la base de datos

Simplemente copia el archivo del volumen:

cp /path/to/timetagger/data/timetagger.db /backup/timetagger-$(date +%Y%m%d).db

Primeros pasos

1. Crear tu primera entrada

  1. Abre la interfaz de TimeTagger en tu navegador
  2. Haz clic en el timeline para crear una nueva entrada de tiempo
  3. Define el rango horario y la descripción de la tarea
  4. Añade etiquetas separadas por comas (ej. #desarrollo, #cliente1)

2. Navegar por el timeline

  1. Usa el desplazamiento horizontal para moverte entre días
  2. Zoom con la rueda del ratón para ajustar la escala temporal
  3. Haz clic en cualquier entrada para editarla o eliminarla

3. Generar informes

  1. Ve a la sección de Reports
  2. Filtra por rango de fecha y etiquetas
  3. Selecciona formato PDF o CSV
  4. Descarga tu informe para compartir con clientes

4. Configurar objetivos

  1. Accede a Settings
  2. Define horas objetivo diarias o semanales
  3. Visualiza tu progreso con barras de cumplimiento

Precauciones y seguridad

Datos persistentes

TimeTagger usa SQLite internamente. Es fundamental persistir el volumen /data para no perder registros:

  • Si destruyes el contenedor sin volumen persistente, perderás todos tus datos
  • Realiza backups regulares del archivo timetagger.db

Autenticación

Si no configuras credenciales, TimeTagger correrá sin autenticación en modo single-user:

  • Usa TIMETAGGER_CREDENTIALS para usar modo multiusuario en servidores remotos
  • Configura un reverse proxy con SSL para acceso seguro por Internet
Advertencia: Sin autenticación, cualquiera con acceso a la URL puede ver y modificar tus registros de tiempo. Asegúrate de proteger tu instancia si no está en una red privada.

Configurar HTTPS con Caddy

timetagger.tudominio.com { reverse_proxy localhost:8080 }

Accede de forma segura desde tu dominio personalizado con certificado SSL válido.

Gestión y mantenimiento

Ver logs

docker compose logs -f timetagger

Reiniciar contenedor

docker compose restart timetagger

Detener

docker compose down

Actualizar a la última versión

docker compose pull
docker compose up -d

Backup de la base de datos

docker cp timetagger:/data/timetagger.db ./timetagger-backup-$(date +%Y%m%d).db

Casos de uso

  • Freelancers: Seguimiento detallado de horas por cliente y proyecto usando etiquetas
  • Desarrolladores: Control del tiempo dedicado a diferentes features o bugs
  • Consultores: Facturación precisa basada en registros de tiempo detallados
  • Estudiantes: Gestión del tiempo de estudio y proyectos académicos
  • Productividad personal: Análisis de patrones de trabajo para mejorar el enfoque
  • Equipos pequeños: Tracking de tiempo centralizado con acceso multiusuario

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.