---
title: "Every Subscription I Own Now Lives on One Dashboard"
description: "Wallos is a self-hosted subscription tracker that shows every recurring charge in one place, with due-date notifications, multi-currency totals and statistics. Know exactly what your subscriptions cost you each month."
author: "SelfHostedApp"
pubDate: 2026-07-24T00:00:00.000Z
tags: ["guide", "docker", "finance", "wallos"]
canonical_url: "https://selfhostedapp.com/blog/subscription-tracking-with-wallos/"
source_url: "https://selfhostedapp.com/blog/subscription-tracking-with-wallos.md"
---

# Every Subscription I Own Now Lives on One Dashboard

import { Picture } from 'astro:assets';
import WallosHero from '../../assets/images/heroes/subscription-tracking-with-wallos-hero.jpg';

<Picture src={WallosHero} formats={['avif', 'webp']} widths={[400, 800, 1200]} sizes="(min-width: 1024px) 768px, 100vw" alt="Wallos" class="rounded-xl border border-cream-300 dark:border-ink-700" />

Writing this blog has been an extended campaign against subscriptions, Bitly and Calendly and Zapier and Netflix and Spotify and Audible all got the boot in one post or another, and somewhere around the sixth cancellation I realized I had a new problem, which is that the survivors had become invisible. The services I kept were spread across two cards and a UPI autopay mandate and an annual renewal I had forgotten was annual, and the only system tracking them was a feeling of mild dread whenever a charge appeared, which is a terrible database.

Wallos is the database, an open-source self-hosted subscription tracker, eight thousand stars of people who had the same dread, and the whole app is one honest question, what do I pay, to whom, how often, and when is the next one due. You add a subscription, pick a category and a currency and a cycle, and it finds the logo automatically so the dashboard becomes a grid of familiar faces with the monthly total sitting on top, and the number is the feature, because the total for my household was forty percent higher than the number I would have guessed before I installed it.

The due-date view is what changed my behavior, because every subscription shows when it next charges, the upcoming payments line up on a calendar, and the monthly breakdown stopped the specific annoyance of an annual renewal landing in a month that already had three other big charges. Notifications go out before a payment hits, over email or Telegram or Discord or Gotify or a webhook, which in my stack means ntfy like everything else, so a renewal pings my phone three days ahead and the decision to keep or cancel happens with time to act, instead of the morning after.

The compose file is one container and two folders.

```yaml
services:
  wallos:
    image: bellamy/wallos:latest
    restart: unless-stopped
    ports:
      - "8282:80"
    environment:
      TZ: Asia/Kolkata
    volumes:
      - ./wallos-db:/var/www/html/db
      - ./wallos-logos:/var/www/html/images/uploads/logos
```

The database is SQLite living in that first folder, the logos folder holds the artwork it fetches, and the first page load asks you to create an account after which the settings walk you through currency and categories. One thing the container does not bring is the scheduler, Wallos checks for due subscriptions through its own cron job, and the docs ship a companion cron container definition for exactly this, so without it the app works but the notifications never fire, which is the difference between a dashboard and an assistant, and I run the cron container against the same volumes to keep the pings flowing.

The features that surprised me are the ones that make it feel maintained rather than abandoned, multi-currency support with conversion through the Fixer API so my dollar subscriptions and rupee subscriptions roll into one honest total, statistics that show spending by category over time, OIDC single sign-on if Authentik already guards your stack, and an AI recommendation feature that can run against a local Ollama model to suggest subscriptions worth questioning, which I have not enabled because the dashboard already made me uncomfortable in the useful way.

The uncomfortable part is the point, and I want to defend it, because the monthly total sitting on top of that grid is a number the subscription economy is designed to keep vague, each charge individually defensible and collectively a car payment. Mine dropped by another eleven hundred rupees a month in the first week, two trials I had forgotten to cancel and a cloud plan that Immich made redundant a year ago, and the survivors are all things I actually use, which is the entire goal.

The subscriptions I kept are now watched by a server I pay for once, with no per-seat pricing and no annual surprise, and the ledger itself is free forever. It turns out the best subscription tracker is the one that is not a subscription.

If the recurring charges deserve a scoreboard, subscribe to the newsletter.
