Deploy Wallos
Track your recurring subscriptions and what they cost each year
wallos
Just deployed
/data
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.

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.




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, 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
/data—db/wallos.db, the SQLite database holding every subscription, user and setting, pluslogos/. 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
- Upstream: github.com/ellite/Wallos (GPL-3.0)
- Image: hub.docker.com/r/bellamy/wallos
- Runtime: PHP 8.3 with
pdo_sqlite,gd,intlandzip, behind nginx - Exchange rates: an optional free 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.
Template Content
wallos
gridalpha/wallos-railway