返回目录
开源项目其他开源工具类新手

GitHub - ellite/Wallos: Wallos: Open-source, self-hostable personal subscription tracker. Visualize your recurring expenses, manage your bud

Wallos: Open-Source Personal Subscription Tracker Table of Contents - Introduction - Features - Demo - Getting Started - Prerequisites - Baremetal - Docker - Installation - Baremetal - Updating - Docker - Docker-Compose - Usage - Screenshots - OIDC - API

0 次阅读2026/09/16 发布
GitHub - ellite/Wallos: Wallos: Open-source, self-hostable personal subscription tracker. Visualize your recurring expenses, manage your bud 来源图片

社区作者 · zZz

它解决什么问题

Wallos: Open-Source Personal Subscription Tracker

Table of Contents

  • Introduction
  • Features
  • Demo
  • Getting Started
  • Prerequisites
  • Baremetal
可复制命令
Docker
  • Installation
  • Baremetal
  • Updating
可复制命令
Docker
  • Docker-Compose
  • Usage
  • Screenshots
  • OIDC
  • API Documentation
  • Contributing
  • Contributors
  • Translations
  • License
  • Links

Introduction

Wallos is a powerful, open-source, and self-hostable web application designed to empower you in managing your finances with ease.

Say goodbye to complicated spreadsheets and expensive financial software – Wallos simplifies the process of tracking expenses and helps you gain better control over your financial life.

Features

  • Subscription Management: Keep track of your recurring subscriptions and payments, ensuring you never miss a due date.
  • Category Management: Organize your expenses into customizable categories, enabling you to gain insights into your spending habits.
  • Multi-Currency support: Wallos supports multiple currencies, allowing you to manage your finances in the currency of your choice.
  • Currency Conversion: Integrates with the Fixer API so you can get exchange rates and see all your subscriptions on your main currency.
  • Data Privacy: As a self-hosted application, Wallos ensures that your financial data remains private and secure on your own server.
  • Customization: Tailor Wallos to your needs with customizable categories, currencies, themes and other display options.
  • Sorting Options: Allowing you to view your subscriptions from different perspectives.
  • Logo Search: Wallos can search the web for the logo of your subscriptions if you don't have them available for upload.
  • Mobile view: Wallos on the go.
  • Statistics: Another perspective into your spendings.
  • Notifications: Wallos supports multiple notification methods (email, discord, pushover, telegram, gotify and webhooks). Get notified about your upcoming payments.
  • Multi Language support.
  • OIDC with OAuth
  • AI Recommendations with ChatGPT, Gemini or Local Ollama

Demo

If you want to try Wallos, a demo is available at https://demo.wallosapp.com .

The database is reset every 2 hours.

To access the demo use the following credentials:

Username : demo Password : demo

Getting Started

See instructions to run Wallos below.

Prerequisites

Baremetal

  • NGINX or APACHE websever running
  • PHP 8.3 with the following modules enabled:
可复制命令
curl
  • dom
  • gd
  • intl
  • openssl
  • sqlite3
  • zip
  • mbstring
  • fpm
命令
Docker
可复制命令
Docker

Installation

Baremetal

  • Download or clone this repo and move the files into your web root - usually /var/www/html
  • Rename /db/wallos.empty.db to /db/wallos.db
  • Open the app in your browser — migrations run automatically on the registration page
  • Add the following scripts to your cronjobs with crontab -e

0 1 * * * php /var/www/html/endpoints/cronjobs/updatenextpayment.php >> /var/log/cron/updatenextpayment.log 2>&1 0 2 * * * php /var/www/html/endpoints/cronjobs/updateexchange.php >> /var/log/cron/updateexchange.

log 2>&1 0 8 * * * php /var/www/html/endpoints/cronjobs/sendcancellationnotifications.php >> /var/log/cron/sendcancellationnotifications.log 2>&1 0 9 * * * php /var/www/html/endpoints/cronjobs/sendnotifications.php >> /var/log/cron/sendnotifications.log 2>&1

