Nas Docker 安装个人记账web项目:firefly_iii &beancount-gs
1.经过搜索以及GPT的询问,通过预览界面感觉firefly_iii
官方示例demo:https://demo.firefly-iii.org/
官方安装文档:https://docs.firefly-iii.org/firefly-iii/installation/docker/
本人采用的是群晖Nas docker安装:
这个因为是自己个人要用的,懒得装云服务器上了,后面内网穿透即可外部网络访问了
采用的docker compose
官方三个文档地址:
docker-compose文件
https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose.yml
.env文件(名字改为.env)
https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example
database.env(名字改为.db.env)
https://raw.githubusercontent.com/firefly-iii/docker/main/database.env
本人的文件:
docker-compose文件
version: '3'
services:
app:
image: fireflyiii/core:latest
restart: always
volumes:
- firefly_iii_upload:/var/www/html/storage/upload
env_file: .env
ports:
- 80:8080
depends_on:
- db
db:
image: mariadb
hostname: fireflyiiidb
restart: always
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_USER=firefly
- MYSQL_PASSWORD=secret_firefly_password # 改成你自己的密码
- MYSQL_DATABASE=firefly
volumes:
- firefly_iii_db:/var/lib/mysql
volumes:
firefly_iii_upload:
firefly_iii_db:
.env的配置修改
# Use "pgsql" for PostgreSQL
# Use "mysql" for MySQL and MariaDB.
# Use "sqlite" for SQLite.
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=firefly
DB_USERNAME=firefly
DB_PASSWORD=secret_firefly_password # 改成你自己的密码,与上面保持一致
执行命令
//没权限加sudo即可
docker-compose -f docker-compose.yml up -d
总结:
1.这样写就不用.db.env了,在environment参数里面就写完了
2.修改.env的配置:默认是mysql 你只需要修改这个DB_PASSWORD 为上面的docker-compose.yml文件的密码一样即可,如果需要换成别的数据库,看官方的注释信息改成pgsql或者sqlite都行
3.正常情况下你访问你的 ip+80即可访问,注册第一个账号就是管理员,后面会关闭注册。
4.由于我是部署完之后写博客的,没有第一时间截图,你只需要跟着系统引导即可,选择好中文,后面就通了,可以看上面写的官方显示demo
遇到的问题
一般可以用docker安装的我都会本地笔记本先安装一遍,再去服务器上部署,这样免得在自己的服务器或者Nas一致出现问题。
结果表明,本地windows一切正常,一行命令即可。系统初始化数据库表之后,即可访问。
但是在Nas docker里面,他一直不能访问数据库,我尝试过很多种方法,我把数据库的端口暴露出来,然后手动创建了对应的数据库,但是不能连接
错误
错误如下:但是这个只是警告,翻译过来就是没验证然后被服务器断开了连接。我windows也有这个warning,但是这个正常访问。
官方也有对应的issue,但是是20年的,我也将对应的ip改为宿主机的ip以及权限等等。
2023-05-20 1:12:30 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.22.0.4' (This connection closed normally without authentication)
解决方案:我是采用的postgresql,然后在Nas 里面正常运行
如果反代需要修改.env配置:
自己在.env里面搜索前面的字段
TRUSTED_PROXIES=**
APP_URL=http://localhost //改为你的域名
自己使用之后发现不适合我,有点复杂,但是可以用
---------------------------------------------------------------分割线
beancount-gs的安装
docker-compose.yml文件
version: "3.9"
services:
app:
container_name: beancount-gs
image: xdbin/beancount-gs:latest
ports:
- "10000:80"
# volumes 挂载目录会导 /app/public/icons 中的图标被覆盖,这里将默认图标在挂载后重新拷贝图标
command: >
sh -c "cp -rn /app/public/default_icons/* /app/public/icons && ./beancount-gs -p 80"
volumes:
- ./bak:/app/bak
- ./config:/app/config
- ./data:/data/beancount
- ./icons:/app/public/icons
执行命令
docker-compose up -d //没权限加sudo 即可
注意
1.如果自己的电脑或者服务器不支持创建对应的文件夹,记得手动创建bak、config、data、icons文件夹
2.端口不能改成别的,只能10000,我测试的时候,改成了10080,但是容器运行了,没有错误,但是没有出来初始化界面。换成10000又可以。所以注意不要修改。可能是bug,也可能是他监听的10000端口,不纠结了,能用就行。
使用地址与教程:
https://www.yuque.com/chuyi-ble7p/beancount-gs/mavcdw
初始化不知道的话,看地址:https://www.yuque.com/chuyi-ble7p/beancount-gs/eq81d8
初始化
密钥不是自己设置的密码:而是初始化系统生成的,看自己的docker 这个容器的日志,找到Secret token,这里填上这个即可
后续创建账本的密码是自己设置的,这个是需要第一次初始化填即可
[Info] [2023-05-21 01:37:52] [System]: beancount-gs start at http://localhost:80 or http://172.20.0.2:80
[Info] [2023-05-21 01:37:52] [System]: Secret token is xxiaOqxoF62zGkww
[GIN-debug] Listening and serving HTTP on :80
账本存储位置:账本数据和配置的磁盘存储路径。(默认设置为 /data/beancount 即可)
注意:如果使用 docker 启动服务,这里设置的路径为 docker 容器中的账本存储路径。
例:
volumes:
- "{dataPath:-/docker/beancount}"
以上配置中,即把物理机器的 /machine/beancount
目录映射为 docker 的 /docker/beancount
目录,这里的账本存储位置应该设置为 /docker/beancount
。参考:
账本开始日期:账户的默认开始时间。(默认设置为 1970-01-01 即可)
使用总结:
收入与支出的数量要一致
支出
收入
与支出差不多,不过由于是支付宝账号增加金额,所以这里填写正数。建议保存一个模板,下次只需要填写细节和金额即可
参考博客:
https://www.yuque.com/chuyi-ble7p/beancount-gs/mavcdw
https://blog.csdn.net/wbsu2004/article/details/124920383
https://blog.csdn.net/wbsu2004/article/details/122583477