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└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM solidtime/solidtime:latest
# Set environment variablesENV APP_ENV=productionENV APP_DEBUG=falseENV APP_URL=${APP_URL}ENV APP_KEY=${APP_KEY}
# Database configuration (using SQLite for simplicity)ENV DB_CONNECTION=sqliteENV DB_DATABASE=/var/www/html/database/database.sqlite
# Expose the web interface portEXPOSE 80Advanced Dockerfile with PostgreSQL Support
For production deployments with an external PostgreSQL database:
FROM solidtime/solidtime:latest
# Application settingsENV APP_ENV=productionENV APP_DEBUG=falseENV APP_URL=${APP_URL}ENV APP_KEY=${APP_KEY}
# Database configurationENV DB_CONNECTION=pgsqlENV 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 portEXPOSE 80Creating the .dockerignore File
Create a .dockerignore file:
.git.github*.mdLICENSE.gitignore*.log.DS_Store.env.env.localEnvironment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
APP_KEY | Yes | - | Laravel encryption key (generate with php artisan key:generate --show) |
APP_URL | Yes | - | Full URL of your Solidtime instance |
APP_ENV | No | production | Application environment |
APP_DEBUG | No | false | Enable debug mode (disable in production) |
DB_CONNECTION | No | sqlite | Database driver (sqlite, mysql, pgsql) |
DB_HOST | Conditional | - | Database host (required for mysql/pgsql) |
DB_DATABASE | No | - | Database name |
DB_USERNAME | Conditional | - | Database username |
DB_PASSWORD | Conditional | - | Database password |
Deploying Solidtime on Klutch.sh
Once your repository is prepared, follow these steps to deploy Solidtime:
- Select HTTP as the traffic type
- Set the internal port to 80
- Detect your Dockerfile automatically
- Build the container image
- Attach the persistent volumes
- Start the Solidtime container
- Provision an HTTPS certificate
Generate Your APP_KEY
Generate a Laravel application key:
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:
Set Environment Variables
In the environment variables section, add:
| Variable | Value |
|---|---|
APP_KEY | Your generated Laravel key |
APP_URL | https://your-app-name.klutch.sh |
APP_ENV | production |
APP_DEBUG | false |
Attach Persistent Volumes
Add the following volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/var/www/html/database | 1 GB | SQLite database (if using SQLite) |
/var/www/html/storage | 5 GB | Application storage and uploads |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
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:
- Click on the registration link
- Create your administrator account
- Complete the setup wizard
Creating Projects
Organize your time tracking:
- Navigate to Projects in the sidebar
- Click Create Project
- Enter project name, client, and billing rate
- Configure project-specific settings
Setting Up Clients
Manage your clients:
- Go to Clients section
- Add client details
- Associate projects with clients
Inviting Team Members
For team use:
- Navigate to Settings > Team
- Invite team members via email
- Assign roles and permissions
Using Solidtime
Tracking Time
Multiple ways to log time:
Timer Method:
- Select a project and task
- Click Start to begin the timer
- Click Stop when finished
Manual Entry:
- Click on a time slot
- Enter start and end times
- Add description and project
Managing Tasks
Break down projects:
- Open a project
- Navigate to Tasks
- Create tasks for tracking
Generating Reports
Create billing and analysis reports:
- Go to Reports section
- Select date range and filters
- Choose report type
- Export in your preferred format
Production Best Practices
Security Recommendations
- Disable Debug Mode: Always set
APP_DEBUG=falsein 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_KEYis 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_URLmatches your actual URL - Check session configuration
Additional Resources
- Solidtime GitHub Repository
- Solidtime Documentation
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
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.