0 * /6 * * * php /var/www/html/endpoints/cronjobs/checkforupdates.php >> /var/log/cron/checkforupdates.log 2>&1 30 1 * * 1 php /var/www/html/endpoints/cronjobs/storetotalyearlycost.php >> /var/log/cron/storetotalyearlycost.

log 2>&1 30 3 * * 1 php /var/www/html/endpoints/cronjobs/generaterecommendations.php weekly >> /var/log/cron/generaterecommendations.log 2>&1 0 4 1 * * php /var/www/html/endpoints/cronjobs/generaterecommendations.

php monthly >> /var/log/cron/generaterecommendations.log 2>&1

  • /2 * * * * php /var/www/html/endpoints/cronjobs/sendverificationemails.php >> /var/log/cron/sendverificationemail.log 2>&1
  • /2 * * * * php /var/www/html/endpoints/cronjobs/sendresetpasswordemails.php >> /var/log/cron/sendresetpasswordemails.log 2>&1
  • If your web root is not /var/www/html/ adjust the cronjobs above accordingly.

Updating

  • Re-download the repo and move the files into the correct folder or do git pull (if you used git clone before)
  • Check the Prerequisites and install / enable the missing ones, if any.
  • Run http://domain.example/endpoints/db/migrate.php if you are logged in, or via CLI run:

php /var/www/html/endpoints/db/migrate.php

命令
Docker
命令
docker run -d --name wallos -v /path/to/config/wallos/db:/var/www/html/db \

-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \ -e TZ=Europe/Berlin -p 8282:80 --restart unless-stopped \ bellamy/wallos:latest

Disable healthcheck (optional, e.g., for Docker <25 or faster startup reporting):

命令
docker run -d --name wallos -v /path/to/config/wallos/db:/var/www/html/db \

-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \ -e TZ=Europe/Berlin -p 8282:80 --restart unless-stopped \ --health-cmd=NONE \ bellamy/wallos:latest

命令
Docker Compose

services: wallos: container_name: wallos image: bellamy/wallos:latest ports:

environment: TZ: 'America/Toronto'

  • "8282:80/tcp"

Volumes store your data between container upgrades

volumes:

restart: unless-stopped

  • './db:/var/www/html/db'
  • './logos:/var/www/html/images/uploads/logos'

Disable healthcheck (optional, e.g., for Docker <25 or faster startup reporting):

services: wallos: container_name: wallos image: bellamy/wallos:latest ports:

environment: TZ: 'America/Toronto' volumes:

restart: unless-stopped healthcheck: test: ["NONE"]

  • "8282:80/tcp"
  • './db:/var/www/html/db'
  • './logos:/var/www/html/images/uploads/logos'

Usage

Just open the browser and open ip:port of the machine running wallos.

On the first time you run wallos a user account must be created.

命令
Go to settings and personalise your Avatar and add members of your household. While there add / remove any categories and currencies.

Get a free API Key from Fixer and add it in the settings.

If you want to trigger an Update of the exchange rates, change your main currency after adding the API Key, and then change it back to your preferred one.

Screenshots

See more screenshots

OIDC

OIDC can be enabled on the Admin page and can be used with providers that support OAuth. Wallos can also resolve OIDC settings declaratively from environment variables.

When an OIDC_* variable is set, it overrides the corresponding database value at runtime without rewriting the database.

If OIDC_ISSUER is set, Wallos will fetch /.well-known/openid-configuration at runtime and use discovery for the authorization, token, and user info endpoints unless a more specific endpoint variable is also set.

Environment Variable UI Equivalent

OIDC_ENABLED Enable OIDC/OAuth

OIDC_PROVIDER_NAME Provider Name

OIDC_CLIENT_ID Client ID

OIDC_CLIENT_SECRET Client Secret

OIDC_CLIENT_SECRET_FILE Client Secret

OIDC_ISSUER No direct UI field

OIDC_AUTH_URL Auth URL

OIDC_TOKEN_URL Token URL

OIDC_USERINFO_URL User Info URL

OIDC_REDIRECT_URL Redirect URL

OIDC_LOGOUT_URL Logout URL

OIDC_USER_IDENTIFIER User Identifier Field

OIDC_SCOPES Scopes

