Firefly III 萤火虫三号 开源的个人财务管理器 2024-03-08 默认分类,服务搭建 暂无评论 389 次阅读 # Firefly III 萤火虫三号 开源的个人财务管理器 ## 1. Firefly III介绍 “Firefly III”是一个(自托管)个人财务管理器。它可以帮助您跟踪您的支出和收入,这样您就可以减少支出,增加储蓄。 Firefly III 支持预算、类别和标签的使用。使用一堆外部工具,您可以导入数据。它还提供许多简洁的财务报告。 通过跟踪您的支出和收入,您可以做出相应的预算并省钱。不要再靠薪水生活,而是给自己提供所需的财务回旋余地。 ### 1.1 特征 它是完全自托管和隔离的,除非您明确告知,否则永远不会联系外部服务器。 最令人兴奋的功能是: - Create [recurring transactions to manage your money](https://docs.firefly-iii.org/explanation/financial-concepts/recurring/). 创建定期交易来管理您的资金。 - [Rule based transaction handling](https://docs.firefly-iii.org/how-to/firefly-iii/features/rules/) with the ability to create your own rules. 基于规则的事务处理,能够创建您自己的规则。 Then the things that make you go "yeah OK, makes sense". 然后那些让你“是的,好吧,有道理”的事情。 - A [double-entry](https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system) bookkeeping system. 复式记账系统。 - Save towards a goal using [piggy banks](https://docs.firefly-iii.org/explanation/financial-concepts/piggies/). 使用存钱罐为目标存钱。 - View [income and expense reports](https://docs.firefly-iii.org/how-to/firefly-iii/finances/reports/). 查看收入和支出报告。 And the things you would hope for but not expect: 以及你希望但没有想到的事情: - 2 factor authentication for extra security 🔒. 2 因素身份验证可提供额外的安全性🔒。 - Supports [any currency you want](https://docs.firefly-iii.org/how-to/firefly-iii/features/currencies/).Fire - There is a [Docker image](https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/). 有一个 Docker 镜像。 And to organise everything: 并组织一切: - Clear views that should show you how you're doing. 清晰的视图应该向您展示您的表现。 - Easy navigation through your records. 轻松浏览您的记录。 - Lots of charts because we all love them. 很多图表,因为我们都喜欢它们。 ## 2.相关链接 - Firefly III Github:https://github.com/firefly-iii/firefly-iii - Firefly III demo演示站:https://demo.firefly-iii.org/login - Firefly III 文档:https://docs.firefly-iii.org/ - Firefly III 数据导入器介绍:https://docs.firefly-iii.org/explanation/data-importer/about/introduction/ - Firefly III 的Apps:https://docs.firefly-iii.org/references/firefly-iii/third-parties/host/ - Firefly III使用Docker安装官方文档:https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/ ## 3. 准备 - VPS(提前安装好Docker、Docker-Compose) - 域名(可有可无) ## 4. 安装 ### 4.1 创建安装目录 ```bash mkdir -p /root/data/docker_data/Firefly ``` ```bash cd /root/data/docker_data/Firefly ``` ### 4.2 创建docker-compose.yml文件 有两个官方提供的docker-compose.yml文件,一个是[没有带数据导入器](https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose.yml)的,一个是带有[数据导入器](https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose-importer.yml)。 以下是我修改后的docker-compose.yml文件。 ```yml 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: - 8080:8080 # 端口设置,我本机修改为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 ``` ```bash version: '3.3' # # The Firefly III Data Importer will ask you for the Firefly III URL and a "Client ID". # You can generate the Client ID at http://localhost/profile (after registering) # The Firefly III URL is: http://app:8080 # # Other URL's will give 500 | Server Error # services: app: image: fireflyiii/core:latest hostname: app container_name: firefly_iii_core networks: - firefly_iii restart: always volumes: - ./firefly_iii_upload:/var/www/html/storage/upload env_file: .env ports: - '8080:8080' depends_on: - db db: image: mariadb:lts hostname: db container_name: firefly_iii_db networks: - firefly_iii restart: always env_file: .db.env volumes: - ./firefly_iii_db:/var/lib/mysql importer: image: fireflyiii/data-importer:latest hostname: importer restart: always container_name: firefly_iii_importer networks: - firefly_iii ports: - '8181:8080' depends_on: - app env_file: .importer.env 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 container_name: firefly_iii_cron restart: always 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 ``` ### 4.3 下载配置文件 此处以加装数据导入器为例子。 #### 4.3.1 下载.env 下载链接:https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example 下载完成后,保存为.env,并且设置里面的DB_PASSWORD。 ![image-20240228175818883](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228175818883.6wqgrglx6e.webp) #### 4.3.2 下载.importer.env 下载链接:https://raw.githubusercontent.com/firefly-iii/data-importer/main/.env.example 修改里面的FIREFLY_III_URL为 http://app:8080 修改里面的VANITY_URL为 http://localhost 保存为.importer.env ![image-20240228175842210](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228175842210.5xadeaj60o.webp) #### 4.3.3 下载.db.env 下载链接:https://raw.githubusercontent.com/firefly-iii/docker/main/database.env 修改里面的MYSQL_PASSWORD,和前面.env设置的DB_PASSWORD一样 ![image-20240228180033042](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228180033042.3go4zdca4a.webp) ### 4.4 上传文件到于docker-compose.yml的同级目录 ![image-20240228180221057](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228180221057.7p3c972iwr.webp) ## 5. 运行 ```bash docker-compose up -d ``` ### 5.1 创建账号 c@6%q9esY6KG#LKq ### 5.2 设置 #### 5.2.1 修改语言 ![image-20240228184021324](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228184021324.1e8cbbdp31.webp) ![image-20240228184046562](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228184046562.99t38nzqda.webp) ### 5.3 添加账户 ![image-20240228185323553](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228185323553.32hp8i3z9b.webp) ### 5.4 创建交易 ![image-20240228190152289](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240228190152289.9kfx1teyio.webp) ### 5.5 导入数据 创建新令牌,记得令牌创建成功后,复制令牌 个人访问令牌 eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI3IiwianRpIjoiY2FhYzhlMTQ2YjZhOGUwNjUzZDU5NjFmYzA4ZWQ3Zjg1Zxxxxx ![image-20240229114216427](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229114216427.26l7t1uaro.webp) 修改.importer.env文件 将FIREFLY_III_ACCESS_TOKEN的值设置为将复制的令牌token值 ![image-20240229114528029](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229114528029.es8y5axvr.webp) 然后重新启动项目 浏览器访问ip:端口进入导入器界面 ![image-20240229114625802](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229114625802.3raysiri89.webp) 选择上传的csv文件 ![image-20240229134819691](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229134819691.4ckmetlyiz.webp) 导入设置 ![image-20240229134849622](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229134849622.2krnjx2ln0.webp) 每列角色设置 ![image-20240229134915491](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229134915491.67x77fye4u.webp) 交易导入成功 ![image-20240229141235422](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229141235422.8aczvhwz6b.webp) ## 6. 第三方手机App操作 第三方app官方推荐:https://docs.firefly-iii.org/references/firefly-iii/third-parties/apps/ 本人以Waterfly III和Abacus来演示,其中两个应用都可以在github和Google play商店下载,两个软件都支持中文。 Abacus的Github:https://github.com/victorbalssa/abacus Waterfly III的Github:https://github.com/dreautall/waterfly-iii 创建手机app访问的个人访问令牌 eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxMyIsImpxxxx ### 6.1 Waterfly III 打开app输入url和个人访问令牌 ![Screenshot_2024-02-29-14-24-54-948_com.dreautall.waterflyiii](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-24-54-948_com.dreautall.waterflyiii.7zq62chr18.webp) ![Screenshot_2024-02-29-14-29-25-795_com.dreautall.waterflyiii](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-29-25-795_com.dreautall.waterflyiii.1aoqdlkmcf.webp) 设置语言,默认打开是英文 ![Screenshot_2024-02-29-14-29-44-280_com.dreautall.waterflyiii](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-29-44-280_com.dreautall.waterflyiii.pf2raq61u.webp) ![Screenshot_2024-02-29-14-29-58-011_com.dreautall.waterflyiii](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-29-58-011_com.dreautall.waterflyiii.3d4j1nj7dw.webp) 打开通知监听服务,此处省略,这样就可以自动进行记账服务。 ### 6.2 Abacus 填写url和个人访问令牌 ![Screenshot_2024-02-29-14-34-04-576_abacus.fireflyiii.android.app](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-34-04-576_abacus.fireflyiii.android.app.1hry916rs7.webp) ![Screenshot_2024-02-29-14-35-01-893_abacus.fireflyiii.android.app](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-35-01-893_abacus.fireflyiii.android.app.41xslo6qei.webp) ![Screenshot_2024-02-29-14-35-05-420_abacus.fireflyiii.android.app](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-35-05-420_abacus.fireflyiii.android.app.1ses26lzxp.webp) ![Screenshot_2024-02-29-14-35-09-487_abacus.fireflyiii.android.app](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-35-09-487_abacus.fireflyiii.android.app.5q75iux0ky.webp) ![Screenshot_2024-02-29-14-35-13-060_abacus.fireflyiii.android.app](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/Screenshot_2024-02-29-14-35-13-060_abacus.fireflyiii.android.app.7w6k4mooc4.webp) ## 7. 总结 这个项目功能很强大,当然这是我一个不怎么使用记账功能的人的说法,我所体验到的可以自己导入数据,自己配置账户信息,可以生成图表等等,而且项目还提供了命令行以及api操作,以及使用于telgram bot创建交易,甚至于还可以使用openai自动进行费用分类。在账户交易导入数据方面,国内的银行可以在各自的app下载对账单,进行导入。我个人试过使用用微信账单,感觉数据这些不是很全面,所以我建议如果导入数据,大家使用银行的账单。如果大家有非中国大陆的银行的话,也可以直接使用银行的账单进行导入,不过如果你的非中国大陆银行是在使用GoCardless和Spectre的使用范围里面的,这个的话将你的银行和这两家的服务相连接,你可以直接使用这两家的服务,将全部的信息都导入,关于这个如何结合使用,请查看[链接](https://docs.firefly-iii.org/explanation/data-importer/about/gocardless-salt-edge/),以下是GoCardless所支持银行的国家,这个[链接](https://gocardless.com/bank-account-data/coverage/)可以查看。 ![image-20240229151627951](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229151627951.b8n0fhv6c.webp) Salt Edge支持的银行,从这个[链接](https://www.saltedge.com/products/account_information/coverage)进行查看,经过我个人查询,可以支持香港的实体银行以及新加坡华侨银行(OCBC)还有其他的连接服务,例如paypal还有一些中心加密货币交易所(币安),澳门的银行不支持,如下图所示: ![image-20240229152100319](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229152100319.231lvc182e.webp) ![image-20240229152143652](https://cdn.jsdelivr.net/gh/plfish199/picx-images-hosting/Firefly-III-开源的个人财务管理器/image-20240229152143652.7egig1naqf.webp) 当然,它还有其他的连接设置,比如可以直接Paypal、加密货币交易所以及一些银行自己的工具。这个详情见[链接](https://docs.firefly-iii.org/references/data-importer/third-party-tools/#paypal)。 打赏: 微信, 支付宝 标签: VPS 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。