
萤火虫 III – 个人理财经理
我想也许你们中的许多人会认识他, Firefly III 是一项我们可以用来管理财务的服务. 一位帮助我们了解银行账户的经理, 我们将能够轻松了解我们的资金去向, 当然是开源和本地部署!
井, 嗯,就是这样, 如果您需要更深入地了解您的银行账户, 或对收入和支出进行更深入的监控, FireFly III 多年来一直在这方面提供帮助. 我们将在不到 5 感谢 Docker!
有几种方法可以安装 Firely III (并对其进行配置), 基于我们的需求; 在本例中,我们将在 Docker 容器中安装 Firefly III, 在继续之前,我们下载所需的文件并根据我们的需要对其进行调整:
wget https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose-importer.yml -O docker-compose.yml wget https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example -O .env wget https://raw.githubusercontent.com/firefly-iii/docker/main/database.env -O .db.env wget https://raw.githubusercontent.com/firefly-iii/data-importer/main/.env.example -O .importer.env
我们编辑文件 '.env’ 至少我们会修改 APP_KEY, MySQL 数据库访问局部变量和凭证, 由于此文件将包含大部分配置, 如果我们想要通知,则为 mail 部分…
APP_KEY=secretrode32字符 DEFAULT_LANGUAGE=es_ES TZ=欧洲/马德里 ... DB_USERNAME=USUARIO_BD DB_PASSWORD=CONTRASEÑA_USUARIO_BD ...
我们编辑文件 '.db.env’ 并且至少修改数据库访问凭证 (与上一步相同):
MYSQL_USER=USUARIO_BD MYSQL_PASSWORD=CONTRASEÑA_USUARIO_BD
最后, 如果我们有兴趣使用容器将数据导入 Firefly,我们会编辑 '.importer.env’ (如果不是, 我们忽略这个). 我们将指示 Firefly III 服务器的 IP 地址或 FQDN, 以及我们将选择验证自己的方式, 通常使用 Access Token (稍后我们将看到如何生成它):
FIREFLY_III_URL=http://IP_O_FQDN_FIREFLY_III FIREFLY_III_ACCESS_TOKEN=ey... TZ=欧洲/马德里
我们最终编辑了 'docker-compose.yml’ 如果我们有兴趣进行任何更改, 就我而言,我只打开了端口, FireFly III 的 80tcp, 81tcp 用于导入器,当然还有 3306 我让它从外部咨询 MySQL, 例如来自 Grafana, 住:
服务业: ... 应用程序: ... 港口: - '80:8080' ... ... 分贝: ... 港口: - '3306:3306' ... ... 进口商: ... 港口: - '81:8080' ...
和, 最后,我们抬起集装箱:
docker compose -f docker-compose.yml up -d --pull=always
我们现在将能够访问 Firefly iii 网站, 在本例中,发布在 Docker 主机 IP 的端口 80tcp 上, 所以 HTTP://DIRECCION_IP_O_FQDN 首次登录时,我们必须创建一个帐户, 我们提供我们的电子邮件地址和密码 & “注册”,
一旦我们进入,我们就必须注册我们的第一家银行, 我们可以开始查看应用程序, 但是没有数据,情况就有些糟糕了… 所以接下来就是从我们的银行导入数据!
首先, 我们必须决定我们将在“Firefly III Data Impor Tool”容器中使用的身份验证类型, 最简单的方法是从 Firefly III 生成个人访问令牌,并在 '.importer.env 中指示它’
如果我们重新生成容器并连接到“Firefly III Data Impor Tool”的网站’ (就我而言,在端口 81tp 上) 我们将能够开始导入过程, 点击 “导入文件”,
在“Importable file”中’ 我们将保留从银行下载的 CSV 文件, 与我们感兴趣的所有运动历史. 询问我们的可选配置文件, 现在我们不会有它, 但是一旦我们完成这个向导, 我们将能够生成它, 一个 JSON 文件,该文件将输入我们将在下面选择的选项, “下一个”,
我们指示 CSV 文件是否具有标头, 如果我们想将其转换为 UTF-8, 什么是 CSV 分隔符, 我们要从哪个银行导入它 FireFly III, 日期格式… “提交”,
根据上面选择的选项,它将向我们显示文件的内容并分隔列… 我们可以忽略我们不感兴趣的导入列 (答案是肯定的), 并关联每列的角色, 至少我们会导入 'Transaction date' 字段, '描述’ 和 'Amount'. “提交”,
准备工作, 我们可以点击 “下载配置文件” 这样我们就不必执行此向导并记住它的格式, 或将来自动导入此. 点击 “开始作业” 开头为,
我们了解 CSV 移动的重要性… 希望…
一旦他完成,他会告诉我们, 完善!
我们开始有数据! Ole 和 ole Rigodón! 现在,我们将能够更详细地查看任何报告, 等…
以下内容, 可以配置 Categories, 了解我们的资金去向! 这样它就会对每个动作进行分类,并说明它是否是抵押贷款, 超市消费, 汽油, 来自亚马逊…
因为 “自动化” > “规则” 我们可以创建它们, 设置简单, 我们给它起个名字,以及我们想要激活它的时间, 当它在 Description 中检测到单词时, 例如…
好了,我把 Firefly III 留给你了, 几个非常简单的转弯; 然后是小奶酪, 报表更优雅, 我们以更详细的方式了解我们的预算去向. 您在上面看到的这些屏幕截图来自我们可以安装在手机上的开源应用程序 (称为 Waterfly III) 连接到 FireFly III,可能更舒适…
和… 等等,我们还没有结束! 您还记得在 MySQL 数据库容器中,我们让 3306tcp 保持打开状态? 好吧,有了访问凭证,我们可以连接并进行查询, 因为我们感兴趣并以美丽的方式看到它,并从 Grafana 品尝, 按类别, 或者只是动作… 但不仅仅是从 Grafana 看到它, 但是我是多么的极客, 我生成一个 李玲玲 而这些信息在里面传来, 其中包括 Home Assistant 的有趣细节 (统计学…)
顺便一提, 我们看到的数字, 他们是假的, 除了它们被半遮住,所以你不知道我处理的数字, 我不能这么公开地说我有多少百万). 来, 切中要害, 需要 MySQL 查询的人:
- 包含总计的图表:
选择 tj.date 作为时间, "总" 作为公制, 和(t.amount) 多 (按 tj.date ASC 订购) AS value
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU_ID_DEL_BANCO' ORDER BY tj.date ASC;
- 包含移动的图表:
选择 tj.date 作为时间, t.amount 作为值, tj.description as metric
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU ID DEL BANCO' ORDER BY tj.date ASC;
- 移动台:
选择 t.amount, tj.描述, 左(tj.date, 10) 迄今为止, 和(t.amount) 多 (按 tj.date ASC 订购) AS Total
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU ID DEL BANCO' ORDER BY date desc;
并希望我忘记了最重要的事情! 我们如何实现自动化? 好吧,如果你很幸运,你的银行允许你以某种方式连接,, 按 API, 等… 不错, 否则, 是否有任何第三方服务 (付费和外部) 那可以帮助你… 另一种方法是我们每周手动下载文件,并始终将它们放在同一路径上, 然后脚本会导入它们 (有一个 cron 容器), 或使用记录点击次数的工具, 登录银行并生成报告… 后者是我个人的选择. 这真的很糟糕, 我有一个隔离的 VM, 无法访问 Internet (除了银行的网站,什么都没有)… 并且每天执行一个小任务 (小心) 生成报告, 因为每家银行都属于它的父亲, 有些是以 CSV 格式生成的, 其他 XLS 和其他 XLSX (触摸您的…) 因此,我给您留下了一些脚本中的提示,可以帮助您:
#从 XLSX 转换为 CSV 并使用 ; 作为分隔符: xlsx2csv -d ';' fichero.xlsx fichero.csv #Convierte de XLS a CSV sin perder el formato de las fechas: libreoffice --convert-to csv fichero.xls #Borra第一个 15 线: sed -i '1,15d' fichero.csv #Importa el csv que hay en la carpeta actual con el JSON de configuración, 两个文件的名称相同: sudo docker run --rm -v $PWD:/import -e FIREFLY_III_ACCESS_TOKEN=ey... -e IMPORT_DIR_ALLOWLIST=/import -e FIREFLY_III_URL=http://IP_FQDN_FIREFLY_III -e WEB_SERVER=false fireflyiii/data-importer:最近的
使用最后一个命令,我们将 CSV 导入 JSON 中指示的银行,这是一个奇迹! 避免重复移动, 等… 最新 (这就是真的), 我们之前见过的 MySQL 查询, 他们可以派上用场将其与 Home Assistant 集成, 当我们用扬声器吃早餐时,它会告诉我们账户中的余额, 以及最新的动向… 水手布!!!
来, 现在我要让你一个人呆着, 我祝你好运, 你工作少,赚很多😉钱!