简介
Firefly III 是一款自托管和开源的个人财务的管理应用。免费,没有广告,没有跟踪。
它可以帮助你跟踪支出、收入、预算和两者之间的一切。它支持信用卡、共享家庭账户和储蓄账户。它还有许多整洁的财务报告可用。通过记录你的支出和收入,你可以做出相应的预算并节省资金。
安装前准备
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
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 查看最新版本
cd /var/www
composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii 6.0.4
赋予权限:
sudo chown -R www-data:www-data firefly-iii
sudo chmod -R 775 firefly-iii/storage
配置
打开程序目录的 .env
文件,编辑其中的内容:
1.Owner
SITE_OWNER=mail@example.com
2.APP_KEY
APP_KEY=base64:xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxx=
可以运行
php artisan key:generate
来自动生成。装完了我才知道,这个在上面安装的时候就已经自动生成,这边不需要再次生成。
3.DEFAULT_LANGUAGE
DEFAULT_LANGUAGE=zh_CN
改为中文。
查看支持的语言
4.时区
改为上海。
TZ=Asia/Shanghai
5.数据库
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
APP_URL=http://localhost
输入你的网址。
7.其他
其他一些选配的,在程序内都有说明,根据其中自行配置即可。
安装
通过以下命令载入配置并安装:
php artisan migrate:refresh --seed
php artisan firefly-iii:upgrade-database
php artisan passport:install
配置Nginx
这边推荐一个最简单的配置,官方的配置信息没有看到,有看到的可以留言告诉我。
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 无法格式化货币金额,因为您的服务器缺少必要的软件包。查看 说明 以解决该问题。
解决方法:
sudo apt-get install -y language-pack-nl-base
sudo locale-gen
重启后看看是否解决问题。如果还是不行的话,在服务器上单独安装中文语言包试试看:
apt install language-pack-zh-hans-base
apt install language-pack-zh-hans
设置Cron作业
方法一:
sudo crontab -u www-data -e
内容为:
0 3 * * * /usr/bin/php /var/www/firefly-iii/artisan firefly-iii:cron
方法二:
创建 firefly-iii-cron.service
:
vim /etc/systemd/system/firefly-iii-cron.service
内容为:
[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
:
vim /etc/systemd/system/firefly-iii-cron.timer
内容为:
[Unit]
Description=Firefly III recurring transactions
[Timer]
OnCalendar=daily
[Install]
WantedBy=timers.target
然后输入命令:
systemctl enable firefly-iii-cron.timer
systemctl start firefly-iii-cron.timer
第三方应用
ios端的有 Abacus for Firefly III 应用。
使用步骤:
-
进入
Firefly 后台
-选项
-个人档案
-OAuth授权
-创建新客户端
。 -
输入内容,
名称
任意 ,跳转网址
为abacusiosapp://redirect
-
点击
创建
,然后复制密钥
-
回到手机端,输入对应的信息,点击登录
-
在弹出界面登录Firefly
-
成功授权
-
成功连接
更多可以访问 Third-party tools 查看。
升级
程序本身不支持后台自动升级,需要自行手动安装。
在你的安装目录运行以下命令:
composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii-updated <next_version>
<next_version>
为需要升级到的版本(最新版本)
这时候目录中就有 firefly-iii-updated
文件夹。
然后分别执行以下命令:
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数据库,需要把数据库文件一起移动到对应的文件夹内
执行下面的命令进行完成升级:
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
即可。
mv firefly-iii firefly-iii-old
mv firefly-iii-updated firefly-iii
如果提示 500 Error,那么还是要设置一下权限:
sudo chown -R www-data:www-data firefly-iii sudo chmod -R 775 firefly-iii/storage
最后
不得不说,Firefly的功能是我这几天看下来最全,界面也是最好看的一款开源程序了。
虽然在网站配置上面稍微走了点弯路,多花了点时间,但是在使用下来,尤其是web端的使用感受是非常好的,其实都可以不需要手机app连接,直接在web界面就已经足够使用了。
之前一直在使用的 随手记
,感觉它可以功成身退了。。。
其实,最简单的是下载一个记账软件,但是数据相当于共享给开发者,再高端些就是自己部署这类财务管理应用,至少数据不用担心,这两个都是很简单的事情,难就难在持之以恒的坚持记账。