Docker 容器 Firefly III 部署指南

这个笔记剪藏自 https://sspai.com/post/92911

5 Firefly III 部署指南

部署配置

本次部署还是在个人的 MacBook Pro(M 芯片) 上,所以如果其他平台,可以借鉴参考,更推荐阅读 Firefly III 的官方安装文档

部署方式采用 Docker 容器(推荐使用 OrbStack),步骤如下:

# 1. 下载官方 docker compose 文件;
curl -o firefly-iii.yml https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose.yml

# 2. 下载官方 env 文件;
# 注意:由于本次 docker compose 文件中并没有用到 env 文件中的变量,所以可以修改文件名。
#      如果 docker compose 文件中用到 env 文件中的变量,则必须保证文件名为 .env。
curl -o firefly-iii.env https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example
curl -o firefly-iii.db.env https://raw.githubusercontent.com/firefly-iii/docker/main/database.env

# 3. 修改 env 文件中数据库密码,两个文件中需要为相同密码(默认是 secret_firefly_password);
# 3.1 修改 firefly-iii.env 中 DB_PASSWORD 的值;
# 3.2 修改 firefly-iii.db.env 中 MYSQL_PASSWORD 的值;

# 4. 修改 env 文件中 STATIC_CRON_TOKEN 值,以启用定时任务(例如通知等);
# 注意:长度为 32 位,可以使用以下 UUID 方式。
uuidgen | tr -d '-'

# 5. 修改 docker compose 文件;
# 5.1 修改两处 env_file 文件的名字,对应为 firefly-iii.env 和 firefly-iii.db.env;
# 5.2 修改对外服务端口(默认为 80,容易和本机部署的其他一些服务冲突);
# 5.3 将第 4 步中生成的值替换到 cron 容器的 command 中;
# 5.4 (可选)其他一些名称、命名等可以优化一下,以和本机其他服务一致;

# 6. 启动服务;
docker compose -f firefly-iii.yml up -d

服务部署完成后,打开浏览器,输入 http://localhost:80(端口修改过的话注意换成对应的端口),即可打开 Firefly III 的主页了。

随后填写邮箱以及密码,进入到主页中,首先映入眼帘的就是初始化设置(这个相比 Maybe 以及 Actual 就非常友好了),填写银行名称、货币为人民币(Chinese yuan)、以及语言修改为中文简体(Chinese Simplified)后,点击提交。

接着便进入到 Firefly III 的主页中,仍然有不错的引导提示,确保你能够理解系统的运作方式,完成所有引导后,就正式进入到系统中(在不同的标签页中,仍有对应的引导提示)。

最后就可以按照自己的喜好和习惯,逐渐开始建立个人的记账数据。

使用技巧

这部分内容是在使用 MoneyWiz 和 Firefly III 时的一些小技巧分享。

信用类资产账户

  • 在第一次创建时,不需要考虑输入已消费的账单,直接初始余额设置为当前待还金额,后面的消费记录再逐渐添加即可;
  • 还款的操作为现金账户到该账户的转账;

其他类型账户

  • 常用的加油卡、公交卡等,也可以创建为储蓄账户(或现金账户);
  • 支付宝或者微信中的余额,可以创建为储蓄账户(或现金账户);
  • 为房贷等创建债务(贷款)账户,可以设置贷款金额、利率、还款模式等,还款时可以自动计算本金、利息分别归还的金额;

导出导入数据

目前 MoneyWiz、Maybe、Actual 以及 Firefly III 这几个系统之间的数据,都不可以无缝的互相导入,这也是切换系统的最大难题之一。

好处是 MoneyWiz 可以将所有的数据导出为 CSV 格式的表格,而 Firefly III 则提供丰富的 REST API 接口,可以通过写一个简单的 Python 脚本,完成数据的导入。

当然可以通过使用 REST API 完成更多的复杂功能,例如写一个 Alfred 的 Workflow,输入交易信息,再通过 ChatGPT 进行格式化,最后插入到 Firefly III 中。

其他

  • 根据个人习惯创建多种维度的预算,及时提醒以及纠正超支,这对网购上瘾「患者」尤其有效;
  • Firefly III 的存钱罐是一个非常赞的功能,在每天无聊的记账中,给自己建立一个小目标,攒一些零花钱(私房钱)去买一样心仪已久的东西(改车),在获得的那一刻成就感满满;

使用注意

  • 个人、家庭财务数据是非常重要的隐私,切记请勿将其暴露在互联网中,这是非常危险的行为。
  • 使用自建服务,一定要注意数据的备份存储,否则可能会由于系统损坏等原因导致数据丢失,再重建数据工作量会非常庞大。

6 最后总结

借着这次切换记账软件,把这十多年的记账总结和思考记录了一下,希望能给大家引发一些深刻的思考,当然也更期待能跟大家多交流其中的技巧和经验,互相学习。