
Deploy solidtime ⁂ Postgres, Redis, S3
Open-source time-tracking tool designed for freelancers and teams
solidtime-worker
Just deployed
Just deployed
/var/lib/postgresql/data
solidtime-scheduler
Just deployed
solidtime
Just deployed
Redis
Just deployed
/bitnami
Deploy and Host Solidtime on Railway
Deploy a complete, production-ready solidtime time-tracking stack on Railway in one click. This template includes the solidtime web service, scheduler and worker containers for background jobs, Postgres for data persistence, and Redis for caching and session storage—all configured with private networking so your database is never exposed to the internet.
About Hosting Solidtime
Solidtime is an open-source, self-hosted time-tracking tool designed for freelancers and teams. It offers features like granular roles and permissions, cross-platform compatibility via a PWA, and system notifications. Users can import data from other time trackers like Toggl and Clockify. The platform also plans to include billing and invoicing features soon. Solidtime can be used as a hosted SaaS solution or set up on-premise, with support for enterprise installations.
This Railway template deploys a complete, production-ready solidtime stack:
- solidtime web service (HTTP frontend + API)
- solidtime-scheduler background service (task scheduling)
- solidtime-worker background service (email, queued jobs)
- Postgres database (primary data store)
- Redis cache/session store
All services run on Railway's private network, eliminating the need to expose your database to the public internet.
For more information about Solidtime, visit Solidtime.
Why Deploy Solidtime on Railway?
Railway provides:
- Managed Postgres & Redis: No database setup or maintenance required.
- Private networking: Your database and background services are never exposed to the internet.
- Multi-service topology: The scheduler and worker services are included out-of-the-box, enabling full background job processing (emails, exports, queued tasks) without additional setup.
- One-click provisioning: Deploy the entire stack with a single template click.
- Simple scaling: Add replicas to the web service for increased traffic without managing infrastructure.
Common Use Cases
- Freelancers & Agencies: Track billable hours across projects and clients.
- Small Teams: Self-hosted time tracking with granular permissions and role-based access.
- Data Ownership: Run time tracking on your own infrastructure instead of relying on SaaS vendors like Toggl or Clockify.
Dependencies for Solidtime Hosting
To run solidtime successfully on Railway, you need:
- Postgres Database: Stores all application data (users, projects, time entries). Included in this template.
- Redis: Powers the cache and session store, improving performance and enabling distributed sessions. Included in this template.
- Scheduler & Worker Services: Process background jobs (email verification, notifications, exports). Both included in this template and configured automatically.
- SMTP Credentials: Required for email verification, password resets, and team invitations. Configure via
MAIL_MAILER,MAIL_HOST,MAIL_PORT,MAIL_USERNAME, andMAIL_PASSWORDvariables. If left unconfigured (defaultMAIL_MAILER=log), emails are logged to the service's output instead of sent. - Passport Keys: OAuth/API token signing keypair. Generated once during setup (see Passport Key Generation below); must not be regenerated, as doing so invalidates all existing user sessions and API tokens.
Getting Started
1. Deploy the Template
Click the button below to deploy this template to Railway. All services will be provisioned automatically.
2. Generate Passport Keys (Required)
Before users can log in or use the API, you must generate the Passport RSA keypair. This is a one-time step.
On your local machine (or any machine with Docker installed), run:
docker run --rm solidtime/solidtime:latest php artisan self-host:generate-keys
This will output two PEM blocks: PASSPORT_PRIVATE_KEY and PASSPORT_PUBLIC_KEY. Copy the full content of each (including the -----BEGIN PRIVATE KEY----- / -----END PRIVATE KEY----- lines) and paste them into the corresponding variables in your Railway environment.
Then redeploy the solidtime service via the Railway dashboard so the keys take effect.
⚠️ Important: Passport keys must never be regenerated after initial setup. Regenerating them will invalidate every user session and API token, forcing all users to log in again and breaking any integrations using API tokens.
3. Configure Email (Optional, but Recommended)
Email verification, password resets, and team invitations require SMTP.
- Set
MAIL_MAILERto"smtp"(default is"log", which prints emails to the service logs). - Configure SMTP credentials:
MAIL_HOST: Your SMTP server hostname (e.g.,smtp.example.com)MAIL_PORT: Usually587(TLS) or465(SSL)MAIL_USERNAME: Your SMTP usernameMAIL_PASSWORD: Your SMTP passwordMAIL_ENCRYPTION: UsuallytlsorsslMAIL_FROM_ADDRESS: Sender email address (e.g.,noreply@example.com)MAIL_FROM_NAME: Display name for outgoing emails (e.g.,Solidtime)
- Redeploy the solidtime service.
Email verification now works automatically via the background job queue (handled by the solidtime-worker service). No manual database edits are required.
4. Grant Admin Access
Edit the SUPER_ADMINS variable and add your email address (or multiple addresses separated by commas). Redeploy the solidtime service. Users with these email addresses will have admin privileges after logging in.
5. Configure File Storage (Optional)
By default, user-uploaded files are stored locally on the solidtime service's persistent volume. To use S3 or another object storage backend:
- Set
FILESYSTEM_DISKto"s3"(or your storage backend). - Configure the corresponding S3 variables (
S3_BUCKET,S3_REGION,S3_ENDPOINT,S3_ACCESS_KEY_ID,S3_SECRET_ACCESS_KEY). - Redeploy the solidtime service.
Additional Documentation and Configuration
For detailed configuration, advanced features, and troubleshooting, visit the official Solidtime documentation: https://docs.solidtime.io/self-hosting/intro
ONE CLICK INSTALL
For info, see the original author's GitHub page: hellocory/railway-solidtime-one-click-install
Template Content
solidtime-worker
solidtime/solidtime:latestsolidtime-scheduler
solidtime/solidtime:latestsolidtime
solidtime/solidtime:latestPASSPORT_PUBLIC_KEY
RSA keypair solidtime uses to sign OAuth/API tokens. Required before the app works. Generate both by running 'docker run --rm solidtime/solidtime:latest php artisan self-host:generate-keys' and pasting the two PEM values here, then redeploy this service — see README.
PASSPORT_PRIVATE_KEY
RSA keypair solidtime uses to sign OAuth/API tokens. Required before the app works. Generate both by running 'docker run --rm solidtime/solidtime:latest php artisan self-host:generate-keys' and pasting the two PEM values here, then redeploy this service — see README.
Redis
bitnami/redis:7.2.5