Free trials are a trap. You sign up, mean to cancel in a week, and eight months later you notice a charge for a streaming service you forgot existed. Spreadsheets are supposed to fix this, and they never do — nobody opens a spreadsheet on a Tuesday just to check if Disney+ renewed. Wallos does the checking for you, and running it in an LXC container on Proxmox VE means it lives on hardware you own, not on someone else's server with your card details attached.
This guide walks you through spinning up Wallos in a lightweight LXC container using the Proxmox VE Community Scripts helper, then getting your first subscription tracked. If you've never touched an LXC container before, that's fine — we'll explain what one actually is before asking you to create one.
What You Will Learn
- What Wallos is and what problem it actually solves
- What an LXC container is, in plain terms, and why it's a good fit for this app
- How to deploy Wallos using the community-maintained helper script
- How to find your container's IP address and log in for the first time
- What each command in the process is actually doing
- The errors people run into most often, and how to fix them
- A few settings worth changing before you forget about the container entirely
What Is This Feature?
Wallos is an open-source, self-hosted subscription tracker built by a developer named Fenio (project name ellite/Wallos on GitHub). You add every recurring payment — Netflix, your gym, a domain renewal, that one API you pay for — and Wallos shows you what's due, what you're spending per month or year, and sends a notification before a renewal hits your card. It supports multiple currencies with live exchange rates, and it can notify you by email, Discord, Telegram, Pushover, Gotify, or a generic webhook.
An LXC container, if you haven't run into the term yet, is a lightweight way to run an isolated Linux environment on your Proxmox host. Unlike a full virtual machine, an LXC container shares the host's kernel instead of emulating its own hardware, so it starts in a second or two and uses a fraction of the RAM and disk a VM would need for the same job. For something like Wallos — a small PHP app with a SQLite database — a container is the right tool. You don't need to hand it a virtual CPU socket and 20 GB of disk to track your Spotify bill.
Rather than writing install steps from scratch, this guide uses the Proxmox VE Community Scripts project (the spiritual successor to the old tteck scripts many homelabbers already know). It's a collection of maintained bash scripts that build and configure an LXC container for a specific app in a couple of minutes, with sane defaults you can override if you want to.
Why Would You Use It?
You could track subscriptions in a Google Sheet. Plenty of people do. But a sheet doesn't notify you three days before a renewal, doesn't convert currencies, and doesn't give you a calendar view of what's coming up this month. A SaaS subscription tracker solves that, except now you're handing a third party a list of every service you pay for and, in some cases, letting them scan your inbox to build it automatically. That's a strange amount of trust to extend just to avoid a $12 renewal you forgot about.
Self-hosting Wallos on Proxmox keeps that data on hardware you control. It's also genuinely low-maintenance once it's running — there's no database server to babysit, since it uses SQLite by default, and the container itself needs about 1 GB of RAM. If you're already running a Proxmox homelab for Pi-hole, Jellyfin, or Home Assistant, this is a natural addition that won't make a dent in your resources.
Prerequisites
Before you start, make sure you have the following:
- A working Proxmox VE host — 8.4 or later, including 9.x. The community script checks compatibility automatically.
- Root access to the Proxmox web interface or SSH access to the host.
- At least 5 GB of free space on the storage you plan to use for the container's disk, and roughly 1 GB of spare RAM.
- A network bridge (usually vmbr0) with DHCP available, or a static IP plan if your network doesn't hand those out.
- A browser on a device that's on the same network as your Proxmox host.
You don't need any Docker knowledge for this method. The community script installs Wallos natively inside the container using Apache and PHP — no container-inside-a-container layering.
Step-by-Step Tutorial
Step 1: Open the Proxmox Shell
Log in to the Proxmox web interface, click your node in the left-hand tree (the entry with your server's hostname), then click >_ Shell near the top right. This opens a root terminal on the Proxmox host itself — not inside any container yet.
Step 2: Run the Community Script
Paste this command into the shell and press Enter:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallos.sh)"
This downloads the Wallos install script from the community-scripts GitHub repository and runs it immediately. It's the same pattern used for the hundreds of other apps in that project — only the filename at the end (wallos.sh) changes between them.
Step 3: Walk Through the Prompts
The script opens a text-based menu. You'll get two choices: Default Settings or Advanced.
Default Settings is fine for most people and will create a container with these specs:
| Setting | Default Value |
|---|---|
| OS | Debian 13 |
| CPU cores | 1 |
| RAM | 1024 MB |
| Disk size | 5 GB |
| Container type | Unprivileged |
| Network | DHCP on vmbr0 |
If you want a static IP, a different bridge, or more disk because you plan to run other things in the same container later (you shouldn't — one app per container is the point), choose Advanced instead and step through each field. Everything is editable after the fact too, through the container's Resources tab in the Proxmox GUI, so don't overthink this choice.
The script then downloads the Debian template if it isn't cached locally, creates the container, boots it, and installs Apache, PHP, and Wallos itself. On a typical homelab connection this takes somewhere between two and five minutes. You'll see a stream of green "OK" checkmarks as each stage finishes.
Step 4: Find the Container's IP Address
When the script finishes, it prints the access URL directly in the shell, something like:
Access it using the following URL:
http://192.168.1.147
If you missed it or closed the terminal, click on the new container in the Proxmox tree (it'll be named wallos with the next available VMID) and check the Summary tab — the IP address is listed under IPv4.
Step 5: Create Your Wallos Account
Open that IP address in a browser. There's no default username or password — Wallos doesn't ship with one on purpose. The first screen you see is a registration form. Fill in an email and password to create your admin account, and you're in.
Before doing anything else, go to Settings and set your default currency. Wallos defaults to USD, and changing it later doesn't retroactively convert subscriptions you've already entered — it just changes how new ones display.
Step 6: Add Your First Subscription
Click Add Subscription, name it, set the price, billing cycle, and the next renewal date. That's the whole workflow. Do this for everything you can think of — streaming, cloud storage, your domain registrar, that fitness app you keep meaning to cancel. It only takes real effect once you've entered more than one or two, so give it ten minutes up front.
Step 7: Set Up Notifications (Optional but Worth It)
Under Settings > Notifications, you can wire Wallos up to email (SMTP), Discord, Telegram, Pushover, Gotify, or a plain webhook. Pick whichever one you already check daily — a notification tool nobody looks at doesn't help. If you're already running ntfy or Gotify elsewhere in your homelab, this is a five-minute addition since the webhook option works with either.
Commands Explained
A short breakdown of the commands you've used, or might need next time you touch this container:
| Command | What It Does |
|---|---|
pct list | Run on the Proxmox host. Lists every LXC container, its VMID, status, and name — useful for finding the Wallos container's ID. |
pct enter <vmid> | Opens a root shell directly inside the specified container, without needing SSH. |
pct status <vmid> | Shows whether a container is running or stopped. |
systemctl status apache2 | Run inside the container. Confirms whether the web server serving Wallos is actually running. |
systemctl restart apache2 | Restarts Apache inside the container — the first thing to try if the web UI stops responding. |
journalctl -u apache2 -n 50 | Shows the last 50 log lines for Apache, which usually points straight at the cause of a crash or startup failure. |
To update Wallos later, don't reinstall from scratch. Re-run the exact same one-liner from Step 2 on the Proxmox host. The script detects the existing installation, backs up your SQLite database and uploaded logos, pulls the latest release, and restores your data automatically.
Common Errors
A few things that actually trip people up during this process:
- "Unable to resolve host" when running the curl command. Your Proxmox host has no working DNS or no internet access. Check
/etc/resolv.confon the host and confirm the host itself can reach the internet withping 1.1.1.1. - The container gets an IP but the page won't load. Usually a firewall issue, not a Wallos problem. If you've enabled the Proxmox firewall on the container or the datacenter level, make sure port 80 is allowed, or temporarily disable the firewall on that container to confirm that's the cause.
- Blank white page instead of the registration form. This is almost always a PHP error being swallowed silently. SSH or
pct enterinto the container and checkjournalctl -u apache2 -n 50for the actual error. - Script exits early with a storage error. The storage you selected during Advanced setup doesn't have enough free space for a 5 GB disk. Free up space or pick a different storage target.
Troubleshooting
If the container built successfully but you still can't log in, work through this in order:
First, confirm the container is actually running. From the Proxmox shell, run pct status <vmid>. If it says stopped, start it with pct start <vmid> and give it thirty seconds to boot before trying the URL again.
Second, confirm you're using the right IP. DHCP leases change. If it's been a while since you set this up and the container suddenly seems unreachable, check the Summary tab again — the address may have shifted after a router reboot.
Third, if Apache is running but the page still won't render, check disk space inside the container with df -h. A full disk on a 5 GB default allocation is a common cause of half-broken web apps, especially once you've got months of subscription history and uploaded service logos accumulating.
If none of that explains it, pull the Apache error log directly:
tail -n 100 /var/log/apache2/error.log
That file tells you exactly what's failing, almost every time.
Best Practices
A few habits worth building in from day one:
- Back up the container with Proxmox's built-in vzdump before you rely on it for real financial tracking. It's a small container — backups take seconds and cost almost nothing in storage.
- Set a static IP or a DHCP reservation on your router. Losing track of a renewed IP address for a container you check once a month is an easy way to "lose" the app entirely.
- Turn on at least one notification method. A subscription tracker you never get pinged by is just a spreadsheet with extra steps.
- Re-run the install script periodically to pick up Wallos updates rather than letting it sit untouched for a year. It's the same command every time, and it preserves your data.
- Don't put this container on the same VLAN as anything exposed to the internet. It doesn't need to be internet-facing — access it over your local network or through a VPN like Tailscale or WireGuard if you want remote access.
Frequently Asked Questions
Does Wallos need a separate database server?
No. It uses SQLite by default, which is just a file on disk — nothing to install or maintain separately.
Can I run Wallos in a VM instead of an LXC container?
Yes, but there's little reason to. Wallos is a small PHP app, and a container gives you the same result with a fraction of the overhead a VM needs for its own kernel and virtual hardware.
Is my financial data sent anywhere?
Only if you explicitly enable a Fixer API key for currency conversion or connect an AI provider for spending recommendations. Neither is required, and both are off by default.
What happens to my data when I update?
The community script backs up your SQLite database and uploaded logos automatically before pulling the new release, then restores them afterward. You shouldn't lose anything by re-running the same install command.
Can multiple people use one Wallos instance?
Wallos supports household members within a single account for organizing shared subscriptions, but it isn't designed as a true multi-tenant app with separate logins per family member.
Conclusion
Ten minutes of setup and a container using less RAM than a single browser tab buys you a running total of every subscription draining your accounts, plus a heads-up before the next one hits. That's a good trade. If you've already got a Proxmox host running something else in your homelab, there's genuinely no reason not to add this one — it's small, it's boring in the best way, and it does the one job it's built for without asking anything else of you.