Skip to content

Deploying Solidtime

Introduction

Solidtime is a modern, open-source time tracking application designed for freelancers, teams, and organizations who need a self-hosted solution for tracking work hours. Built with Laravel and Vue.js, Solidtime offers a clean, intuitive interface for logging time entries, managing projects, and generating detailed reports.

Unlike cloud-based time tracking services, Solidtime gives you complete control over your data while providing all the features you need for effective time management. It’s designed to be simple enough for individual use yet powerful enough for team environments.

Key highlights of Solidtime:

  • Project-Based Tracking: Organize time entries by projects and clients
  • Task Management: Break down projects into trackable tasks
  • Team Support: Manage multiple users with role-based permissions
  • Reporting: Generate detailed reports for billing and analysis
  • Timer Functionality: Start/stop timers or manually enter time entries
  • Tagging System: Categorize entries with custom tags
  • Dashboard Overview: Visual insights into time allocation
  • Export Options: Export data in multiple formats
  • API Access: RESTful API for integrations
  • Mobile Responsive: Works seamlessly on all devices
  • Open Source: Licensed under AGPL-3.0

This guide walks through deploying Solidtime on Klutch.sh using Docker, configuring the database, and setting up the application for production use.

Why Deploy Solidtime on Klutch.sh

Deploying Solidtime on Klutch.sh provides several advantages:

Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Solidtime without complex orchestration. Push to GitHub, and your time tracker deploys automatically.

Persistent Storage: Attach persistent volumes for your database and uploaded files. Your time tracking data survives container restarts and redeployments.

HTTPS by Default: Klutch.sh provides automatic SSL certificates, ensuring secure access to your time tracker from anywhere.

GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments.

Always-On Availability: Your time tracking system remains accessible 24/7, essential for teams working across time zones.

Scalable Resources: Allocate CPU and memory based on your team size and usage patterns.

Custom Domains: Assign a custom domain for professional branding.

Prerequisites

Before deploying Solidtime on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your Solidtime configuration
  • Basic familiarity with Docker and containerization concepts
  • (Optional) A custom domain for your Solidtime instance

Preparing Your Repository

To deploy Solidtime on Klutch.sh, create a GitHub repository containing your Dockerfile.

Repository Structure

solidtime-deploy/
├── Dockerfile
└── .dockerignore

Creating the Dockerfile

Create a Dockerfile in the root of your repository:

FROM solidtime/solidtime:latest
# Set environment variables
ENV APP_ENV=production
ENV APP_DEBUG=false
ENV APP_URL=${APP_URL}
ENV APP_KEY=${APP_KEY}
# Database configuration (using SQLite for simplicity)
ENV DB_CONNECTION=sqlite
ENV DB_DATABASE=/var/www/html/database/database.sqlite
# Expose the web interface port
EXPOSE 80

Advanced Dockerfile with PostgreSQL Support

For production deployments with an external PostgreSQL database:

FROM solidtime/solidtime:latest
# Application settings
ENV APP_ENV=production
ENV APP_DEBUG=false
ENV APP_URL=${APP_URL}
ENV APP_KEY=${APP_KEY}
# Database configuration
ENV DB_CONNECTION=pgsql
ENV DB_HOST=${DB_HOST}
ENV DB_PORT=${DB_PORT:-5432}
ENV DB_DATABASE=${DB_DATABASE}
ENV DB_USERNAME=${DB_USERNAME}
ENV DB_PASSWORD=${DB_PASSWORD}
# Mail configuration (optional)
ENV MAIL_MAILER=${MAIL_MAILER:-smtp}
ENV MAIL_HOST=${MAIL_HOST}
ENV MAIL_PORT=${MAIL_PORT:-587}
ENV MAIL_USERNAME=${MAIL_USERNAME}
ENV MAIL_PASSWORD=${MAIL_PASSWORD}
ENV MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS}
# Expose the web interface port
EXPOSE 80

Creating the .dockerignore File

Create a .dockerignore file:

.git
.github
*.md
LICENSE
.gitignore
*.log
.DS_Store
.env
.env.local

Environment Variables Reference

VariableRequiredDefaultDescription
APP_KEYYes-Laravel encryption key (generate with php artisan key:generate --show)
APP_URLYes-Full URL of your Solidtime instance
APP_ENVNoproductionApplication environment
APP_DEBUGNofalseEnable debug mode (disable in production)
DB_CONNECTIONNosqliteDatabase driver (sqlite, mysql, pgsql)
DB_HOSTConditional-Database host (required for mysql/pgsql)
DB_DATABASENo-Database name
DB_USERNAMEConditional-Database username
DB_PASSWORDConditional-Database password