OIDC_AUTO_CREATE_USER Create user automatically

OIDC_DISABLE_PASSWORD_LOGIN Disable password login

OIDC_REQUIRE_EMAIL_VERIFIED Require verified email for account linking

SSRF allowlist

Wallos blocks webhook, SMTP, and OIDC endpoint URLs that resolve to private/link-local/loopback addresses unless the host is present in the Security Settings allowlist.

Normally that allowlist is edited through the Admin UI, which requires a manual login before OIDC can be used against an identity provider on a private address (e.g. a self-hosted IdP at auth.example.com ).

Setting the SSRF_ALLOWLIST environment variable overrides the database value entirely (same full-override semantics as the OIDC_* variables above), so the allowlist can be provisioned on first boot with no manual UI step.

It accepts a comma-separated list of hosts/IPs, optionally with a port (e.g. SSRF_ALLOWLIST=auth.example.com,192.168.1.100:8123 ). While set, the Security Settings field in the Admin UI is shown but disabled.

API Documentation

Wallos provides a comprehensive API that allows you to interact with the application programmatically. The API documentation is available at https://api.wallosapp.com/ .

Contributing

Feel free to open Pull requests with bug fixes and features. I'll do my best to keep an eye on those.

Feel free to open issues with bug reports or feature requests. Bug fixes will take priority.

I welcome contributions from the community and look forward to working with you to improve this project.

Contributors

Translations

If you want to contribute with a translation of wallos:

  • Add your language code to includes/i18n/languages.php in the format "en" => ["name" => "English", "dir" => "ltr"], . Please use the original language name and not the english translation.
  • Create a copy of the file includes/i18n/en.php and rename it to the language code you used above. Example: pt.php for "pt" => ["name" => "Português", "dir" => "ltr"],.
  • Translate all the values on the language file to the new language. (Incomplete translations will not be accepted).
  • Create a copy of the file scripts/i18n/en.js and rename it to the language code you used above. Example: pt.js for "pt" => ["name" => "Português", "dir" => "ltr"],.
  • Translate all the values on the language file to the new language. (Incomplete translations will not be accepted).

License

This project is licensed under the GNU General Public License, Version 3 - see the LICENSE.md file for details.

Why GPLv3?

I chose the GNU General Public License version 3 (GPLv3) for this project because it ensures that the software remains open source and freely available to the community.

GPLv3 mandates that any derivative works or modifications must also be released under the same license, promoting the principles of software freedom.

I strongly believe in the importance of open source software and the collaborative nature of development, and I invite contributors to help improve this project.

Links

  • The author: henrique.pt
  • Wallos Landingpage: wallosapp.com
  • Join the conversation: Discord Server

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

  • Getting Started
  • Prerequisites
  • Baremetal
可复制命令
Docker
  • Installation
  • Baremetal
  • Updating
可复制命令
Docker

Introduction Wallos is a powerful, open-source, and self-hostable web application designed to empower you in managing your finances with ease.

Say goodbye to complicated spreadsheets and expensive financial software – Wallos simplifies the process of tracking expenses and helps you gain better control over your financial life. Features

Demo If you want to try Wallos, a demo is available at https://demo.wallosapp.com . The database is reset every 2 hours. To access the demo use the following credentials: Username : demo Password : demo Getting Started See instructions to run Wallos below. Prerequisites Baremetal

  • Docker-Compose
  • Usage
  • Screenshots
  • OIDC
  • API Documentation
  • Contributing
  • Contributors
  • Translations
  • License
  • Links
  • Subscription Management: Keep track of your recurring subscriptions and payments, ensuring you never miss a due date.
  • Category Management: Organize your expenses into customizable categories, enabling you to gain insights into your spending habits.
  • Multi-Currency support: Wallos supports multiple currencies, allowing you to manage your finances in the currency of your choice.
  • Currency Conversion: Integrates with the Fixer API so you can get exchange rates and see all your subscriptions on your main currency.
  • Data Privacy: As a self-hosted application, Wallos ensures that your financial data remains private and secure on your own server.
  • Customization: Tailor Wallos to your needs with customizable categories, currencies, themes and other display options.
  • Sorting Options: Allowing you to view your subscriptions from different perspectives.
  • Logo Search: Wallos can search the web for the logo of your subscriptions if you don't have them available for upload.
  • Mobile view: Wallos on the go.
  • Statistics: Another perspective into your spendings.
  • Notifications: Wallos supports multiple notification methods (email, discord, pushover, telegram, gotify and webhooks). Get notified about your upcoming payments.
  • Multi Language support.
  • OIDC with OAuth
  • AI Recommendations with ChatGPT, Gemini or Local Ollama
  • NGINX or APACHE websever running
  • PHP 8.3 with the following modules enabled:
