Cómo instalar SolidTime en Docker - Modern Open-Source Time Tracking

Productividad | Open Source | Self-Hosted

SolidTime: Control total de tu tiempo con una plataforma moderna y soberana

Sigue el rastro de cada minuto de tu trabajo sin depender de SaaS cerrados. Gestión profesional de proyectos, clientes y tareas para freelancers y agencias.

¿Qué es SolidTime?


SolidTime
es una aplicación de seguimiento de tiempo (time-tracking) de código abierto diseñada para quienes necesitan precisión profesional sin renunciar a la privacidad de sus datos. Mientras que la mayoría de las herramientas actuales obligan a subir la información a nubes propietarias, SolidTime permite el auto-hospedaje completo.

Ventaja clave: Un sistema jerárquico robusto que permite organizar el trabajo desde el Cliente hasta la Tarea individual, facilitando la facturación exacta y el análisis de rentabilidad.

Características principales: Interfaz web intuitiva y moderna. Gestión de múltiples organizaciones con una sola cuenta. Soporte para tarifas facturables personalizadas por proyecto o miembro. Importación sencilla de datos desde Toggl y Clockify. Control de accesos mediante roles y permisos granulares. API JSON para automatizaciones y extensiones de navegador para trackeo rápido.

Ideal para profesionales: Elimina la fricción del seguimiento manual y recupera la soberanía sobre tus datos de productividad.

Características principales

🚀 UI Moderna

Experiencia de usuario optimizada, limpia y eficiente, diseñada para el flujo de trabajo actual.

📊 Jerarquía Completa

Estructura Cliente → Proyecto → Tarea para un control absoluto de la carga de trabajo.

💰 Tarifas Dinámicas

Asigna precios por hora específicos según el proyecto o el nivel del colaborador.

🏢 Multi-Organización

Separa la gestión de diferentes empresas o clientes independientes en una misma instancia.

📥 Migración CSV

Trae tu historial de tiempo desde otras plataformas populares sin complicaciones.

🔐 Roles Detallados

Permisos configurables para asegurar que cada usuario acceda solo a lo necesario.

Requisitos del sistema

  • Docker & Docker Compose instalados.
  • Base de Datos: PostgreSQL (recomendado usar servicio gestionado para producción).
  • SMTP Server: Necesario para el envío de correos de notificación y recuperación de claves.
  • RAM: Mínimo 1GB (2GB recomendados para estabilidad).
  • Reverse Proxy: Nginx, Traefik o Caddy para gestionar SSL/HTTPS.
Sugerencia: Si no tienes experiencia gestionando bases de datos, utiliza un contenedor Postgres separado o un servicio gestionado para evitar la pérdida de datos.

Instalación con Docker Compose

Paso 1: Crear docker-compose.yml

cat > docker-compose.yml << 'EOF' services: app: restart: always image: "solidtime/solidtime:${SOLIDTIME_IMAGE_TAG:-latest}" user: "1000:1000" ports: - '${FORWARD_APP_PORT:-8000}:8000' networks: - internal volumes: - "app-storage:/var/www/html/storage" - "./logs:/var/www/html/storage/logs" - "./app-storage:/var/www/html/storage/app" environment: CONTAINER_MODE: http healthcheck: test: [ "CMD", "curl", "--fail", "http://localhost:8000/health-check/up" ] env_file: - laravel.env depends_on: - database scheduler: restart: always image: "solidtime/solidtime:${SOLIDTIME_IMAGE_TAG:-latest}" user: "1000:1000" networks: - internal volumes: - "app-storage:/var/www/html/storage" - "./logs:/var/www/html/storage/logs" - "./app-storage:/var/www/html/storage/app" environment: CONTAINER_MODE: scheduler healthcheck: test: [ "CMD", "healthcheck" ] env_file: - laravel.env depends_on: - database queue: restart: always image: "solidtime/solidtime:${SOLIDTIME_IMAGE_TAG:-latest}" user: "1000:1000" networks: - internal volumes: - "app-storage:/var/www/html/storage" - "./logs:/var/www/html/storage/logs" - "./app-storage:/var/www/html/storage/app" environment: CONTAINER_MODE: worker WORKER_COMMAND: "php /var/www/html/artisan queue:work" healthcheck: test: [ "CMD", "healthcheck" ] env_file: - laravel.env depends_on: - database database: restart: always image: 'postgres:15' # ports: # - '${FORWARD_DB_PORT:-5432}:5432' environment: PGPASSWORD: '${DB_PASSWORD}' POSTGRES_DB: '${DB_DATABASE}' POSTGRES_USER: '${DB_USERNAME}' POSTGRES_PASSWORD: '${DB_PASSWORD}' volumes: - 'database-storage:/var/lib/postgresql/data' networks: - internal healthcheck: test: - CMD - pg_isready - '-q' - '-d' - '${DB_DATABASE}' - '-U' - '${DB_USERNAME}' retries: 3 timeout: 5s gotenberg: image: gotenberg/gotenberg:8 networks: - internal healthcheck: test: [ "CMD", "curl", "--silent", "--fail", "http://localhost:3000/health" ] networks: internal: volumes: database-storage: app-storage: EOF

