复式借贷记账法 Beancount (2) - 环境设置
本文介绍一些 Opinionated Beancount 环境设置
快速开始
首先使用Python的虚拟环境(可选)
1python3 -m venv ./venv
激活虚拟环境
1source venv/bin/activate
安装对应的Python包
1pip3 install beancount fava
生成一个模版账本
1bean-example > example.beancount
运行Web UI
1fava example.beancount
账本库
账本存放在哪里.
本地Git仓库
首先,因为版本控制的需求,建议把账本存放在一个本地的Git仓库。 不建议设置upstream/remote把其上传到Github等云端。毕竟账本的数据都是比较隐私的消费记录。
云储存
可以选择加密之后备份到云盘。
Mac上我推荐MacPaw的Encrypto, 好像也有Windows版本了
部署
Native 部署
MacOS Launchd
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0">
4<dict>
5 <key>Disabled</key>
6 <false/>
7 <key>KeepAlive</key>
8 <true/>
9 <key>EnvironmentVariables</key>
10 <dict>
11 <key>FAVA_HOST</key>
12 <string>0.0.0.0</string>
13 <key>BEANCOUNT_FILE</key>
14 <string>/path/to/your/main/beancount/files.beancount</string>
15 </dict>
16 <key>Label</key>
17 <string>local.beancount.fava</string>
18 <key>ProgramArguments</key>
19 <array>
20 <string>/usr/local/bin/fava</string>
21 </array>
22 <key>WorkingDirectory</key>
23 <string>/path/to/your/directory</string>
24</dict>
25</plist>
如果你用的venv 那么请记得添加环境变量
1 <key>EnvironmentVariables</key>
2 <dict>
3 <key>FAVA_HOST</key>
4 <string>0.0.0.0</string>
5 <key>BEANCOUNT_FILE</key>
6 <string>/path/to/your/main/beancount/files.beancount</string>
7 <key>PATH</key>
8 <string>/your/python/venv/site-packages/</string>
9 <key>PYTHONPATH</key>
10 <string>/your/python/ven/site-package/</string>
11 </dict>
更多 Launchd 的使用方法 请阅读我另外一篇介绍
Linux
Linux 请参考 systemd
Container 部署
https://hub.docker.com/u/fava
1docker run --detach --name="beancount" --publish 5000:5000 \
2 --volume $(pwd)/example.beancount:/input.beancount \
3 --env BEANCOUNT_FILE=/input.beancount fava
这里如果熟悉docker命令的话就很直观了,我还是简要介绍一下各个参数的意思
参数 | 简介 |
---|---|
detach | docker 在后台跑这个进程,可以用attach将其带回前台 |
name | 命名的容器 |
publish | 开放端口的映射 |
volumn | 将beancount文件用volumn挂载 |
env | 通过环境遍历的方式告诉fava哪里去找beancount文件 |
env | 通过环境遍历的方式告诉fava哪里去找beancount文件 |
更多信息,请参考
编辑器插件
Vim
Vim的插件 可以进行高亮,锁进以及错误检查。只许是用你最喜欢的插件管理器(我一般使用Vundle)加入这个插件即可。
Emacs
https://github.com/beancount/beancount/blob/master/editors/emacs/beancount.el
我用的是 spacemacs 只需要配置 user-config 指向 beancount repo中的emacs插件即可
1 (add-to-list 'load-path "~/code/beancount/editors/emacs/")
2 (require 'beancount)
3 (add-to-list 'auto-mode-alist '("\\.beancount\\'" . beancount-mode))
VSCode
VSCode 用的最多。VSCode beancount插件功能很不错,对齐,高亮,都不错。
自动补全唯一遗憾的就是好像目前还不能通过include
去发现已有的账户去补全。
https://marketplace.visualstudio.com/items?itemName=Lencerf.beancount
系列介绍
准备用一个系列的文章来介绍这个工具和一些技巧。 这些技巧有一些是我从已有的模版中找出来,也有一些是在Google Group里看到大家的推荐,自己又尝试出来的方法。