Nas Docker 安装个人记账web项目:firefly_iii &beancount-gs

596 阅读5分钟

Nas Docker 安装个人记账web项目:firefly_iii &beancount-gs

1.经过搜索以及GPT的询问,通过预览界面感觉firefly_iii

官方示例demo:demo.firefly-iii.org/

官方安装文档:docs.firefly-iii.org/firefly-iii…

本人采用的是群晖Nas docker安装:

这个因为是自己个人要用的,懒得装云服务器上了,后面内网穿透即可外部网络访问了

采用的docker compose

官方三个文档地址:

docker-compose文件

raw.githubusercontent.com/firefly-iii…

.env文件(名字改为.env)

raw.githubusercontent.com/firefly-iii…

database.env(名字改为.db.env)

raw.githubusercontent.com/firefly-iii…

本人的文件:

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)

image.png

解决方案:我是采用的postgresql,然后在Nas 里面正常运行

如果反代需要修改.env配置:

自己在.env里面搜索前面的字段

 TRUSTED_PROXIES=**  APP_URL=http://localhost //改为你的域名

自己使用之后发现不适合我,有点复杂,但是可以用

---------------------------------------------------------------分割线

beancount-gs的安装

docker-compose.yml文件

 version: "3.9" servicesapp:    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端口,不纠结了,能用就行。

使用地址与教程:

www.yuque.com/chuyi-ble7p…

初始化不知道的话,看地址:www.yuque.com/chuyi-ble7p…

初始化

image.png

密钥不是自己设置的密码:而是初始化系统生成的,看自己的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。参考:issue21

**账本开始日期:**账户的默认开始时间。(默认设置为 1970-01-01 即可)

使用总结:

收入与支出的数量要一致

支出

image.png

收入

image.png

与支出差不多,不过由于是支付宝账号增加金额,所以这里填写正数。建议保存一个模板,下次只需要填写细节和金额即可

参考博客:

www.yuque.com/chuyi-ble7p…

blog.csdn.net/wbsu2004/ar…

blog.csdn.net/wbsu2004/ar…

本文使用 文章同步助手 同步