可复制命令
curl
  • dom
  • gd
  • intl
  • openssl
  • sqlite3
  • zip
  • mbstring
  • fpm
命令
Docker
可复制命令
Docker

Installation Baremetal

0 1 * * * php /var/www/html/endpoints/cronjobs/updatenextpayment.php >> /var/log/cron/updatenextpayment.log 2>&1 0 2 * * * php /var/www/html/endpoints/cronjobs/updateexchange.php >> /var/log/cron/updateexchange.

log 2>&1 0 8 * * * php /var/www/html/endpoints/cronjobs/sendcancellationnotifications.php >> /var/log/cron/sendcancellationnotifications.log 2>&1 0 9 * * * php /var/www/html/endpoints/cronjobs/sendnotifications.php >> /var/log/cron/sendnotifications.log 2>&1

0 * /6 * * * php /var/www/html/endpoints/cronjobs/checkforupdates.php >> /var/log/cron/checkforupdates.log 2>&1 30 1 * * 1 php /var/www/html/endpoints/cronjobs/storetotalyearlycost.php >> /var/log/cron/storetotalyearlycost.

log 2>&1 30 3 * * 1 php /var/www/html/endpoints/cronjobs/generaterecommendations.php weekly >> /var/log/cron/generaterecommendations.log 2>&1 0 4 1 * * php /var/www/html/endpoints/cronjobs/generaterecommendations.

php monthly >> /var/log/cron/generaterecommendations.log 2>&1

Updating

php /var/www/html/endpoints/db/migrate.php

  • Download or clone this repo and move the files into your web root - usually /var/www/html
  • Rename /db/wallos.empty.db to /db/wallos.db
  • Open the app in your browser — migrations run automatically on the registration page
  • Add the following scripts to your cronjobs with crontab -e
  • /2 * * * * php /var/www/html/endpoints/cronjobs/sendverificationemails.php >> /var/log/cron/sendverificationemail.log 2>&1
  • /2 * * * * php /var/www/html/endpoints/cronjobs/sendresetpasswordemails.php >> /var/log/cron/sendresetpasswordemails.log 2>&1
  • If your web root is not /var/www/html/ adjust the cronjobs above accordingly.
  • Re-download the repo and move the files into the correct folder or do git pull (if you used git clone before)
  • Check the Prerequisites and install / enable the missing ones, if any.
  • Run http://domain.example/endpoints/db/migrate.php if you are logged in, or via CLI run:
命令
Docker
命令
docker run -d --name wallos -v /path/to/config/wallos/db:/var/www/html/db \

-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \ -e TZ=Europe/Berlin -p 8282:80 --restart unless-stopped \ bellamy/wallos:latest Disable healthcheck (optional, e.g., for Docker <25 or faster startup reporting):

命令
docker run -d --name wallos -v /path/to/config/wallos/db:/var/www/html/db \

-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \ -e TZ=Europe/Berlin -p 8282:80 --restart unless-stopped \ --health-cmd=NONE \

来源教程配图

Wallos
配图 1 · Wallos查看原图
Screenshot
配图 2 · Screenshot查看原图
Screenshot
配图 3 · Screenshot查看原图
Screenshot
配图 4 · Screenshot查看原图
Screenshot
配图 5 · Screenshot查看原图
Screenshot
配图 6 · Screenshot查看原图
Screenshot
配图 7 · Screenshot查看原图
Screenshot
配图 8 · Screenshot查看原图

适用场景

学习研究
开源项目实践