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
。
第一个镜像
jc5x/firefly-iii
也是官网的,只是自2021年7月1日
起,已经被弃用
安装数据库
通过 phpMyAdmin
在 MariaDB 10
中新建用户 firefly
,创建同名的库 firefly
并授予所有权限。
在 docker
文件夹中,创建一个新文件夹,并将其命名为 firefly
,然后在 firefly
中再建两个子目录 upload
和 export
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/firefly/export | /var/www/html/storage/export | 存放导出文件 |
docker/firefly/upload | /var/www/html/storage/upload | 存放上传文件 |
端口
端口不冲突就行,不确定的话可以用命令查一下
查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
8888 | 8080 |
环境
可变 | 值 |
---|---|
APP_KEY | 必须是 32 位 |
DB_HOST | 数据库地址 |
DB_PORT | 数据库端口 |
DB_CONNECTION | 数据库类型 |
DB_DATABASE | 数据库库名 |
DB_USERNAME | 数据库用户 |
DB_PASSWORD | 数据库密码 |
运行
日志中看到👇下面的信息就可以开始使用了
以 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:你设置的端口
就能看到登录界面
第一次需要注册用户
注意:密码不能少于
16
位,建议用密码生成器,使用类似LZ8xEJ6EPToTboxm
这样的密码
登录成功后的欢迎界面
设置中文
第一件事当然是设置语言啦,在欢迎界面中
Bank name
:随便填了个交通银行
Balance
:应该是余额,默认是欧元
,点前面的三角下箭头,找到chinese yuan
,后面填0
Savings balance
:储蓄卡余额,先默认没动language
中下拉到底,选择Chinese Simplified
Submit
之后就是中文界面了
在移动端直接使用 Web
的效果也还可以
现在您可以开启记账之旅,创建预算,跟踪支出,通过报表了解收支情况了。
应用
接口
除了 Web
应用外,Firefly III
还具备 JSON API
,提供了专门的 Swagger
文档:https://api-docs.firefly-iii.org
除非你想做基于 Firefly III
的二次开发,否则作为一般用户来说,这个没啥用处。
官方没有提供除了 Web
之外的应用,移动端都是第三方基于👆的 API
开发的,所有的移动客户端都在这里 👉 :https://docs.firefly-iii.org/firefly-iii/other-pages/3rdparty/
Android
Android
平台有 2
个,分别是 Firefly Personal Finance
和 Photuris III
,只下了 Photuris III
简单测试了一下
需要的朋友可以在后台回复
记账
即可获取下载地址
- 在
Web
端获取个人访问令牌
主页 –>
选项
–>个人档案
–>OAuth 授权
–>个人访问令牌
–>创建新令牌
名称只是为了标识,方便多令牌的管理
令牌只显示一次,所以要妥善保管
登录 android
客户端
打开 app
,点 PERSONAL ACCESS TOKEN
输入 服务器地址
和 个人访问令牌
后,点 SIGN IN
进入 Options
–> Settings
–> Language
可以改为 简体中文
界面
从界面看基本上就是高仿的 Web
,简单用了下,比较容易闪退😅
iOS
iOS
只有基于 Workflow
的快捷方式,给个动图自己研究吧
动图地址: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/