群晖商用级开源记账工具 Firefly III 深度介绍
今天介绍的这款开源记账软件 Firefly III,除了定时记账的功能,还有更加高级的功能,一起来看看。(ps:文章很长,可以收藏了慢慢看)
功能展示
快捷指令记账
快捷指令,选择记账类型
来源账户,可以在 Firefly III 中设置多种账户。
记账金额。
存钱罐
可以在 Firefly III 的存钱罐界面添加存钱计划,看看还有多久能买一张摩托车?
定期交易
设定一些规则和定期交易,让你记账更加的便捷。比如房贷,停车费,话费,免去定时重复操作的烦恼。
报表
每个账户到底支出了多少钱?你月光了么?通过报表功能可以一目了然。
项目地址
https://github.com/firefly-iii/firefly-iii
项目特性
- 完全自托管和隔离的,除非明确告知,否则永远不会联系外部服务器
- 创建定期交易来管理资金
- 基于规则的事务处理
- 复式记账系统
- 两步验证
安装部署
下面介绍两种部署的方法,通过Docker Compose和群晖部署,老宁会着重介绍如何通过群晖来手动部署。
Docker Compose
version: '3.3'
services:
app:
image: fireflyiii/core:latest
hostname: app
container_name: firefly_iii_core
restart: always
volumes:
- firefly_iii_upload:/var/www/html/storage/upload
env_file: .env
networks:
- firefly_iii
ports:
- 80:8080
depends_on:
- db
db:
image: mariadb:lts
hostname: db
container_name: firefly_iii_db
restart: always
env_file: .db.env
networks:
- firefly_iii
volumes:
- firefly_iii_db:/var/lib/mysql
cron:
#
# To make this work, set STATIC_CRON_TOKEN in your .env file or as an environment variable and replace REPLACEME below
# The STATIC_CRON_TOKEN must be *exactly* 32 characters long
#
image: alpine
restart: always
container_name: firefly_iii_cron
command: sh -c "echo "0 3 * * * wget -qO- http://app:8080/api/v1/cron/REPLACEME" | crontab - && crond -f -L /dev/stdout"
networks:
- firefly_iii
volumes:
firefly_iii_upload:
firefly_iii_db:
networks:
firefly_iii:
driver: bridge
环境变量可以在 https://github.com/firefly-iii/firefly-iii/blob/main/.env.example 获取,下载后需要根据自身情况进行修改。
群晖部署
如果要通过群晖进行手动部署,可以把整个过程分为三个部分:数据库、firefly iii主程序和定时任务。
因为过程比较繁杂,我会尽可能把操作步骤写详细,如果使用群晖手动部署成功,相信你对Docker相关知识的认知有一个巨大提升。
数据库
首先我们要创建一个数据库用来保存 Firefly III 的数据。关于数据库的管理,可以查看老宁写过的文章。
通过群晖 phpAdmin 套件,登录到数据库管理界面,在账户菜单下新增账户。
输入用户名和密码,并勾选左下角创建同名数据库选项,最后记得点击最下面的执行。这样在创建好账户的同时,也会创建一个新的数据库。
当然也可以直接创建一个数据库,用root用户直接来访问也是可以的。
Firefly III
接着就是在群晖的 Container Manager 上搭建 Firefly III 主程序了。
打开 Container Manager 套件,在注册表中搜索firefly,下载fireflyiii/core镜像。
在等待下载的过程中,在 File Station 套件中创建 fireflyiii文件夹,并创建一个名为firefly_iii_upload的子文件夹。
添加端口映射为8085,设置存储空间文件夹为前面创建的文件,容器路径为/var/www/html/storage/upload。
接着增加环境变量如下:
- APP_KEY:必须为32位
- DB_HOST:数据库的地址(群晖的IP)
- DB_PORT:端口(数据库端口)
- DB_CONNECTION:数据库类型
- DB_DATABASE:数据库名称(前面创建的)
- DB_USERNAME:用户名(前面设置的)
- DB_PASSWORD:密码(前面设置的)
如果后续在配置反代的时候出现问题,可以在环境变量中加入APP_URL、TRUSTED_PROXIES两个环境变量解决,对应的值为最终访问的https地址和*号。
其他配置保持默认,启动容器后,要多等一会儿,在日志中看到如下输出则代表安装成功。
定时任务
前面两步配置完成后,其实我们就可以使用 Firefly III 的记账功能了。
接下来需要配置定时任务。
如果你对定时记账没有要求可以跳过该步骤直接使用。如果你是第一次安装,请注册登录账号后,再进行定时任务的配置。
打开 Firefly III 菜单的个人档案,获取命令行令牌。
把令牌复制下来。
打开群晖的控制面板,在任务计划中新增一个计划任务->用户定义的脚本,时间选择每天3点执行。
在任务设置中,增加自定义脚本,内容为curl http://192.168.2.99:8085/api/v1/cron/xxxx,最后的xxxx替换为前面的令牌,IP为群晖的IP,端口为 Firefly III 容器映射的本地端口。
可以勾选通过电子邮件发送运行详情,这样脚本执行的日志会被发送到邮箱里。
如果配置正确,当我们手动执行了一次创建的任务后,定期交易页面的横幅会消失。
Firefly III 使用方法
在浏览器输入【http://群晖IP:8085】打开 Firefly III 网页后台,第一次进入必须注册一个新的账户(只能注册一次,所以这里的截图用的是登录界面)。
注册成功后,需要先指定一个账户和余额,再把语言设置为中文。
账户
我们可以在账户里创建资产账户、支出账户、收入账户、债务账户几种账户。
资产账户
资产账户代表了你拥有的、可以用于支付的资金来源。
我们在创建资产账户的时候,除了必须要设置的账户名称,和支出、收入账户最大的区别就是可以设置一个初始余额,就是是账户的资金。
支出账户
支出账户用于记录你向其支付款项的目的地或实体。比如我设置的楼下小超市,支出账户是没办法设置余额的,它是用来统计资金流向的。
收入账户
收入账户则与支出账户相反,它用于记录向你支付款项的来源。
债务账户
债务账户用于跟踪你所欠的款项,比如贷款和信用卡债务。
在 Firefly III 中创建好各类账户后,后面要进行记账就方便很多,也便于后期统计、追踪资金的流向。
创建交易
我们可以在交易下选择支出来创建一个新的支出。
比如买了包烟,来源账户可以选择资产账户里的账户,而目标账户可以选择支出账户里的楼下小超市。这样就能方便我们统计在某个地方具体花了多少钱。
定期交易
最后来看看如何创建定期交易。
如果在创建定期交易页面有这样一行字,那就代表没有配置好定时任务,可以回到前面群晖部署查看如何配置,否则创建的定期交易不会执行。
在定期交易中,可以选择重复类型,也就是执行交易任务的周期。
当定期交易执行后,可以在交易中看到已经执行的定期交易。
客户端
而想要使用客户端,则必须要创建个人访问令牌。有了个人访问令牌,输入到客户端中,才能链接到 Firefly III 后台。
安卓
- Waterfly III:https://github.com/dreautall/waterfly-iii
- Photuris III:https://github.com/emansih/FireflyMobile
iOS
在iOS上没有单独的app,只能通过快捷指令来完成。在 Add Transaction 里面设置好服务器的链接和令牌token进行链接,Add Transaction 会依赖其他三个快捷指令。
由于篇幅的限制,就不再介绍客户端的使用方法了,那么复杂的 Firefly III 后台服务都被你搭建起来了,还搞不定一个小小客户端?







































