用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III

Firefly III(中文名字“萤火虫”)是一款开源的记账软件,完全没有广告,可以自主搭建个人的财务管理服务,帮助用户记录和追踪收入与开销。同时,它还支持使用预算、类别和标签,支持可以导入数据,提供许多简洁的财务报告等,最主要的是,它还提供开放的接口,支持跨平台使用和同步。所以说不管是对于个人或者公司来说,都比较适用。

Firefly-iii 是一个开源的记账软件,可以自主搭建个人的财务管理服务,帮助用户记录和追踪收入与开销。

配置部署Docker版Fireflyiii

数据库

可以使用群晖自带的MariaDB新建一个数据库

192.168.1.15:3306

数据库名:firefly

用户名:firefly

密码:12345678

以 Docker 方式安装

ssh终端输入:docker pull fireflyiii/core:latest

或者手动在注册表中搜索 firefly ,选择第二个 fireflyiii/core,版本选择 latest

图片[1]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

第一个镜像 jc5x/firefly-iii 也是官网的,只是自 2021年7月1日 起,已经被弃用

安装数据库

通过 phpMyAdmin 在 MariaDB 10 中新建用户 firefly,创建同名的库 firefly 并授予所有权限。

图片[2]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

在 docker 文件夹中,创建一个新文件夹,并将其命名为 firefly,然后在 firefly 中再建两个子目录 upload 和 export

图片[3]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球
文件夹装载路径说明
docker/firefly/export/var/www/html/storage/export存放导出文件
docker/firefly/upload/var/www/html/storage/upload存放上传文件
图片[4]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

端口

端口不冲突就行,不确定的话可以用命令查一下

查看端口占用

netstat -tunlp | grep 端口号
本地端口容器端口
88888080
图片[5]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

环境

可变
APP_KEY必须是 32 位
DB_HOST数据库地址
DB_PORT数据库端口
DB_CONNECTION数据库类型
DB_DATABASE数据库库名
DB_USERNAME数据库用户
DB_PASSWORD数据库密码
图片[6]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

运行

日志中看到👇下面的信息就可以开始使用了

图片[7]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

以 docker-compose 方式安装启动镜像

docker-compose.yml 配置:

Docker 部署实例非常方便,首先创建一个工程文件夹,然后新建 docker-compose.yml 文件:

自行修改
volumes:挂载目录
ports:映射端口

version: '3.3'

services:
  app:
    image: fireflyiii/core:latest
    hostname: app
    container_name: fireflyiii
    restart: always
    volumes:
      - /volume1/docker/记账软件/upload:/var/www/html/storage/upload
      - /volume1/docker/记账软件/export:/var/www/html/storage/export
    env_file: .env

    networks:
      - firefly_iii
    ports:
      - 0.0.0.0:18082:8080

networks:
  firefly_iii:
    driver: bridge

下面的是含mariadb数据库一起部署:

如果用自己的数据库就不需要部署mariadb数据库,用上面的即可。

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:

      - 127.0.0.1:8080:8080

    depends_on:
      - db
  db:
    image: mariadb
    hostname: db
    container_name: firefly_iii_db
    restart: always

    env_file: .db.env

    networks:
      - firefly_iii
    volumes:
      - firefly_iii_db:/var/lib/mysql
  cron:
    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

这里特别需要注意的是 app 和 db 的 env_file,我们需要在这些文件中详细配置应用和数据库的设置。

.env 配置

在上文创建的工程目录中新建 .env 文件,以配置 Firefly APP 环境变量:

# 推荐默认
APP_ENV=local
APP_DEBUG=false

# 根据情况自定义
SITE_OWNER=mail@example.com
# 一定要保证 32 个字符

APP_KEY=SomeRandomStringOf32CharsExactly


# 语言
DEFAULT_LANGUAGE=zh_CH
DEFAULT_LOCALE=equal

# 时区
TZ=Asia/Shanghai

# 反向代理一定要开!!
TRUSTED_PROXIES=**

# 日志相关,尽量减少日志
LOG_CHANNEL=stack
APP_LOG_LEVEL=emergency
AUDIT_LOG_LEVEL=emergency

# 数据库配置,这里选择 MySQL 数据库
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306

DB_DATABASE=firefly-db # 自定义

DB_USERNAME=firefly-user

DB_PASSWORD=强密码

MYSQL_USE_SSL=false

# Cookie 设置
COOKIE_PATH="/"
COOKIE_SECURE=false
COOKIE_SAMESITE=lax

SEND_ERROR_MESSAGE=true
SEND_REPORT_JOURNALS=true

ENABLE_EXTERNAL_MAP=false
ENABLE_EXTERNAL_RATES=false

# Firefly III authentication settings
AUTHENTICATION_GUARD=web
AUTHENTICATION_GUARD_HEADER=REMOTE_USER

