今天是老苏居家隔离的第 53 天。
最近抗原还是每天做,差别是每天做 1 次还是 2 次,周六只做一次抗原,但不明白为什么总是要求在 8 点以前
平时也就罢了,好不容易周末想睡个懒觉,结果还是要早起,大家的反应是👇这样的
周日上午一次抗原 + 一次核酸
周日晚上先接到通知,周一只要做抗原
谁知道后面晚上 11 点多又来了新的通知,周一上午继续一次抗原 + 一次核酸
因为主任特别强调 “本次核酸相当重要”
,禁不住让大家浮想联翩,难道我们终于迎来可以出小区了?
老苏之前写过『 Firefly III 搭建个人财务记账平台 』 ,但坦率的说,Firefly III
在很多习惯上并不符合日常的记账习惯,所以老苏找到了 beancount-gs
。
什么是复式记账 ?
在会计学中,复式簿记(又称为复式记账法)是商业及其他组织上记录金融交易的标准系统。 该系统之所以称为复式簿记,是因为每笔交易都至少记录在两个不同的账户当中。 每笔交易的结果至少被记录在一个借方和一个贷方的账户,且该笔交易的借贷双方总额相等,即“有借必有贷,借贷必相等”。
什么是 beancount?
beancount
是一个优秀的开源复式记账工具,因为其基于文本记录的特性,难以拓展到移动端。
什么是 beancount-gs ?
beancount-gs
使用Golang
进行文本的读写和接口服务支持,利用bean-query
获取内容并解析,以Json
格式返回。并基于已实现的接口内置实现了前端页面(适配移动端)。
官方提供了 Demo
网站:https://beancount.xdbin.com
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 beancount-gs
,选择第一个 xdbin/beancount-gs
,双击直接下载
卷
在 docker
文件夹中,创建一个新文件夹 beancount
,并在其中建四个子文件夹,分别是 bak
、config
、data
和 icons
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/beancount/bak | /app/bak | 存放备份 |
docker/beancount/config | /app/config | 存放设置 |
docker/beancount/data | /data/beancount | 存放数据 |
docker/beancount/icons | /app/public/icons | 存放图标 |
端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
10000 | 80 |
环境
命令行中输入下面这行内容
sh -c "cp -rn /app/public/default_icons/* /app/public/icons && ./beancount-gs -p 80"
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷,老苏更喜欢命令行,搭建环境比较快捷
# 新建文件夹 beancount 和 子目录
mkdir -p /volume2/docker/beancount/{bak,config,data,icons}
# 进入 beancount 目录
cd /volume2/docker/beancount
# 运行容器
docker run -d \
--restart unless-stopped \
--name beancount-gs \
-p 10000:80 \
-v $(pwd)/bak:/app/bak \
-v $(pwd)/config:/app/config \
-v $(pwd)/data:/data/beancount \
-v $(pwd)/icons:/app/public/icons \
xdbin/beancount-gs:latest \
sh -c "cp -rn /app/public/default_icons/* /app/public/icons && ./beancount-gs -p 80"
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: "3.9"
services:
app:
container_name: beancount-gs
image: xdbin/beancount-gs:latest
ports:
- "10000:80"
# volumes 挂载目录会导 /app/public/icons 中的图标被覆盖,这里将默认图标在挂载后重新拷贝图标
command: >
sh -c "cp -rn /app/public/default_icons/* /app/public/icons && ./beancount-gs -p 80"
volumes:
- ./bak:/app/bak
- ./config:/app/config
- ./data:/data/beancount
- ./icons:/app/public/icons
然后执行下面的命令,在 portainer
中执行也是可以的
# 进入目录
cd /volume2/docker/beancount
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
运行
在浏览器中输入 http://群晖IP:10000
就能看到主界面
第一次需要初始化
账本存储位置
:账本数据和配置的磁盘存储路径;例如:laosu
,用年份会不会更好呢?账本开始日期
:账户的默认开始时间。(默认设置为 1970-01-01 即可);币种
:账本的默认币种,账户初始化时commodity
的默认值。注:beancount
本身没有币种的概念,其每个账户在创建的时候都可以指定一个commodity
,亦可以不指定。commodity
不一定是常规意义上的货币,可以是任意的自定义内容,例如房产,车子等;(默认设置为CNY
)平衡账户名称
:用户初始化账户金额,或者维持其他账户平衡的账户;是否备份数据
:开启后,当源文件被修改时,之前的版本会备份到/bak
文件夹;密钥
:只有服务的密钥匹配才允许完成配置项的设置。密钥可以在服务的启动日志中查看,每次服务启动,密钥都会被刷新。
接下来设置 账本名称
和 账本密码
需要注意的是:密码如果忘记,不支持找回。
进入账本后,默认是没有任何数据。
点 记账
可以开始记录第一笔交易了
“有借必有贷,借贷必相等”,所以必须要记录两个账户
账目记录完成后,支出明细一栏就出现了上一步记录的消费信息
在手机上的效果还是不错的,但没有 app
还是比较可惜
beancount-gs
在使用上更偏向于日常流水账的记录方式,在保留灵活性的同时,使得新用户更容易上手使用。如果遇到问题,建议看看官方提供的中文的使用说明书:https://www.yuque.com/chuyi-ble7p/beancount-gs 。
参考文档
BaoXuebin/beancount-gs: 基于 beancount 提供个人财务管理的 RESTful API 服务(包含前端页面)
地址:https://github.com/BaoXuebin/beancount-gs
beancount-gs 使用文档 · 语雀
地址:https://www.yuque.com/chuyi-ble7p/beancount-gs
beancount/beancount: Beancount: Double-Entry Accounting from Text Files.
地址:https://github.com/beancount/beancount