简介

Firefly III 是一款自托管和开源的个人财务的管理应用。免费,没有广告,没有跟踪。

它可以帮助你跟踪支出、收入、预算和两者之间的一切。它支持信用卡、共享家庭账户和储蓄账户。它还有许多整洁的财务报告可用。通过记录你的支出和收入,你可以做出相应的预算并节省资金。

Github地址

官方Demo

安装前准备

PHP模块

  • PHP BCMath Arbitrary Precision Mathematics

  • PHP Internationalization extension

  • PHP Curl

  • PHP Zip

  • PHP Sodium

  • PHP GD

  • PHP XML

  • PHP MBString

  • PHP whatever database you’re gonna use.

可以通过 php -m 查看是否安装。

Composer

1
2
3
4
5
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

安装

登录 Firefly III release tracker 查看最新版本

1
2
cd /var/www
composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii 6.0.4

赋予权限:

1
2
sudo chown -R www-data:www-data firefly-iii
sudo chmod -R 775 firefly-iii/storage

配置

打开程序目录的 .env 文件,编辑其中的内容:

1.Owner

1
SITE_OWNER=mail@example.com

2.APP_KEY

1
APP_KEY=base64:xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxx=

可以运行 php artisan key:generate 来自动生成。

装完了我才知道,这个在上面安装的时候就已经自动生成,这边不需要再次生成。

3.DEFAULT_LANGUAGE

1
DEFAULT_LANGUAGE=zh_CN

改为中文。

查看支持的语言

4.时区

改为上海。

1
TZ=Asia/Shanghai

更多时区查看List of tz database time zones

5.数据库

1
2
3
4
5
6
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=firefly
DB_USERNAME=firefly
DB_PASSWORD=secret_firefly_password

根据自己创建的数据库更改,支持以下3种数据库:

  • Use “pgsql” for PostgreSQL

  • Use “mysql” for MySQL and MariaDB.

  • Use “sqlite” for SQLite.

6.APP_URL

1
APP_URL=http://localhost

输入你的网址。

7.其他

其他一些选配的,在程序内都有说明,根据其中自行配置即可。

安装

通过以下命令载入配置并安装:

1
2
3
php artisan migrate:refresh --seed
php artisan firefly-iii:upgrade-database
php artisan passport:install

配置Nginx

这边推荐一个最简单的配置,官方的配置信息没有看到,有看到的可以留言告诉我。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
listen 80 default_server;
listen [::]:80 default_server;

server_name firefly.yydnas.cn;

root /var/www/firefly-iii/public;

location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

访问

打开地址,正常访问。

不过这个密码把我难住了,要16个字符,真的多。。。

登录后台可以直接填入目前的账户以及余额进行记录。

然后就是仪表盘界面了,界面简洁美观,右上角 + 直接可以添加相应收支。

问题

在生产环境下,由于我的系统环境为 en_US ,改为中文界面的时候会有如下提示:

Firefly III 无法格式化货币金额,因为您的服务器缺少必要的软件包。查看 说明 以解决该问题。

解决方法:

1
2
sudo apt-get install -y language-pack-nl-base
sudo locale-gen

重启后看看是否解决问题。如果还是不行的话,在服务器上单独安装中文语言包试试看:

1
2
apt install language-pack-zh-hans-base
apt install language-pack-zh-hans

设置Cron作业

方法一:

1
sudo crontab -u www-data -e

内容为:

1
0 3 * * * /usr/bin/php /var/www/firefly-iii/artisan firefly-iii:cron

方法二:

创建 firefly-iii-cron.service

1
vim /etc/systemd/system/firefly-iii-cron.service

内容为:

1
2
3
4
5
6
7
[Unit]
Description=Firefly III recurring transactions
Requires=httpd.service php-fpm.service postgresql.service

[Service]
Type=oneshot
ExecStart=/usr/bin/php /var/www/firefly-iii/artisan firefly-iii:cron

创建 firefly-iii-cron.timer

1
vim /etc/systemd/system/firefly-iii-cron.timer

内容为:

1
2
3
4
5
6
7
8
[Unit]
Description=Firefly III recurring transactions

[Timer]
OnCalendar=daily

[Install]
WantedBy=timers.target

然后输入命令:

1
2
systemctl enable firefly-iii-cron.timer
systemctl start firefly-iii-cron.timer

第三方应用

ios端的有 Abacus for Firefly III 应用。

使用步骤:

  1. 进入 Firefly 后台 - 选项 - 个人档案 - OAuth授权 - 创建新客户端

  2. 输入内容,名称 任意 ,跳转网址abacusiosapp://redirect

  3. 点击 创建 ,然后复制 密钥

  4. 回到手机端,输入对应的信息,点击登录

  5. 在弹出界面登录Firefly

  6. 成功授权

  7. 成功连接

更多可以访问 Third-party tools 查看。

升级

程序本身不支持后台自动升级,需要自行手动安装。

在你的安装目录运行以下命令:

1
composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii-updated <next_version>

<next_version> 为需要升级到的版本(最新版本)

这时候目录中就有 firefly-iii-updated 文件夹。

然后分别执行以下命令:

1
2
3
cp firefly-iii/.env firefly-iii-updated/.env	#复制现有的 .env 环境配置到更新的版本中
cp firefly-iii/storage/upload/* firefly-iii-updated/storage/upload/ #复制上传文件
cp firefly-iii/storage/export/* firefly-iii-updated/storage/export/ #复制导出文件

如果使用的是SQLite数据库,需要把数据库文件一起移动到对应的文件夹内

执行下面的命令进行完成升级:

1
2
3
4
5
6
7
8
cd firefly-iii-updated
rm -rf bootstrap/cache/*
php artisan cache:clear
php artisan migrate --seed
php artisan firefly-iii:upgrade-database
php artisan passport:install
php artisan cache:clear
cd ..

完成升级,现在只需将 firefly-iii-updated 更名为 firefly-iii 即可。

1
2
mv firefly-iii firefly-iii-old
mv firefly-iii-updated firefly-iii

如果提示 500 Error,那么还是要设置一下权限:

1
2
>sudo chown -R www-data:www-data firefly-iii
>sudo chmod -R 775 firefly-iii/storage

最后

不得不说,Firefly的功能是我这几天看下来最全,界面也是最好看的一款开源程序了。

虽然在网站配置上面稍微走了点弯路,多花了点时间,但是在使用下来,尤其是web端的使用感受是非常好的,其实都可以不需要手机app连接,直接在web界面就已经足够使用了。

之前一直在使用的 随手记 ,感觉它可以功成身退了。。。

其实,最简单的是下载一个记账软件,但是数据相当于共享给开发者,再高端些就是自己部署这类财务管理应用,至少数据不用担心,这两个都是很简单的事情,难就难在持之以恒的坚持记账。