Paso 2: Preparar archivos de entorno

Crea los archivos de configuración basados en las plantillas del repositorio:

cp .env.example .env cp laravel.env.example laravel.env

Paso 3: Generar claves de la aplicación

Es fundamental generar las claves de cifrado antes de iniciar el servicio:

docker compose run scheduler php artisan self-host:generate-keys

Paso 4: Despliegue de contenedores

docker compose up -d

Paso 5: Migración de la base de datos

Crea las tablas necesarias para el funcionamiento de SolidTime:

docker compose exec scheduler php artisan migrate --force

Paso 6: Crear el primer usuario administrador

docker compose exec scheduler php artisan admin:user:create "Tu Nombre" "admin@ejemplo.com" --verify-email

Primeros pasos

1. Acceso Inicial

  1. Abre tu navegador en la dirección de tu servidor (puerto 8000 por defecto).
  2. Inicia sesión con el usuario creado mediante la CLI.

2. Estructuración del espacio de trabajo

  1. Crea tu primera Organización desde el panel de administración.
  2. Añade un Cliente y asócialo a un Proyecto.
  3. Define las Tareas específicas dentro de ese proyecto.

3. Configuración de Tarifas

  1. Asigna la tarifa por hora al proyecto o al miembro del equipo.
  2. Verifica que los cálculos de facturación sean correctos en el dashboard.

4. Activación de Extensiones

  1. Instala la extensión de Chrome/Firefox para trackear tiempo sin entrar a la web.
  2. Configura la URL de tu instancia y el Client ID generado en el servidor.

Casos de uso

  • Freelancers Independientes: Registro exacto de horas trabajadas para emitir facturas transparentes.
  • Agencias de Desarrollo/Diseño: Control de costes por proyecto y asignación de horas entre múltiples desarrolladores.
  • Consultores IT: Auditoría de tiempo dedicada a mantenimiento vs. nuevas funcionalidades.
  • Equipos Internos: Análisis de la carga de trabajo para optimizar la distribución de tareas.

Acceso Seguro con Caddy (HTTPS)

Caddyfile

solidtime.tudominio.com { reverse_proxy localhost:8000 }

Resultado

Acceso cifrado mediante SSL automático en https://solidtime.tudominio.com.

Mantenimiento y Actualizaciones

Logs del sistema

docker compose logs -f

Actualizar SolidTime

# Actualizar imágenes y reiniciar docker compose pull docker compose up -d # Aplicar migraciones pendientes docker compose exec scheduler php artisan migrate --force

Limpieza de imágenes antiguas

docker system prune -a -f

Conclusión: ¿Por qué elegir SolidTime?

vs Toggl / Clockify

Mientras que las opciones SaaS son cómodas, te obligan a pagar suscripciones por funciones básicas y a ceder tus datos. SolidTime te ofrece la misma potencia con coste cero de licencia y privacidad total.

Veredicto: Si buscas una herramienta profesional, moderna y que respete la soberanía de tus datos, SolidTime es la solución definitiva para el control del tiempo.

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.