PassNAT LogoPassNAT

OpenBudgeteer 架在自己 NAS:给家里每类开销建一个「桶」,出门也知道还能花多少

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

OpenBudgeteer 是一个开源的「桶预算」记账工具。做法是先把每个月的收入分进不同的桶——房租、吃饭、油费、长期储蓄、旅游基金,每花一笔钱就从对应的桶里扣。打开首页,每个桶还剩多少、这个月还能花多少,一眼就能看到。

它跟记流水账的思路不一样:不是月底了再回头分析钱花到哪去了,而是发工资那天先把每类钱的额度划好,花的时候心里就有数。

后端是 .NET,前端跑在浏览器里,官方用 Compose 起的是一组三件套:应用本体、MariaDB 数据库、Redis 缓存。

项目地址:点我跳转

部署安装

只要能跑 Docker 的 NAS 都能装,下面用飞牛 NAS 演示。三个容器,一份 Compose 编排就够了。

一、想在外面也能用,先把 8080 端口放出去

只在局域网里用,这一步可以跳过,直接看第二步。要让手机在外面也能打开,就在飞牛的「应用中心」里搜 PassNAT,装上这个穿透插件,打开它,点「创建隧道」:名字随便起(不超过 12 个字符),本地 IP 留默认的 127.0.0.1,本地端口填 8080,点开、按一下电源,状态变成运行中,详情里那个公网地址就是你在外面要打开的网址。

不是飞牛的系统,PassNAT 文档的「连接使用」里有其他系统的连接教程:点我跳转。

二、新建 Compose 项目

打开飞牛的「Docker」应用,切到「Compose」标签,点右上角的新增项目。项目名称填 openbudgeteer,路径在「我的文件」下面挑一个空文件夹,来源选「创建 docker-compose.yml」,把下面这段整个贴进去:

1services:
2 openbudgeteer:
3 image: axelander/openbudgeteer:latest
4 container_name: openbudgeteer
5 ports:
6 - "8080:8080"
7 environment:
8 - CONNECTION_PROVIDER=mariadb
9 - CONNECTION_SERVER=openbudgeteer-db
10 - CONNECTION_PORT=3306
11 - CONNECTION_DATABASE=openbudgeteer
12 - CONNECTION_USER=openbudgeteer
13 - CONNECTION_PASSWORD=换成你自己的口令
14 - CONNECTION_ROOT_PASSWORD=换成你自己的口令
15 - CONNECTION_REDIS_SERVER=openbudgeteer-redis
16 - APPSETTINGS_CULTURE=zh-CN
17 - APPSETTINGS_DEMO_DATA=false
18 depends_on:
19 - openbudgeteer-db
20 - openbudgeteer-redis
21 openbudgeteer-db:
22 image: mariadb:11
23 environment:
24 MYSQL_ROOT_PASSWORD: 换成你自己的口令
25 volumes:
26 - db-data:/var/lib/mysql
27 openbudgeteer-redis:
28 image: redis:7-alpine
29 volumes:
30 - redis-data:/data
31volumes:
32 db-data:
33 redis-data:

应用容器固定监听 8080,冒号前面那个数字是 NAS 上的端口,被别的项目占了就改它,后面的不用动。数据库口令出现在三个地方:应用的两个 CONNECTION_ 变量和数据库的 MYSQL_ROOT_PASSWORD,把它们换成同一个你自己的口令,三处必须一致。

APPSETTINGS_CULTURE 决定金额和日期的格式,填 zh-CN 金额就显示成人民币符号;这个项目没有中文界面,界面文案还是英文。

APPSETTINGS_DEMO_DATA 打开会自带一套示例账本(两个账户、八笔收支、几个桶),第一次想先看看界面长什么样,可以临时改成 true,熟悉完再改回 false、清掉数据库卷重新起。

勾上「创建项目后立即启动」,点确认。三个镜像下载加上数据库初始化,第一次会等一会儿,容器状态都变成「运行中」就可以打开网页了。

三、第一次打开:建账户、建桶、分预算

浏览器打开 http://NAS的局域网地址:8080,没有登录页,直接就是账本首页。这个项目本身不带账号体系,打开就是全部权限。

第一步去左侧的 Account 建账户,比如一个「日常卡」、一个「储蓄卡」,把余额填进去。

第二步去 Bucket 建桶。建议先建两个组:一个是「日常开销」,里面放房租、吃饭、油费;另一个是「长期储蓄」,里面放备用金、旅游基金。每个桶设一个目标额度(Want),比如吃饭每月 3000。

第三步是桶预算的关键动作:发工资那天点 Distribute Budget,把收入分配进各个桶。分完之后,每个桶的余额就是「这一类还能花多少」。

平时花钱就在 Transaction 里记一笔:选账户、填收付方和金额、勾上这笔钱属于哪个桶。记完回桶页看,对应的桶余额就减下去了。

左侧的 Report 是报表:月度收支柱状图、账户余额曲线,还有按桶统计的花费。想看看家里钱的大致走向,看这一页就够了。

几点说明

没有内置登录。 这是部署前最该注意的一条:应用打开就是全部权限,挂到公网前一定在隧道那一层加上网页访问口令。

数据在 MariaDB 的数据卷里。 备份就是备份 db-data 这个卷;换机器时把它一起搬过去。

界面是英文的。 金额符号、日期格式跟着 APPSETTINGS_CULTURE 走,填 zh-CN 就会显示人民币和中文日期。

三个容器。 比单容器应用多占一点内存和磁盘,好处是数据库独立,备份和迁移都清楚。

更新。 拉新镜像重建容器即可,数据库结构会在启动时自动迁移,动手前备份 db-data 更稳。