# 01-wallos.md

kstack:
  book: Centerpoint Home Lab
  chapter: Finance
  page: Wallos
  tags: [wallos, subscriptions, finance, sqlite]
---

## Overview

Wallos is a self-hosted subscription and recurring payment tracker. It tracks
monthly, annual, and custom-interval subscriptions, calculates total spending,
and provides a visual dashboard of recurring costs. Data is stored in a SQLite
database. Authentication is Wallos' own built-in user system — no Authentik
integration. External-only route.

## Access

| Type     | URL                                     | Auth                          |
|----------|-----------------------------------------|-------------------------------|
| External | `https://wallos.jeevesconsults.ca`      | GeoBlock + CrowdSec (own auth) |

No internal `home.local` route configured.

## Configuration

**Image:** `bellamy/wallos:latest`  
**Runtime:** PHP 8.3

### Traefik Labels

```yaml
traefik.http.routers.wallos.rule: Host(`wallos.jeevesconsults.ca`)
traefik.http.routers.wallos.entrypoints: websecure
traefik.http.routers.wallos.tls.certresolver: letsencrypt
traefik.http.routers.wallos.middlewares: plex-geoblock@file,crowdsec-bouncer@file,wallos-headers
traefik.http.middlewares.wallos-headers.headers.customrequestheaders.X-Forwarded-Proto: https
traefik.http.services.wallos.loadbalancer.server.port: 80
```

## Volumes / Bind Mounts

| Host Path                                | Container Path                       | Purpose                |
|------------------------------------------|--------------------------------------|------------------------|
| `/home/jeeves/docker/wallos/db`          | `/var/www/html/db`                   | SQLite database        |
| `/home/jeeves/docker/wallos/logos`       | `/var/www/html/images/uploads/logos` | Subscription logos     |

Wallos stores all data in a SQLite file within the `db` bind mount. No external
database dependency.

## Notes / Gotchas

- Wallos manages its own user accounts — no SSO or Authentik integration.
  Credentials are stored in the SQLite database.
- The `X-Forwarded-Proto: https` middleware is required for PHP to detect HTTPS
  correctly when behind a reverse proxy.
- Service logos are persisted in the `logos` bind mount. Both `db/` and `logos/`
  must be backed up together to fully restore the instance.
- No currency exchange rate API key is required by default — Wallos supports
  manual rate entry.

---
*Last Updated: 2026-06-17*