---
title: "Deploy ocular"
description: "A self-hosted, open-source personal budgeting app with Sankey diagrams. "
category: "Analytics"
url: https://railway.com/deploy/ocular
---

# Deploy ocular

A self-hosted, open-source personal budgeting app with Sankey diagrams. 

**[Deploy ocular on Railway](https://railway.com/template/ocular)**

- **Creator:** koukyo_huang's Projects
- **Category:** Analytics
- **Total deploys:** 6

## Template content

### ocular

- **Image:** ghcr.io/simonwep/ocular:latest
- **Public domain:** Yes

## Documentation

# Deploy and Host Ocular on Railway

## About Hosting

[Ocular](https://github.com/simonwep/ocular) is a self-hosted, open-source personal budgeting app with a beautiful, minimalist interface. It features income/expense tracking, Sankey diagram visualizations, multi-year overviews, multi-user support, PWA installability, dark/light mode, and multi-language support.

Ocular runs as a single Docker container bundling a Vue 3 SPA frontend (served by Caddy) and a Go backend ([Genesis](https://github.com/simonwep/genesis)) for authentication and file-based data persistence. No external database is required — all data is stored on a persistent volume.

## Why Deploy

- **Privacy-first** — Your financial data stays on your own infrastructure, never shared with third parties.
- **Zero external dependencies** — No database service needed; everything runs in a single container with file-based storage.
- **Beautiful & functional** — Sankey diagrams, multi-year overviews, and CSV import make budgeting intuitive and visual.
- **Multi-user ready** — Support multiple users with JWT-based authentication and per-user data isolation.
- **PWA support** — Install as a native-like app on any device for quick access to your budget.

## Common Use Cases

- **Personal budgeting** — Track monthly income and expenses across categories, visualize spending flows with Sankey diagrams.
- **Household finance management** — Multiple family members can each have their own account with separate budgets.
- **Year-over-year financial review** — Compare budgets across years to identify trends and adjust spending habits.
- **CSV import & migration** — Import existing financial data from spreadsheets or other tools via CSV.
- **Privacy-conscious expense tracking** — Host your own budgeting tool instead of relying on cloud services that monetize your data.

## Dependencies for Deployment

### Deployment Dependencies

| Dependency | Details |
|---|---|
| **Docker Image** | `ghcr.io/simonwep/ocular:latest` — pre-built multi-arch image from GitHub Container Registry |
| **Exposed Port** | `80` (Caddy reverse proxy serves both SPA and API) |
| **Persistent Volume** | Mount at `/data/genesis` — required for storing user data and budgets |
| **`GENESIS_JWT_SECRET`** | **Required** — a strong random string used to sign JWT authentication tokens |
| **`GENESIS_CREATE_USERS`** | Optional — bootstrap initial users on first run (e.g., `admin!:yourpassword`, `!` denotes admin) |
| **External Database** | None — Genesis uses a built-in file-based key/value store |
| **Health Check** | `GET http://127.0.0.1:8080/health` (Genesis backend) |


## Similar templates

- [Betterlytics](https://railway.com/deploy/betterlytics) — Betterlytics is a cookieless analytics platform GDPR-compliant.
- [Finance Tracker](https://railway.com/deploy/finance-tracker-1) — Private multi-user household finance ledger with budgets and CSV import.
- [Matomo Analytics + MariaDB](https://railway.com/deploy/matomo-analytics-mariadb) — Privacy-friendly analytics with MariaDB and persistent volumes.

Open this page in a browser: https://railway.com/deploy/ocular
