---
title: "Deploy Wallos"
description: "Track your recurring subscriptions and what they cost each year"
category: "Other"
url: https://railway.com/deploy/wallos-railway
---

# Deploy Wallos

Track your recurring subscriptions and what they cost each year

**[Deploy Wallos on Railway](https://railway.com/template/wallos-railway)**

- **Creator:** A3A
- **Category:** Other
- **Total deploys:** 1

## Template content

### wallos https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/wallos.png

- **Source:** https://github.com/gridalpha/wallos-railway
- **Public domain:** Yes

## Documentation

![Wallos logo](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR7syjiyoIy2-nDKxBZcpa7D3SnFZ8KgcsgMrBdXzsBjg&s)

# Deploy and Host Wallos on Railway

Wallos is an open-source personal subscription tracker that turns scattered recurring charges — streaming, cloud storage, SaaS seats, insurance, broadband — into one dashboard with real numbers attached. Enter a subscription once with its price, billing cycle and next payment date, and Wallos rolls that date forward, converts everything into your main currency, breaks spending down by category and payment method, and warns you before a charge lands. It runs on PHP over an embedded SQLite database, so it costs very little to host, and it suits anyone who wants a paid subscription manager's clarity without giving a company read access to their bank.

Self-host Wallos on Railway and the whole application is one service: nginx and PHP-FPM serving the web UI, with the scheduler behind renewals, exchange rates and notifications in the same container. A volume at `/data` holds the SQLite database and every logo, so data survives redeploys. The template builds from [gridalpha/wallos-railway](https://github.com/gridalpha/wallos-railway), a thin wrapper around the official [bellamy/wallos](https://hub.docker.com/r/bellamy/wallos) image that fits it to Railway's single-volume model, adds a database-aware health check and keeps the scheduled jobs running. No external database or object store is needed.

![Diagram of the Wallos service and its volume on Railway](https://res.cloudinary.com/rroe4rtk/image/upload/v1787716911/wallos-architecture.png)

## Getting Started with Wallos on Railway

Deploy the template, wait for the service to go green, then open the generated public URL. There are no default credentials: the first visitor reaches a registration page, and that account owns the instance. Register straight away — registration closes itself once the account exists, and later visitors are sent to the login page. Choose your main currency there, since every total is expressed in it.

You land on an empty dashboard. Click **New Subscription**, give it a name, price, billing cycle and next payment date, then use the magnifying-glass icon beside the name field to search for a logo, which Wallos fetches server-side onto the volume. Add three or four real subscriptions: the dashboard shows upcoming payments, monthly cost and annualised cost, and the statistics page adds cost per day and a forecast of your heaviest month. If the numbers add up and the logos render, app, database and volume are all healthy.

Next open the settings menu under your username. **Categories**, **Payment Methods** and **Household** members slice spending the way you think about it, and **Notifications** wires up reminders over email, Discord, Telegram, Gotify, Pushover or a webhook. If you track more than one currency, add a free [fixer.io](https://fixer.io) key there — until you do, exchange rates stay at the values shipped with the install.

![Wallos dashboard showing upcoming payments and monthly budget](https://res.cloudinary.com/rroe4rtk/image/upload/v1787716914/wallos-dashboard.png)

![Wallos subscription list with logos and renewal dates](https://res.cloudinary.com/rroe4rtk/image/upload/v1787716916/wallos-subscriptions.png)

![Wallos statistics page with cost per day and yearly totals](https://res.cloudinary.com/rroe4rtk/image/upload/v1787716921/wallos-statistics.png)

![Wallos calendar marking renewal dates across August 2026](https://res.cloudinary.com/rroe4rtk/image/upload/v1787716923/wallos-calendar.png)

## About Hosting Wallos

Most people underestimate their recurring spend because it arrives in small pieces across a dozen billing cycles. Wallos makes the total visible and warns you before each renewal without touching your bank. The trade is deliberate: you type them in yourself, and nothing about your finances leaves your server.

Key features:

- Any billing cycle — daily, weekly, monthly, yearly or one-time — with automatic roll-forward of the payment date
- Multi-currency with nightly conversion into one main currency
- Categories, payment methods and household members
- Renewal reminders over email, Discord, Telegram, Gotify, Pushover and webhooks
- Statistics and forecasting, a renewal calendar, and built-in logo search
- Multi-user with per-user data, optional OIDC sign-on, 25+ languages

This is one container doing three jobs: nginx serves static assets and passes PHP requests to PHP-FPM, PHP reads and writes a SQLite file, and a cron daemon advances payment dates, refreshes exchange rates and sends notices. Everything that must survive a restart lives on `/data`.

## Why Deploy Wallos on Railway

Railway suits Wallos because the app is small but stateful:

- One service, one volume — no database or cache to provision
- Persistent storage keeps subscriptions and logos across redeploys
- HTTPS and a public domain are issued automatically
- A database-aware health check catches a broken volume, not just a dead web server
- Scale RAM and CPU from the dashboard

## Common Use Cases

- **Personal finance visibility** — what streaming, software and utility subscriptions really cost monthly and yearly, in one currency
- **Freelancer and small-team SaaS tracking** — tools, domains and cloud spend in one place, with warning before an annual invoice
- **Household budgeting** — attribute shared subscriptions to household members and payment methods
- **Cancellation planning** — set a cancellation date and get warned in time to cancel

## Dependencies for Wallos

- **Wallos** — [`bellamy/wallos:latest`](https://hub.docker.com/r/bellamy/wallos), built from [gridalpha/wallos-railway](https://github.com/gridalpha/wallos-railway). nginx, PHP-FPM 8.3 and the cron daemon in one container, serving the web UI on port 80.
- **Volume at `/data`** — `db/wallos.db`, the SQLite database holding every subscription, user and setting, plus `logos/`. Back it up and you have backed up the install.

### Environment Variables Reference

| Variable | Default | What it does |
|---|---|---|
| `PORT` | `80` | Port nginx listens on and Railway probes |
| `TZ` | `Etc/UTC` | Timezone for renewal dates and scheduled jobs |
| `WALLOS_DATA_DIR` | `/data` | Volume path for the database and logos |
| `SSRF_ALLOWLIST` | unset | Hosts webhook notifications may reach |
| `OIDC_ENABLED` | unset | Turns on external single sign-on |
| `PUID` / `PGID` | `82` | User and group the app runs as |

### Deployment Dependencies

- Source repository: [github.com/gridalpha/wallos-railway](https://github.com/gridalpha/wallos-railway)
- Upstream: [github.com/ellite/Wallos](https://github.com/ellite/Wallos) (GPL-3.0)
- Image: [hub.docker.com/r/bellamy/wallos](https://hub.docker.com/r/bellamy/wallos)
- Runtime: PHP 8.3 with `pdo_sqlite`, `gd`, `intl` and `zip`, behind nginx
- Exchange rates: an optional free [fixer.io](https://fixer.io) key

## Hardware Requirements for Self-Hosting Wallos

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 0.5 vCPU | 1 vCPU |
| RAM | 256 MB | 512 MB |
| Storage | 1 GB volume | 5 GB volume |
| Runtime | PHP 8.3, nginx, SQLite | PHP 8.3, nginx, SQLite |

Storage is driven by uploaded logos; the database stays in low megabytes.

## Self-Hosting Wallos

To run Wallos outside Railway, use the official image with two directories mounted. The following is a `docker run` invocation:

```
docker run -d --name wallos \
  -p 8282:80 \
  -e TZ=Europe/Berlin \
  -v /srv/wallos/db:/var/www/html/db \
  -v /srv/wallos/logos:/var/www/html/images/uploads/logos \
  --restart unless-stopped \
  bellamy/wallos:latest
```

The equivalent Compose service, which is what upstream documents:

```
services:
  wallos:
    image: bellamy/wallos:latest
    ports:
      - "8282:80/tcp"
    environment:
      TZ: 'America/Toronto'
    volumes:
      - './db:/var/www/html/db'
      - './logos:/var/www/html/images/uploads/logos'
    restart: unless-stopped
```

Both mount the two directories separately. A Railway volume attaches to one mount path, so the template puts both under `/data` and links them back into place at startup.

## How Much Does Wallos Cost to Self-Host?

Wallos is free and open source under GPL-3.0 — no paid tier, no seat limit, no feature held back — so the only cost is infrastructure. On Railway that is one small service plus a volume, at the bottom of the pricing range because the app is idle almost all the time. The optional fixer.io key and LLM provider have free tiers of their own.

## FAQ

**What is Wallos?**

Wallos is an open-source, self-hosted web app for tracking recurring subscriptions and what they cost each month and year. You enter them manually, so it never needs bank or card access.

**What does this Railway template deploy?**

One service running the official Wallos container — nginx, PHP-FPM and the scheduler — with a volume at `/data` for the database and logos, plus an HTTPS domain.

**Why does Wallos need a volume instead of a database service?**

Wallos stores everything in an embedded SQLite file rather than an external database, and saves logos to disk. The volume keeps both across redeploys; without it, every restart would return an empty install.

**Is there a default username and password for Wallos?**

No. The first person to open the deployed URL reaches a registration form, and that account owns the instance. Registration then closes automatically, so register immediately after deploying.

**How do I get renewal notifications from self-hosted Wallos?**

Open Settings, then Notifications. Email needs SMTP credentials from a mail provider; Discord, Telegram, Gotify, Pushover and webhooks need only a URL or token. Set the days of warning, then enable per subscription.

**Can multiple people use one Wallos instance?**

Yes, with separate data per account. Since self-registration closes after the first account, the owner adds users from the admin panel or enables OIDC.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

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