群晖商用级开源记账工具 Firefly III 深度介绍

今天介绍的这款开源记账软件 Firefly III,除了定时记账的功能,还有更加高级的功能,一起来看看。(ps:文章很长,可以收藏了慢慢看)

662874198a29d4783.png_e1080

功能展示

快捷指令记账

快捷指令,选择记账类型

66287418a0296321.png_e1080

来源账户,可以在 Firefly III 中设置多种账户。

66287419cd6204783.png_e1080

记账金额。

662874183fdee321.png_e1080

存钱罐

可以在 Firefly III 的存钱罐界面添加存钱计划,看看还有多久能买一张摩托车?

66287419ec75b4783.png_e1080

定期交易

设定一些规则和定期交易,让你记账更加的便捷。比如房贷,停车费,话费,免去定时重复操作的烦恼。

662874184042b321.png_e1080

报表

每个账户到底支出了多少钱?你月光了么?通过报表功能可以一目了然。

66287418c8b0f321.png_e1080

项目地址

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 套件,登录到数据库管理界面,在账户菜单下新增账户。

662874179970e768.png_e1080

输入用户名和密码,并勾选左下角创建同名数据库选项,最后记得点击最下面的执行。这样在创建好账户的同时,也会创建一个新的数据库。

662874199b56e4783.png_e1080

当然也可以直接创建一个数据库,用root用户直接来访问也是可以的。

662874189607b321.png_e1080

Firefly III

接着就是在群晖的 Container Manager 上搭建 Firefly III 主程序了。

打开 Container Manager 套件,在注册表中搜索firefly,下载fireflyiii/core镜像。

6628741cffdc99204.png_e1080

在等待下载的过程中,在 File Station 套件中创建 fireflyiii文件夹,并创建一个名为firefly_iii_upload的子文件夹。

66287418c3ea4321.png_e1080

添加端口映射为8085,设置存储空间文件夹为前面创建的文件,容器路径为/var/www/html/storage/upload

66287419808e74783.png_e1080

接着增加环境变量如下:

  • APP_KEY:必须为32位
  • DB_HOST:数据库的地址(群晖的IP)
  • DB_PORT:端口(数据库端口)
  • DB_CONNECTION:数据库类型
  • DB_DATABASE:数据库名称(前面创建的)
  • DB_USERNAME:用户名(前面设置的)
  • DB_PASSWORD:密码(前面设置的)

66287419ac4c64783.png_e1080

如果后续在配置反代的时候出现问题,可以在环境变量中加入APP_URLTRUSTED_PROXIES两个环境变量解决,对应的值为最终访问的https地址和*号。

66287418cff0b321.png_e1080

其他配置保持默认,启动容器后,要多等一会儿,在日志中看到如下输出则代表安装成功。

6628741afbde79649.png_e1080

定时任务

前面两步配置完成后,其实我们就可以使用 Firefly III 的记账功能了。

接下来需要配置定时任务。

如果你对定时记账没有要求可以跳过该步骤直接使用。如果你是第一次安装,请注册登录账号后,再进行定时任务的配置。

打开 Firefly III 菜单的个人档案,获取命令行令牌。

66287417749b1768.png_e1080

把令牌复制下来。

66287419459f94783.png_e1080

打开群晖的控制面板,在任务计划中新增一个计划任务->用户定义的脚本,时间选择每天3点执行。

6628741a20d659649.png_e1080

在任务设置中,增加自定义脚本,内容为curl http://192.168.2.99:8085/api/v1/cron/xxxx,最后的xxxx替换为前面的令牌,IP为群晖的IP,端口为 Firefly III 容器映射的本地端口。

66287419fa7454783.png_e1080

可以勾选通过电子邮件发送运行详情,这样脚本执行的日志会被发送到邮箱里。

66287419596fd4783.png_e1080

如果配置正确,当我们手动执行了一次创建的任务后,定期交易页面的横幅会消失。

66287417ae1f7768.png_e1080

Firefly III 使用方法

在浏览器输入【http://群晖IP:8085】打开 Firefly III 网页后台,第一次进入必须注册一个新的账户(只能注册一次,所以这里的截图用的是登录界面)。

66287419b5b5b4783.png_e1080

注册成功后,需要先指定一个账户和余额,再把语言设置为中文。

6628741840d32321.png_e1080

账户

我们可以在账户里创建资产账户、支出账户、收入账户、债务账户几种账户。

66287419454d94783.png_e1080

资产账户

资产账户代表了你拥有的、可以用于支付的资金来源。

66287419cb99a4783.png_e1080

我们在创建资产账户的时候,除了必须要设置的账户名称,和支出、收入账户最大的区别就是可以设置一个初始余额,就是是账户的资金。

6628741a9a6dd9649.png_e1080

支出账户

支出账户用于记录你向其支付款项的目的地或实体。比如我设置的楼下小超市,支出账户是没办法设置余额的,它是用来统计资金流向的。

662874185d142321.png_e1080

收入账户

收入账户则与支出账户相反,它用于记录向你支付款项的来源。

662874194e1c04783.png_e1080

债务账户

债务账户用于跟踪你所欠的款项,比如贷款和信用卡债务。

6628741a2dc449649.png_e1080

在 Firefly III 中创建好各类账户后,后面要进行记账就方便很多,也便于后期统计、追踪资金的流向。

创建交易

我们可以在交易下选择支出来创建一个新的支出。

6628741994a2c4783.png_e1080

比如买了包烟,来源账户可以选择资产账户里的账户,而目标账户可以选择支出账户里的楼下小超市。这样就能方便我们统计在某个地方具体花了多少钱。

6628741779699768.png_e1080

定期交易

最后来看看如何创建定期交易。

662874184d2f4321.png_e1080

如果在创建定期交易页面有这样一行字,那就代表没有配置好定时任务,可以回到前面群晖部署查看如何配置,否则创建的定期交易不会执行。

6628741819345321.png_e1080

在定期交易中,可以选择重复类型,也就是执行交易任务的周期。

66287418c8db9321.png_e1080

当定期交易执行后,可以在交易中看到已经执行的定期交易。

6628741b9f0e17267.png_e1080

客户端

而想要使用客户端,则必须要创建个人访问令牌。有了个人访问令牌,输入到客户端中,才能链接到 Firefly III 后台。

66287419a5fe04783.png_e1080

安卓

iOS

在iOS上没有单独的app,只能通过快捷指令来完成。在 Add Transaction 里面设置好服务器的链接和令牌token进行链接,Add Transaction 会依赖其他三个快捷指令。

66287418244d9321.png_e1080

由于篇幅的限制,就不再介绍客户端的使用方法了,那么复杂的 Firefly III 后台服务都被你搭建起来了,还搞不定一个小小客户端?

标签