Deploying Solidtime on Klutch.sh

Once your repository is prepared, follow these steps to deploy Solidtime:

    Generate Your APP_KEY

    Generate a Laravel application key:

    Terminal window
    php -r "echo 'base64:' . base64_encode(random_bytes(32)) . PHP_EOL;"

    Or use an online Laravel key generator. Save this key securely.

    Push Your Repository to GitHub

    Initialize your repository and push to GitHub. Ensure your Dockerfile is in the root of your repository.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “solidtime” or “time-tracker”.

    Create a New App

    Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Solidtime Dockerfile.

    Configure HTTP Traffic

    Solidtime serves its web interface over HTTP. In the deployment settings:

    • Select HTTP as the traffic type
    • Set the internal port to 80

    Set Environment Variables

    In the environment variables section, add:

    VariableValue
    APP_KEYYour generated Laravel key
    APP_URLhttps://your-app-name.klutch.sh
    APP_ENVproduction
    APP_DEBUGfalse

    Attach Persistent Volumes

    Add the following volumes:

    Mount PathRecommended SizePurpose
    /var/www/html/database1 GBSQLite database (if using SQLite)
    /var/www/html/storage5 GBApplication storage and uploads

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will:

    • Detect your Dockerfile automatically
    • Build the container image
    • Attach the persistent volumes
    • Start the Solidtime container
    • Provision an HTTPS certificate

    Access Solidtime

    Once deployment completes, access your Solidtime instance at https://your-app-name.klutch.sh.

Initial Setup

Creating Your Account

After your first access to Solidtime:

  1. Click on the registration link
  2. Create your administrator account
  3. Complete the setup wizard

Creating Projects

Organize your time tracking:

  1. Navigate to Projects in the sidebar
  2. Click Create Project
  3. Enter project name, client, and billing rate
  4. Configure project-specific settings

Setting Up Clients

Manage your clients:

  1. Go to Clients section
  2. Add client details
  3. Associate projects with clients

Inviting Team Members

For team use:

  1. Navigate to Settings > Team
  2. Invite team members via email
  3. Assign roles and permissions

Using Solidtime

Tracking Time

Multiple ways to log time:

Timer Method:

  1. Select a project and task
  2. Click Start to begin the timer
  3. Click Stop when finished

Manual Entry:

  1. Click on a time slot
  2. Enter start and end times
  3. Add description and project

Managing Tasks

Break down projects:

  1. Open a project
  2. Navigate to Tasks
  3. Create tasks for tracking

Generating Reports

Create billing and analysis reports:

  1. Go to Reports section
  2. Select date range and filters
  3. Choose report type
  4. Export in your preferred format

Production Best Practices

Security Recommendations

  • Disable Debug Mode: Always set APP_DEBUG=false in production
  • Strong APP_KEY: Use a properly generated encryption key
  • HTTPS Only: Klutch.sh handles this automatically
  • Regular Updates: Keep your Solidtime image updated

Database Considerations

  • SQLite: Suitable for small teams, simpler setup
  • PostgreSQL: Recommended for larger teams and better performance
  • Regular Backups: Back up your database volume regularly

Performance Optimization

  • Resource Allocation: Increase resources for larger teams
  • Database Indexing: Ensure proper indexes for reporting queries

Troubleshooting Common Issues

Application Won’t Start

Symptoms: Container crashes or health checks fail.

Solutions:

  • Verify APP_KEY is set correctly
  • Check database connection settings
  • Review logs for specific error messages

Cannot Save Time Entries

Symptoms: Entries don’t persist or show errors.

Solutions:

  • Verify persistent volume is mounted correctly
  • Check database connectivity
  • Ensure sufficient disk space

Login Issues

Symptoms: Cannot log in or session problems.

Solutions:

  • Clear browser cookies
  • Verify APP_URL matches your actual URL
  • Check session configuration

Additional Resources

Conclusion

Deploying Solidtime on Klutch.sh gives you a powerful, self-hosted time tracking solution with automatic builds, persistent storage, and secure HTTPS access. The combination of Solidtime’s intuitive interface and Klutch.sh’s deployment simplicity means you can focus on tracking time and managing projects rather than managing infrastructure.

Whether you’re a freelancer tracking billable hours or a team managing multiple projects, Solidtime on Klutch.sh provides a reliable, always-available time tracking solution that you control completely.