DISABLE_FRAME_HEADER=false

# 防止 XSS 攻击,保持默认
DISABLE_CSP_HEADER=false

ALLOW_WEBHOOKS=false

DKR_BUILD_LOCALE=false
# 不用 sqllite
DKR_CHECK_SQLITE=false
# 安全相关,保持默认
DKR_RUN_MIGRATION=true
DKR_RUN_UPGRADE=true
DKR_RUN_VERIFY=true
DKR_RUN_REPORT=true
DKR_RUN_PASSPORT_INSTALL=true

# APP 配置,不要乱改
APP_NAME=FireflyIII
BROADCAST_DRIVER=log
QUEUE_DRIVER=sync
CACHE_PREFIX=firefly
FIREFLY_III_LAYOUT=v1

以上 .env 仅展示了必要的配置,其他自定义配置可以参考官方文档:.env.example

mariadb数据库容器一起部署的需要配置db.env文件

MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=firefly-db
MYSQL_USER=firefly-user
MYSQL_PASSWORD=强密码

docker-compose 启动镜像

cd 到你的docker-compose.yml文件目录执行:

docker-compose up -d

执行 docker ps 命令:

CONTAINER ID   IMAGE                    COMMAND                   CREATED              STATUS                        PORTS                      NAMES

1b143b1fafa7   fireflyiii/core:latest   "/usr/local/bin/entr…"    About a minute ago   Up About a minute (healthy)   127.0.0.1:8080->8080/tcp   firefly_iii_core

daf67ec26566   alpine                   "sh -c 'echo \"0 3 * …"   About a minute ago   Up About a minute                                        firefly_iii_cron
4a660f98647f   mariadb                  "docker-entrypoint.s…"    About a minute ago   Up About a minute             3306/tcp                   firefly_iii_db

如果 fireflyiii/core 容器的状态为 (healthy),则表明部署成功。

部署成功进入网址设置

在浏览器中输入 http://群晖IP:你设置的端口 就能看到登录界面

图片[8]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

第一次需要注册用户

注意:密码不能少于 16 位,建议用密码生成器,使用类似 LZ8xEJ6EPToTboxm 这样的密码

图片[9]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

登录成功后的欢迎界面

图片[10]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

设置中文

第一件事当然是设置语言啦,在欢迎界面中

  • Bank name:随便填了个 交通银行
  • Balance:应该是余额,默认是欧元,点前面的三角下箭头,找到 chinese yuan,后面填 0
  • Savings balance:储蓄卡余额,先默认没动
  • language 中下拉到底,选择 Chinese Simplified
图片[11]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

Submit 之后就是中文界面了

图片[12]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

在移动端直接使用 Web 的效果也还可以

图片[13]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

现在您可以开启记账之旅,创建预算,跟踪支出,通过报表了解收支情况了。

应用

接口

除了 Web 应用外,Firefly III 还具备 JSON API,提供了专门的 Swagger 文档:https://api-docs.firefly-iii.org

图片[14]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

除非你想做基于 Firefly III 的二次开发,否则作为一般用户来说,这个没啥用处。

官方没有提供除了 Web 之外的应用,移动端都是第三方基于👆的 API 开发的,所有的移动客户端都在这里 👉 :https://docs.firefly-iii.org/firefly-iii/other-pages/3rdparty/

Android

Android 平台有 2 个,分别是 Firefly Personal Finance 和 Photuris III,只下了 Photuris III 简单测试了一下

需要的朋友可以在后台回复 记账 即可获取下载地址

  1. 在 Web 端获取 个人访问令牌

主页 –> 选项 –> 个人档案 –> OAuth 授权 –> 个人访问令牌 –> 创建新令牌

图片[15]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

名称只是为了标识,方便多令牌的管理

图片[16]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

令牌只显示一次,所以要妥善保管

图片[17]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

登录 android 客户端

打开 app,点 PERSONAL ACCESS TOKEN

图片[18]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

输入 服务器地址 和 个人访问令牌后,点 SIGN IN

图片[19]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

进入 Options –> Settings –> Language 可以改为 简体中文 界面

图片[20]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

从界面看基本上就是高仿的 Web ,简单用了下,比较容易闪退😅

iOS

iOS 只有基于 Workflow 的快捷方式,给个动图自己研究吧

图片[21]-用docker在NAS群晖上搭建一个开源的理财记账软件Firefly III - 欧鹿星球-欧鹿星球

动图地址:https://github.com/tmytro/firefly-ios-shortcuts

参考文档

firefly-iii/firefly-iii: Firefly III: a personal finances manager
地址:https://github.com/firefly-iii/firefly-iii

Firefly III – A free and open source personal finances manager
地址:https://www.firefly-iii.org/

Docker – Firefly III documentation
地址:https://docs.firefly-iii.org/firefly-iii/installation/docker/

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享