Railway

Deploy Wallos

Track your recurring subscriptions and what they cost each year

Deploy Wallos

Just deployed

/data

Wallos logo

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, a thin wrapper around the official 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

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 key there — until you do, exchange rates stay at the values shipped with the install.

Wallos dashboard showing upcoming payments and monthly budget

Wallos subscription list with logos and renewal dates

Wallos statistics page with cost per day and yearly totals

Wallos calendar marking renewal dates across August 2026

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

  • Wallosbellamy/wallos:latest, built from gridalpha/wallos-railway. nginx, PHP-FPM 8.3 and the cron daemon in one container, serving the web UI on port 80.
  • Volume at /datadb/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

VariableDefaultWhat it does
PORT80Port nginx listens on and Railway probes
TZEtc/UTCTimezone for renewal dates and scheduled jobs
WALLOS_DATA_DIR/dataVolume path for the database and logos
SSRF_ALLOWLISTunsetHosts webhook notifications may reach
OIDC_ENABLEDunsetTurns on external single sign-on
PUID / PGID82User and group the app runs as

Deployment Dependencies

Hardware Requirements for Self-Hosting Wallos

ResourceMinimumRecommended
CPU0.5 vCPU1 vCPU
RAM256 MB512 MB
Storage1 GB volume5 GB volume
RuntimePHP 8.3, nginx, SQLitePHP 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.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

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

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

Letta
51