---
title: "Deploy Overlook"
description: "One-page homelab health dashboard behind a login"
category: "Observability"
url: https://railway.com/deploy/deploy-overlook-homelab-dashboard
---

# Deploy Overlook

One-page homelab health dashboard behind a login

**[Deploy Overlook on Railway](https://railway.com/template/deploy-overlook-homelab-dashboard)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/deploy-overlook-homelab-dashboard/manifest.json

- **Creator:** onepush
- **Category:** Observability

## Template content

### overlook

- **Image:** ghcr.io/onepush-dev/overlook:0.5.0
- **Health check:** /healthz
- **Public domain:** Yes

## Documentation

# Deploy and Host self hosted Overlook (Homelab Dashboard) on Railway

Overlook is a one-page dashboard that shows whether your homelab is fine, reading the monitoring tools you already run.

## About Hosting Overlook open-source software on Railway (self hosted Overlook template)

Overlook is a self-hosted, MIT-licensed homelab dashboard that reads your monitoring tools without changing them.

Railway runs the container, health check, public URL and restarts. Overlook keeps no database and writes nothing to disk, so there is no volume to manage.

## Why Deploy Overlook, the one-page homelab dashboard on Railway (Railway Free Trial)

Overlook reads your existing check engines and leads with what is wrong; Railway adds the basic-auth gate and config-from-variable without a host to run. Billing is usage-based.

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 Overlook 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.

### Railway vs Other Hosting Providers and VPS for Overlook self hosting

Overlook is one container, so the choice depends on how much server work you want to do.

| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | A template deploy with the generated login and config variable wired, and no server to patch. | A Droplet you size, secure and update yourself, with full control of the network. |
| AWS | One service with no VPC or security group to set up before the page loads. | Broad control over networking and IAM, with more moving parts for a dashboard this small. |
| Hetzner | Managed hosting with the basic auth in front from the start. | Inexpensive servers in Europe, but you install Docker, the firewall and the reverse proxy yourself. |

## Common Use Cases for hosted Overlook

- **One page for a noisy homelab:** Overlook reads the checks you already run in Gatus, Uptime Kuma, Grafana, Prometheus or Checkmate and shows only what is wrong now. After a power blip you open one page instead of five dashboards.
- **Pending updates and backups:** The GitHub source lists open Dependabot or Renovate pull requests, and the Proxmox Backup Server source shows whether last night's backups ran. Both appear as chores you can act on where they wait.
- **App links in a sidebar:** Each app and tool becomes a link with a dot showing whether it answers. Family members can find Immich or Jellyfin without memorising addresses.
- **Watching services on Railway:** Sources in the same Railway project, reached through `*.railway.internal` addresses, stay off the public internet while Overlook monitors them.
- **A status page for public endpoints:** Point Overlook at your public URLs; anyone you give the basic-auth password sees the whole page (hosts, names and problems, never keys).

## Dependencies for Overlook Docker hosted on Railway

Overlook runs as one Railway service with no database and no volume, since it keeps nothing on disk. Caddy sits in front and asks for a login, because Overlook has none of its own.

### Deployment Dependencies for Managed Overlook Service (one service, no volume because Overlook writes nothing; Caddy basic auth in front)

The template creates one service named overlook, exposing port 8080, with a health check on /healthz. The user admin is baked in, and OVERLOOK_USER is set to admin. OVERLOOK_CONFIG is optional: empty means the setup page. TZ defaults to UTC.

### Implementation Details for Overlook (ghcr.io/onepush-dev/overlook:0.5.0 copies the unmodified official 0.5.0 binary onto caddy:2.10-alpine; Caddy listens on 8080 with basic auth and forwards to Overlook on 127.0.0.1:8081; /healthz is open)

The image copies the unmodified official 0.5.0 binary onto caddy:2.10-alpine. Caddy listens on 8080 with basic auth and forwards requests to Overlook on 127.0.0.1:8081.

## How does Overlook compare against other tools

### Overlook vs Homepage (Homepage Alternative)

- **Reads your tools:** Overlook reads Gatus, Uptime Kuma, Grafana, Prometheus or Checkmate, and says what is wrong rather than just listing links.
- **Changes nothing:** It sends your sources only GET requests (with the narrow exceptions the upstream documents) and never runs a check or sends an alert, so your check engine stays the one source of truth.
- **Where Homepage wins:** Homepage is a mature start page with a large widget catalogue.

### Overlook vs Homarr (Homarr Alternative)

- **Problems first:** The page leads with what is failing right now, drawn from your check engine's alerts, rather than with tiles you arrange yourself.
- **Fixed layout:** There are no widgets to place, so the page looks the same for every homelab and needs no upkeep.
- **Where Homarr wins:** Homarr lets you build a custom dashboard layout with many more widgets.

### Overlook vs Uptime Kuma (Uptime Kuma Alternative)

- **Different job:** Uptime Kuma runs the monitors and sends the alerts, while Overlook only reads from tools like it and gives one summary page.
- **Keep both:** You can read Uptime Kuma's status page into Overlook, so the two complement each other rather than compete.
- **Where Uptime Kuma wins:** Uptime Kuma checks your services and sends alerts, which Overlook does not.

### Overlook with Docker vs Railway (Railway Hosting Alternative)

- **Same image:** The Railway template runs the same upstream Overlook binary as the Docker setup, behind a Caddy login.
- **Reachability:** Railway can only reach sources that are public or in the same Railway project, so LAN-only homelab hosts won't work there.
- **Where Docker wins:** A local Docker host reaches everything on your LAN and avoids public exposure, so it is the better fit for most homelabs.

## How to use Overlook on Railway?

1. Open the public URL of your Overlook service and sign in as `admin` with the password from the `OVERLOOK_PASSWORD` variable on the Variables tab.
2. With no config yet you land on the setup page. Pick your tools, give each its address and key, and try them. Sources must be reachable from Railway, so use public URLs or services in the same project via `*.railway.internal`.
3. Copy the `overlook.yaml` the setup page builds into the `OVERLOOK_CONFIG` variable. Copy each key from its `.env` into its own Railway variable and reference it as `${VAR}`.
4. Redeploy. The setup page turns into your dashboard once the config loads. A bad key or an unset `${VAR}` stops Overlook, so check the deploy logs if the page does not come up.

Check that the service is healthy with:

```
curl https://your-domain/healthz
```

## How to self host Overlook on other VPS Services (Overlook self hosting guide)

### Clone the Repository

Clone the upstream project at the 0.5.0 release so you run the version this template is built from.

```sh
git clone --branch v0.5.0 https://github.com/bnlqn/overlook.git
cd overlook
```

### Install Dependencies

You need Docker with the Compose plugin on your host. Nothing else is required, because the official image carries the binary and its CA certificates.

### Configure Environment Variables

Create an `overlook/` folder beside your `compose.yaml` with `overlook.yaml` and an optional `.env` for keys. Reference secrets as `${VAR}` so the config itself holds none.

```yaml
# overlook/overlook.yaml
sources:
  gatus:
    - url: http://gatus.your-domain.example:8080
```

### Start the Overlook Application

Use the upstream compose file with `ghcr.io/bnlqn/overlook:0.5.0`, mounting the config folder read-only at `/etc/overlook`, then start it.

```sh
docker compose up -d
```

Upstream Overlook has no login, so keep it on your LAN or VPN, or behind your reverse proxy's authentication. The Railway template adds Caddy basic auth in front of it.

## Official Pricing of Overlook (Overlook pricing)

Overlook is MIT open-source software, and it is free to self-host. Railway charges are usage-based and depend on your plan and resource use.

## Overlook hosted vs self hosted comparison (Pricing, features, costs, and more)

Overlook is free MIT software with no hosted plan, so you run it on Railway or a VPS you manage and pay only for that infrastructure.

### Monthly cost of self hosting Overlook on Railway

Railway bills by usage, so cost depends on the memory and CPU Overlook and your other project services use. No volume is needed.

### System Requirements for Hosting Overlook on a VPS

Overlook is one small binary behind Caddy, so a modest VPS or home server is usually enough, with no database or persistent storage.

## Frequently Asked Questions (FAQs)

### Why does Overlook ask for a password?

Overlook upstream has no login of its own, and its setup page reads any address you type, so the template puts basic auth in front. Keep the password private and use a long, unique value.

### Can Overlook see my LAN homelab?

Only if Railway can reach it. Sources must be public URLs or other services in the same Railway project on `*.railway.internal`. LAN-only hosts are unreachable from Railway.

### Why is there no volume?

Overlook writes nothing to disk, so the service has no volume. Your config lives in the `OVERLOOK_CONFIG` variable instead.

### Why did Overlook crash after I edited the config?

Overlook stops on an unknown key or an unset `${VAR}` reference, so check the deploy logs after changing `OVERLOOK_CONFIG`. Make sure every key you reference exists as a Railway variable.

### Does version 0.5.0 offer MCP?

No. The `/mcp` endpoint is only a proposed design for a later release and is not part of 0.5.0.

### Which version should I deploy?

Deploy the stable 0.5.0 release. Upstream has 0.6.0 release candidates, but this template does not use them.


## Similar templates

- [Rootprint](https://railway.com/deploy/rootprint-1) — Open-source logs and traces with full-text search on object-storage.
- [VPS Fleet Watch Hub with Beszel](https://railway.com/deploy/vps-fleet-watch-hub-with-beszel) — A persistent Beszel hub for external VPS agents and fleet alerts.
- [Pyroscope profiling](https://railway.com/deploy/pyroscope-profiling) — Protected continuous profiling with durable Pyroscope storage.

Open this page in a browser: https://railway.com/deploy/deploy-overlook-homelab-dashboard
