Railway

Deploy homepage

Self-hosted app dashboard with 100+ service integrations. Single-container.

Deploy homepage

Just deployed

Deploy and Host

Deploy on Railway

> Canonical code: homepage — deploy URL: https://railway.com/new/template/homepage

OG Image

Homepage is a modern, highly-configurable self-hosted application dashboard with 100+ service integrations. Deploy it on Railway in minutes to turn your stack into a beautiful start page.

About Hosting

Homepage runs as a single container with a persistent Railway volume for config (/app/config). Railway provides the compute, TLS at the edge, and a public URL. The service restarts automatically on failures via Railway's built-in health check. No external database or cache is needed — everything runs in one container.

Why Deploy

  • 100+ service integrations — Plex, Sonarr, Radarr, Grafana, GitHub, Docker, Kubernetes, Home Assistant, Uptime Kuma, and many more widgets with live status.
  • Zero external dependencies — Single container with a persistent volume. No PostgreSQL, no Redis, no sidecars.
  • Drag-and-drop layout — Widgetized cards, collapsible groups, search bar with keyboard shortcuts, and per-user settings.
  • Themeable UI — Dark, light, neon, glassmorphism, and more. Custom backgrounds supported.
  • Persistent config — All settings survive redeploys via the Railway volume mount.
  • Ships with sensible defaults — Dark theme, Railway PORT binding, English locale — ready out of the box.

Common Use Cases

  • Personal dashboard — Aggregate all your self-hosted services into one beautiful start page.
  • Team operations hub — Share a dashboard with your team showing CI/CD status, monitoring, and deployment links.
  • Homelab control center — Monitor and access all your homelab services from a single pane of glass.
  • New tab replacement — Set Homepage as your browser's new tab page for instant access to everything.
  • Status board — Display live service status on a dedicated monitor or kiosk.

Dependencies for Homepage

Deployment Dependencies

Homepage requires no external dependencies on Railway. It runs as a standalone Next.js server with a persistent Railway volume for configuration files. No database, cache, or third-party services are needed.


Homepage License GitHub Stars

🚀 One-Click Deploy

Click the button above to deploy Homepage to Railway instantly. The build uses our pinned, reproducible Dockerfile (Homepage v1.13.2).

📋 Description

Homepage is a modern, highly-configurable self-hosted application dashboard with 100+ service integrations. It turns your Railway stack into a beautiful start page featuring live status, monitoring widgets, bookmarks, and custom service cards — everything you need at a glance when you open a new tab.

This template ships a production-ready single-container deployment:

  • ✅ Pinned upstream (Homepage v1.13.2, released June 9 2026)
  • ✅ Auto-injected persistent Railway volume for /app/config
  • ✅ Sensible defaults — dark theme, Railway PORT binding, language en
  • ✅ Healthcheck endpoint tuned for Railway's monitoring
  • ✅ Non-root runtime (upstream image convention preserved)
  • ✅ Env-var-driven config — no manual file editing required (but supported)
  • ✅ GitHub Actions security lint on every PR

✨ Features

  • 100+ service integrations: Plex, Sonarr, Radarr, Grafana, GitHub, Docker, Home Assistant, Uptime Kuma, and many more — full list.
  • Drag-and-drop layout with widgetized cards, collapsible groups, search bar, and per-user settings.
  • Live status synced every 30s — click any service to open its web UI.
  • Themeable — dark, light, neon, glassmorphism and others. Custom backgrounds supported.
  • Persistent config survives every Railway redeploy via volume mount.
  • No external dependencies — single container, no database or cache required.

🖼️ Screenshots

(The Publisher stage normally captures 3 screenshots of the live deployment and inserts them here. For this offline build, see the preview image above.)

🏗️ Architecture

Railway Container
  ├── Homepage (Next.js) → :$PORT, healthcheck GET /
  └── Persistent Volume → /app/config (settings, services, bookmarks, widgets, icons)

Single web service. One Railway volume. No database, no Redis, no extra sidecars. Healthcheck: GET / → 200 OK. Restart: ON_FAILURE (5 retries). HTTPS at Railway edge (TLS automatic).

🔧 Environment Variables

VariableRequiredDefaultDescription
PORTno8080Container port. Railway injects this automatically.
HOMEPAGE_PORTno(auto)Optional: override the port Homepage binds to. Defaults to Railway's PORT.
HOMEPAGE_VAR_DEFAULT_THEMEnodarkUI theme on first load (dark, light, neon, glassmorphism, …).
LOG_LEVELnoinfoServer-side log verbosity.
HOMEPAGE_VAR_TITLEno(n/a)Optional: title shown in the browser tab.
HOMEPAGE_VAR_LANGUAGEnoenUI language code.
HOMEPAGE_VAR_BACKGROUND_IMAGE_URLno(n/a)Optional: custom background image.
HOMEPAGE_VAR_BACKGROUND_OPACITYno(n/a)Optional: backdrop opacity 0.0–1.0.

> All HOMEPAGE_VAR_* settings can also be set inline via the env mapping — they're automatically read on container start.

🧩 Configuring your dashboard

Homepage reads YAML config files from the persistent volume at /app/config.

Option A — Visual editor (recommended)

Deploy, open the live URL, click ⚙️ to customize, and click Save. Config persists to the Railway volume automatically.

Option B — File-based config

If you prefer YAML, clone the repo, edit config/settings.yaml, and redeploy. The volume at /app/config loads your files on start. Reference:

🛠️ Local Development

git clone https://github.com/INAPP-Mobile/railway-homepage.git && cd railway-homepage
cp .env.example .env && $EDITOR .env
docker build -t railway-homepage .
docker run -d --name homepage -p 3000:3000 -v "$(pwd)/config:/app/config" --env-file .env railway-homepage
curl -sf http://localhost:3000/ | head -20

Open in your browser.

🧪 Testing

docker build -t railway-homepage .
docker run --rm -p 3000:3000 railway-homepage & sleep 10
curl -sf http://localhost:3000/ && echo OK

🐛 Troubleshooting

IssueSolution
Container exits immediatelyCheck Railway logs — usually a malformed HOMEPAGE_VAR_*.
Theme/Widgets reset on redeployConfirm /app/config volume is still mounted.
Health checks failingRaise start-period in railway.json; first-build cold cache may take longer.
Port already in useOverride PORT and HOMEPAGE_PORT — Railway auto-routes.

For upstream-specific issues, consult .

🔄 Updating

This template pins Homepage to v1.13.2. To upgrade:

  1. Edit the FROM line in Dockerfile to a newer tag (e.g. v1.14.0).
  2. Rebuild — Railway auto-detects a Dockerfile change.
  3. Confirm the new version against the release notes.

A GitHub Actions workflow (.github/workflows/publish-lint.yml) prevents publishing regressions.

📄 License

Homepage upstream is MIT-licensed. Template by INAPP-Mobile. Issues/PRs: .


Template Content

More templates in this category

View Template
Rocky Linux
[Jun'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
15
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
70
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
44