Track Every Subscription Without Handing Your Data to Someone Else
Subscription costs have a way of expanding quietly. A streaming service here, a cloud storage plan there, a software license you forgot to cancel – and suddenly you’re spending significantly more per month than you realized. Most people turn to budgeting apps to solve this, but those apps are themselves subscriptions, and they sit on someone else’s server with your financial data attached. Wallos offers a different approach: a self-hosted, open-source subscription tracker you run on your own hardware, with no account required and no third party in the loop.
Wallos is a lightweight web application built specifically for tracking recurring expenses. It lets you log subscriptions, assign them to categories, set billing cycles, track currencies, and get a clear view of what you’re spending monthly or annually. The interface is clean and straightforward, and the entire stack runs inside a single Docker container – which means setup takes minutes, not hours.
This guide walks through the full process of getting Wallos running, configuring it for daily use, and making the most of its tracking features.

What You Need Before Starting
Wallos runs on any machine that supports Docker – a home server, a Raspberry Pi 4 or newer, a spare laptop running Linux, or even a cloud VPS if you prefer. You’ll need Docker and Docker Compose installed before anything else. On a Debian or Ubuntu-based system, you can install both with sudo apt install docker.io docker-compose -y followed by enabling the Docker service with sudo systemctl enable –now docker. If you’re on a different OS, Docker’s official documentation covers installation for every major platform.
Beyond Docker, you need a directory to store Wallos’s persistent data – specifically its SQLite database, which holds all your subscription records. Create a folder wherever you keep your Docker application data, something like /opt/wallos/data. You’ll reference this path in the configuration file. Wallos stores everything locally in that single database file, so backing it up is as simple as copying one file.
Port availability matters too. Wallos defaults to port 8282 for its web interface. If something else on your system is already using that port, you can remap it in the Docker Compose file. Confirm the port is open and not blocked by your firewall before proceeding – on UFW, that’s sudo ufw allow 8282/tcp.
Installing Wallos with Docker Compose
Create a new file called docker-compose.yml inside your Wallos directory. The configuration is minimal. Paste the following into that file:
version: ‘3’
services:
wallos:
image: bellamy1337/wallos:latest
container_name: wallos
ports:
– “8282:80”
volumes:
– /opt/wallos/data:/var/www/html/db
restart: unless-stopped
Save the file, then navigate to your Wallos directory in the terminal and run docker-compose up -d. Docker will pull the Wallos image and start the container in the background. The whole pull process typically takes under a minute on a reasonable connection. Once it’s running, open a browser and navigate to http://your-server-ip:8282. You’ll be greeted by the Wallos setup screen, where you’ll create a username and password for your account. There’s no email requirement, no verification step – just credentials you define locally.

After logging in for the first time, Wallos drops you directly into the dashboard. It’s sparse at first, because you haven’t added anything yet – but the layout makes the next steps obvious. There’s a prominent button to add your first subscription, and a settings panel in the navigation for configuring currencies, categories, and notification preferences. Spend a few minutes in settings before adding subscriptions. Set your primary currency, configure any secondary currencies if you pay for services in multiple currencies, and add the categories you want to use – things like entertainment, productivity, cloud storage, or security.
Adding and Managing Your Subscriptions
Adding a subscription takes about thirty seconds. Hit the add button, give the subscription a name, enter the cost, choose the billing cycle (monthly, yearly, quarterly, or weekly), set the next payment date, and assign it a category. Wallos includes a built-in logo search powered by a public API, so for most major services it will automatically pull in the correct logo and display it as an icon next to the subscription name. This is a small detail that makes the dashboard noticeably easier to scan at a glance.
The next payment date field is worth being precise about. Wallos uses that date to calculate upcoming payments and can display a notification banner on the dashboard when a renewal is approaching. You can configure the notification window in settings – how many days in advance you want to be warned. This alone replaces the need for calendar reminders or relying on your inbox to catch renewal emails before they charge.
For subscriptions billed annually, Wallos shows both the annual total and a monthly equivalent, which helps you compare costs across different billing cycles on a level basis. If you’re paying 99 dollars per year for one service and 12 dollars per month for another, the side-by-side monthly view makes the real cost comparison immediate. The dashboard summary at the top always shows your total monthly and annual spend across all active subscriptions, updated instantly as you add or edit entries.
Keeping Wallos Updated and Accessible
Wallos updates are handled through Docker. When a new image version is released, pull it with docker-compose pull from your Wallos directory, then restart the container with docker-compose up -d. Because your data lives in the mounted volume outside the container, updates never affect your subscription records. The database persists completely independently of the application image.
If you want to access Wallos from outside your home network, the cleanest approach is putting it behind a reverse proxy like Nginx Proxy Manager or Caddy, then assigning it a subdomain with an SSL certificate. This lets you reach your dashboard from a phone or laptop anywhere without exposing a bare IP and port to the internet. If you already run a reverse proxy for other self-hosted applications – say, for a self-hosted media server like Jellyfin – adding Wallos as another proxied service takes only a few minutes of configuration.
For backups, the entire database lives in a single file: /opt/wallos/data/wallos.db. Copy that file to a backup location on a schedule using a cron job, or include it in whatever backup routine you already use for your server. Losing that file means losing all your subscription records, so treat it like any other important data and back it up regularly.

Wallos won’t automatically detect subscriptions or connect to your bank – every entry is manual, which is the point. You decide exactly what gets tracked and nothing runs in the background reporting your habits to an external server. The manual entry process takes about ten minutes to set up your full subscription list from scratch, and after that it’s one or two minutes per new subscription. That tradeoff is what makes it a genuinely private tool, and for anyone who’s already spent time building a self-hosted stack, the maintenance overhead barely registers.





