Railway

Deploy solidtime ⁂ Postgres, Redis, S3

Open-source time-tracking tool designed for freelancers and teams

Deploy solidtime ⁂ Postgres, Redis, S3

Just deployed

/var/lib/postgresql/data

solidtime-scheduler

solidtime/solidtime:latest

Just deployed

Just deployed

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:

  1. Postgres Database: Stores all application data (users, projects, time entries). Included in this template.
  2. Redis: Powers the cache and session store, improving performance and enabling distributed sessions. Included in this template.
  3. Scheduler & Worker Services: Process background jobs (email verification, notifications, exports). Both included in this template and configured automatically.
  4. SMTP Credentials: Required for email verification, password resets, and team invitations. Configure via MAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, and MAIL_PASSWORD variables. If left unconfigured (default MAIL_MAILER=log), emails are logged to the service's output instead of sent.
  5. 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.

  1. Set MAIL_MAILER to "smtp" (default is "log", which prints emails to the service logs).
  2. Configure SMTP credentials:
    • MAIL_HOST: Your SMTP server hostname (e.g., smtp.example.com)
    • MAIL_PORT: Usually 587 (TLS) or 465 (SSL)
    • MAIL_USERNAME: Your SMTP username
    • MAIL_PASSWORD: Your SMTP password
    • MAIL_ENCRYPTION: Usually tls or ssl
    • MAIL_FROM_ADDRESS: Sender email address (e.g., noreply@example.com)
    • MAIL_FROM_NAME: Display name for outgoing emails (e.g., Solidtime)
  3. 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:

  1. Set FILESYSTEM_DISK to "s3" (or your storage backend).
  2. Configure the corresponding S3 variables (S3_BUCKET, S3_REGION, S3_ENDPOINT, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY).
  3. 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

screenshot

For info, see the original author's GitHub page: hellocory/railway-solidtime-one-click-install


Template Content

solidtime-scheduler

solidtime/solidtime:latest

More templates in this category

View Template
NEW
Typesense vs Meilisearch
self-hosted Typesense vs Meilisearch

onepush
0
View Template
Betterlytics
Betterlytics is a cookieless analytics platform GDPR-compliant.

OpenSource Templates
27
View Template
NEW
Finance Tracker
Private multi-user household finance ledger with budgets and CSV import.

wotonews
0