从零到一:Firefly III 私有化部署与移动端适配实战

发布时间:2026/6/20 4:03:38

从零到一:Firefly III 私有化部署与移动端适配实战 1. 为什么选择Firefly III搭建个人财务系统记账这件事说大不大说小不小。从学生时代用Excel手工记录生活费到后来用各种手机APP自动同步账单我几乎试遍了市面上所有主流记账工具。直到三年前发现银行账单出现莫名扣款才意识到把财务数据完全交给第三方服务的风险。Firefly III正是在这种需求下进入我的视线——它像财务版的WordPress给你完全的数据掌控权。这个开源项目用Laravel框架开发最吸引我的是它的三无特性无云服务依赖、无数据上报、无商业套路。所有交易记录都存放在自己的服务器上连报表生成都在本地完成。实测下来单月3000条交易记录的统计分析响应速度保持在2秒内比某些付费软件还流畅。对于技术爱好者来说它的Docker化部署更是省心我在老款群晖DS218上跑起来毫无压力。移动端适配是很多人关心的重点。虽然官方没有原生APP但通过PWA技术实现的Web应用体验相当不错。我的小米手机将网页添加到桌面后图标和启动动画与原生APP几乎无异。更惊喜的是发现第三方开发者基于API做了几个客户端后文会详细对比Android平台的Photuris III和Firefly Personal Finance的实际体验。2. 部署前的准备工作2.1 硬件与网络环境配置我的部署环境是一台闲置的群晖DS2182GB内存完全够用。建议准备至少1GHz双核CPU2GB以上内存10GB存储空间长期使用建议50GB数据库选择上MariaDB 10.3和MySQL 5.7都经过实测兼容。有个坑要注意某些ARM架构NAS如树莓派需要手动编译PHP扩展建议x86设备省心。网络方面确保3306MySQL和8080Web端口可用我在路由器上做了DDNS解析方便外网访问。2.2 数据库初始化先用phpMyAdmin创建专用账户更安全CREATE DATABASE firefly CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON firefly.* TO firefly% IDENTIFIED BY 你的强密码; FLUSH PRIVILEGES;这里有个细节一定要用utf8mb4字符集否则中文备注会乱码。我曾因为偷懒用默认的latin1导致三个月数据需要重导血泪教训。3. Docker化部署实战3.1 容器配置详解在群晖Docker注册表搜索fireflyiii/core时注意避开已弃用的jc5x镜像。我的docker-compose.yml配置如下version: 3 services: firefly: image: fireflyiii/core:latest ports: - 8888:8080 volumes: - /volume1/docker/firefly/upload:/var/www/html/storage/upload - /volume1/docker/firefly/export:/var/www/html/storage/export environment: APP_KEY: 32位随机字符串 # 可用openssl rand -base64 24生成 DB_HOST: 192.168.1.100 DB_PORT: 3306 DB_CONNECTION: mysql DB_DATABASE: firefly DB_USERNAME: firefly DB_PASSWORD: 你的数据库密码重点说下APP_KEY它相当于应用加密盐值首次启动后修改会导致所有用户会话失效。建议在SSH里用openssl rand -base64 24 | head -c 32生成真随机数。3.2 首次启动的常见问题日志中出现NOTICE: ready to handle connections才算成功。我遇到过的典型错误数据库连接超时检查DB_HOST是否用了容器名而非IP权限不足给upload/export目录chmod -R 775权限时区不对在环境变量加TZAsia/Shanghai启动成功后用http://NAS_IP:8888访问注册时密码必须16位以上。建议用Bitwarden生成并保存因为后续API调用都要用这个密码。4. 移动端适配全攻略4.1 PWA网页版优化技巧在手机Chrome打开Web界面后点击添加到主屏幕会发现图标是默认的PHP齿轮LOGO。要自定义图标需要修改nginx配置location / { # 添加PWA支持 add_header Service-Worker-Allowed /; try_files $uri $uri/ /index.php?$query_string; }然后准备192x192和512x512的PNG图标通过后台系统设置→自定义LOGO上传。实测华为EMUI和MIUI都能完美显示桌面图标且支持指纹验证登录。4.2 第三方客户端对比Android平台两款APP我都深度使用过Photuris III界面最接近网页版但2022年后停止更新偶尔闪退Firefly Personal FinanceMaterial Design风格支持生物识别但报表功能残缺获取API令牌时有个技巧在个人档案→OAuth授权创建令牌后立即用Postman测试接口GET http://你的域名/api/v1/about Authorization: Bearer 你的令牌返回200状态码才算配置成功。iOS用户可以用Shortcuts实现快速记账GitHub上有现成的模板可以直接导入。5. 中文场景下的特殊配置5.1 货币与语言设置首次登录后要立即修改在账户→创建账户里将默认货币改为人民币系统设置→语言选简体中文时区设置为Asia/Shanghai有个隐藏设置在.env文件加FF_LOCALEzh_CN可以修复日期显示格式问题。导入支付宝账单时记得在CSV导入界面选择Alipay预设格式否则分类映射会错乱。5.2 自动记账方案通过IFTTTEmail解析实现自动化在Firefly开启SMTP设置配置邮箱规则收到银行短信后转发到特定地址用Python脚本解析金额和商户import re from datetime import datetime def parse_sms(text): pattern r支出(\d\.\d)元.*?(麦当劳|美团) match re.search(pattern, text) if match: return { amount: match.group(1), payee: match.group(2), date: datetime.now().strftime(%Y-%m-%d) }虽然要写些规则但实现后能节省90%的记账时间。我的外卖和打车消费现在都是自动归类月底报表一目了然。6. 数据备份与迁移策略6.1 定期备份方案除了常规的数据库dump还要注意# 导出交易数据 docker exec -it fireflyiii php artisan firefly:export /var/www/html/storage/export/backup.json # 备份上传文件 tar -czvf uploads.tar.gz /volume1/docker/firefly/upload/建议写个cron任务每周自动备份到异地存储。我用的rclone同步到加密的WebDAV命令如下rclone copy /backup firefly:backup --password-file/etc/rclone.pass6.2 跨设备同步方案通过Tailscale组建虚拟局域网在NAS和手机安装Tailscale启用子网路由功能手机客户端直接连接内网地址这样无论在家还是外出都能用https://firefly.tailnet:8888访问数据完全不经过第三方服务器。实测地铁里刷报表的加载速度在3秒以内和局域网体验无异。

相关新闻