Deploy Gauge
A complete metrics and analytics stack for Railway Template creators.
Just deployed
Gauge: Template Metrics Ingest
Just deployed
Grafana
Just deployed
/var/lib/grafana/
Deploy and Host Gauge on Railway
A complete metrics and analytics stack for Railway Template creators. featuring automated data collection, PostgreSQL persistence, and pre-configured Grafana dashboards to track revenue, health, and growth.
About Hosting Gauge
Hosting Gauge involves deploying a three-tier observability stack specifically designed for Railway template businesses:
- a Bun-powered ingest service that interacts with the Railway GraphQL API and runs via a CRON service.
- a PostgreSQL database for historical snapshot storage
- a provisioned Grafana instance for professional-grade visualization.
The system automatically handles time-series growth calculations (24h, 7d, 30d) and provides deep insights into template retention and revenue momentum outside of Railway's current metrics.
Common Use Cases
- Revenue Performance Tracking: Monitor lifetime and 30-day earnings across your entire template portfolio.
- Template Health Monitoring: Keep track of health scores to ensure you maintain maximum payout percentages (25%).
- Retention Analysis: Compare active projects against total deployments to calculate real-world retention rates.
- Growth Rate Benchmarking: Identify high-momentum templates using 24-hour, 7-day, and 30-day revenue growth trends.
- Portfolio Risk Management: Visualize revenue concentration to understand which templates drive your business.
Dependencies for Gauge Hosting
None! everything runs on Railway.
Deployment Dependencies
- Railway API Token: Required to fetch metrics from your account; should be an account level token.
- Railway Workspace IDs: For the workspace containing your templates. You can get this by hitting
ctrl+kon the dashboard and typingCopy Active Workspace ID - Railway Customer ID: For your account. You can get this by navigating to your Earnings tab, opening your browser's dev tools (
ctrl+shift+I), navigating to the networking tab, and filtering for requests containinginternal?q=unifiedWithdrawalsV2. Go to the "Request" tab and your customerID should be under "Variables" in the request body. - Grafana Documentation: For advanced dashboard customization.
- Railway GraphQL API: The source of truth for all ingested data.
Implementation Details
Quick Start Guide
Deploying Services
- Click "Deploy on Railway" and provide your Railway API credentials, Customer ID, and Workspace ID in the environment variables.
- Set your desired Grafana admin username.
- Wait 2-3 minutes for the services to initialize.
Configure Ingest CRON Service
- Manually configure the ingest service's schedule by going to settings -> Cron Schedule -> Add Schedule
- I would suggest starting with
0 0,12 * * *which would be every 12 hours in UTC time - From now on, your ingest will run on a schedule and pull in your Railway Template metrics
Access your dashboards via Grafana
- Grab the automatically generated domain from the Grafana service.
- Grab your generated password from the Grafna Service -> Variables ->
GF_SECURITY_ADMIN_PASSWORDand copy it. - Access your Executive Summary dashboard via the generated domain and username/password.
- OPTIONAL: add a custom domain to your Grafana service so it's easier to remember.
Environment Variables
Ingest Service (Bun)
These variables control the collection and processing of Railway API data.
| Variable | Description | Default |
|---|---|---|
RAILWAY_API_TOKEN | Your Railway personal API token | Required |
RAILWAY_CUSTOMER_ID | Your Railway Customer UUID | Required |
RAILWAY_WORKSPACE_ID | Your Railway Workspace UUID | Required |
DATABASE_URL | PostgreSQL connection string | Provided by Railway |
Grafana (Visualization)
These variables configure the Grafana instance and its connection to the database.
| Variable | Description | Default |
|---|---|---|
VERSION | Grafana version to deploy (from grafana/dockerfile) | latest default |
GF_SECURITY_ADMIN_USER | Grafana admin username | admin |
DATABASE_HOST | Database internal hostname | ${{Postgres.RAILWAY_INTERNAL_HOST}} |
DATABASE_PORT | Database internal port | ${{Postgres.PORT}} |
DATABASE_USER | Database username | ${{Postgres.POSTGRES_USER}} |
DATABASE_PASSWORD | Database password | ${{Postgres.POSTGRES_PASSWORD}} |
DATABASE_NAME | Database name | ${{Postgres.POSTGRES_DB}} |
Version Control
Each service is pinned to stable versions for production reliability:
- Bun (Ingest):
latest(Alpine) - PostgreSQL: Railway's latest supported version (16+)
- Grafana:
12.3.1(Configurable viaVERSIONenvironment variable)
Connecting Applications
For Ingest: The ingest service runs as a scheduled worker (Cron) within the stack. It is pre-configured to connect to the internal PostgreSQL instance using the DATABASE_URL.
For Visualization: Grafana is auto-provisioned with a datasource named psql-gauge pointing to the internal database. No manual setup is required to see your metrics.
For Data Export: You can connect external BI tools to the PostgreSQL instance as needed- that data is yours even if you don't want to use Grafana to visualize it.
Customizing Your Stack
To customize dashboards or collection logic:
- Fork the GitHub repository.
- Modify the ingest logic in
ingest/index.ts - Update dashboard JSON templates in
grafana/dashboards/templates/to add custom visualizations. - Commit, relink the repo, and push; Railway will automatically redeploy the updated services.
Why Deploy Gauge on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Gauge on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
Gauge: Template Metrics Ingest
TinyboxSoftware/gaugeRAILWAY_API_TOKEN
A Railway API Token with the Account Scope
RAILWAY_CUSTOMER_ID
The customer ID of your account.
RAILWAY_WORKSPACE_ID
The workspace ID containing the templates you'd like to monitor.
Grafana
TinyboxSoftware/gaugeGF_SECURITY_ADMIN_USER
The username you'd like to use for your Grafana instance.

