群晖Docker,走起! 篇二十五:群晖商用级开源记账工具 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 后台服务都被你搭建起来了,还搞不定一个小小客户端?
我是老宁
一个热爱技术的程序员和极客,群晖NAS深度玩家!
专注NAS相关技术分享,原创!干货!
觉得老宁的文章对你有帮助,记得点赞、收藏、加关注!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
长木花园
校验提示文案
哇咔咔
校验提示文案
737Max
校验提示文案
gwmj
校验提示文案
foxfox00
校验提示文案
ttxdt
校验提示文案
比如曾经比如你
校验提示文案
打肿你的脸
校验提示文案
八个月的大猫
校验提示文案
长木花园
校验提示文案
八个月的大猫
校验提示文案
打肿你的脸
校验提示文案
gwmj
校验提示文案
比如曾经比如你
校验提示文案
737Max
校验提示文案
哇咔咔
校验提示文案
foxfox00
校验提示文案
ttxdt
校验提示文案