Why You Need a Subscription Tracker You Actually Control
Most people underestimate how much they spend on recurring subscriptions. Streaming services, cloud storage, software licenses, newsletters, VPNs – they pile up quietly, each charge small enough to ignore individually, collectively large enough to matter. Apps like Truebill or Rocket Money will track these for you, but they do it by accessing your bank data through third-party aggregators, which means your financial behavior lives on someone else’s server.
Wallos changes that equation entirely.
Wallos is a free, open-source subscription tracker you can self-host on your own server or home lab. It gives you a clean dashboard showing all your active subscriptions, their renewal dates, costs in any currency, and monthly or annual totals – with zero data leaving your machine. No account required, no bank linking, no privacy trade-off. If you already run Docker on a home server or VPS, getting Wallos up takes under ten minutes.

What You Need Before You Start
The requirements are minimal. You need a machine running Docker and Docker Compose – this can be a Raspberry Pi, a home server running Ubuntu or Debian, or any VPS you already manage. Wallos runs as a lightweight PHP application backed by SQLite, so it demands almost nothing in terms of resources. A machine with 512MB of RAM and a single CPU core handles it without complaint. If you have Docker installed and a basic comfort level with the terminal, you have everything you need.
You should also decide upfront whether you want Wallos accessible only on your local network or exposed to the internet through a reverse proxy. For most personal use cases, local-only access is the right call. If you do want to reach your dashboard remotely, you will need a reverse proxy like Nginx Proxy Manager or Caddy sitting in front of it, and ideally a domain with SSL. That setup is worth doing properly rather than rushing – exposing any self-hosted app on a raw port without HTTPS is a bad habit to build. If you are already running a self-hosted deployment platform like Coolify, you can deploy Wallos directly through it and let the platform handle the reverse proxy and SSL automatically.
Port 8282 is the default Wallos port, but you can remap it to anything that does not conflict with other services on your host. Check your existing containers before deploying to avoid collisions – a port conflict on startup is the most common first-time problem with any Docker-based app.
Deploying Wallos With Docker Compose
Start by creating a directory for the project. A clean folder structure keeps your self-hosted stack manageable as it grows.
Create the directory and the compose file:
- Run mkdir -p ~/wallos && cd ~/wallos to set up the folder.
- Create a file named docker-compose.yml using nano or your preferred editor.
- Paste in the following configuration:
docker-compose.yml contents:
- services:
- wallos:
- image: bellamy1802/wallos:latest
- container_name: wallos
- ports:
- – “8282:80”
- volumes:
- – ./data/wallos:/var/www/html/db
- – ./data/logos:/var/www/html/images/uploads/logos
- restart: unless-stopped
Save the file, then run docker compose up -d from the same directory. Docker pulls the image and starts the container in detached mode. Give it thirty seconds, then open a browser and navigate to http://your-server-ip:8282. You will land on the Wallos setup screen, where you create your admin username and password. That account is stored locally in the SQLite database file inside your mapped volume – the ./data/wallos folder you defined in the compose file. That folder is where all your subscription data will persist across container restarts and updates.

Adding Subscriptions and Configuring the Dashboard
Once logged in, the interface is straightforward. The main dashboard shows a monthly and annual cost overview at the top, with individual subscription cards below. Each card displays the service name, logo, category, cost, billing cycle, and next renewal date. Adding a new subscription takes about thirty seconds – click the plus button, fill in the name, amount, currency, billing cycle, and renewal date. Wallos supports multiple currencies natively and converts everything to a base currency of your choice using exchange rates it fetches automatically.
Categories are worth setting up properly from the start. Wallos lets you create custom categories – things like Entertainment, Productivity, Infrastructure, or Health – and tag each subscription accordingly. Once categorized, the dashboard gives you a breakdown of spending by category, which is where the tool actually earns its value. Seeing that you spend more on infrastructure tools than on entertainment every month tends to prompt honest reconsideration of what is actually being used versus what is just sitting there auto-renewing. You can also upload logos for each service, either from a URL or a file, which makes the dashboard visually scannable at a glance rather than just a text list.
Wallos also includes a notification system. Under settings, you can configure email alerts for upcoming renewals a set number of days in advance – three days, seven days, or whatever interval makes sense for how you manage finances. Getting a heads-up before a $200 annual charge hits your account is exactly the kind of low-friction reminder that prevents the subscription creep most budgeting apps try to solve. The notification setup requires SMTP credentials, so you will need an outgoing mail account – a simple Gmail app password or a service like Mailgun both work without issue.
Keeping Wallos Updated and Backed Up
Because Wallos uses SQLite, the entire database is a single file sitting in your mounted volume. Backing it up is as simple as copying that file to another location – a scheduled cron job that copies ./data/wallos/wallos.db to a backup destination once a day is all the redundancy you need for a tool at this scale. No database administration required.
Updating Wallos follows the standard Docker Compose workflow. Pull the latest image with docker compose pull, then restart the container with docker compose up -d. Because your data lives in the volume rather than inside the container, updates do not touch your subscriptions or settings. The whole process takes under a minute and requires no downtime planning.
One thing to watch for: if you have Wallos exposed publicly through a reverse proxy, check the release notes on the Wallos GitHub repository before updating. The project moves quickly, and occasional schema migrations happen between versions. These are handled automatically on startup, but knowing what changed helps you catch anything unexpected if the container restarts and the dashboard behaves differently than before.

Wallos will not automatically import subscriptions from your bank or email – every entry is manual, which is a feature as much as a limitation. The act of typing in each subscription forces you to reckon with it deliberately, and that friction is the whole point. The subscriptions you forget to add are usually the ones you forgot you were paying for.
Frequently Asked Questions
Does Wallos require connecting to my bank account?
No. Wallos is entirely manual. You enter each subscription yourself, which keeps all your data local and private.
Can I access Wallos from outside my home network?
Yes, but you need a reverse proxy with SSL in front of it. Exposing it on a raw port without HTTPS is not recommended.





