私人记账本程序cashbook

news2024/12/21 1:50:01

在这里插入图片描述

什么是 cashbook ?

cashbook 是一个私人或家庭记账程序,支持私有化部署,商用或其他使用不受约束。建议使用者每年创建一个账本,图表功能可以起到分析全年数据的效果。

官方提供了演示站点,但不建议记录真实数据

  • 演示账本钥匙:fScrX9FwtiE

地址: https://cash.oldmoon.top

安装

环境变量

mongo 相关的环境变量

变量缺省值描述
TZ时区
MONGO_INITDB_ROOT_USERNAME数据库root用户名
MONGO_INITDB_ROOT_PASSWORD数据库root用户的密码

cashbook 相关的环境变量

变量缺省值描述
TZAsia/Shanghai时区
CASHBOOK_ENVIRONMENTpersonal个人
CASHBOOK_MONGODB_URLmongodb://localhost:27017/cashbook?authSource=admin数据库链接地址

CASHBOOK_MONGODB_URL:一般是 mongodb://[username:password@]host1[:port1][/[database][?options]],含义如下:

  • username:password@:可选项,表示 MongoDB 的用户名和密码,用于进行身份验证。
  • host1[:port1]:必选项,表示 MongoDB 数据库所在的主机和端口号。
  • /database:可选项,表示连接到 MongoDB 的哪个数据库。
  • ?options:可选项,表示连接 MongoDB 的其他选项,例如连接超时时间、读写权限等。

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 cashbook 和 子目录
mkdir -p /volume2/docker/cashbook/data

# 进入 cashbook 目录
cd /volume2/docker/cashbook

# 运行 mongo 容器
# 注意:老苏没有对外暴露端口
docker run -d \
   --restart unless-stopped \
   --name cashbook_db \
   -v $(pwd)/data:/data/db \
   -e TZ=Asia/Shanghai \
   -e MONGO_INITDB_ROOT_USERNAME=cashbook \
   -e MONGO_INITDB_ROOT_PASSWORD=yourpassword \
   mongo:4.4.0

# 运行 cashbook 容器  
docker run -d \
   --restart unless-stopped \
   --link cashbook_db:mongo \
   --name cashbook_web \
   -p 5680:80 \
   -e TZ=Asia/Shanghai \
   -e CASHBOOK_ENVIRONMENT=personal \
   -e CASHBOOK_MONGODB_URL=mongodb://cashbook:yourpassword@mongo:27017/cashbook?authSource=admin \
   dingdangdog/cashbook:latest

docker compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3"

services:
  cashbook:
    image: dingdangdog/cashbook:latest
    container_name: cashbook_web
    restart: always
    ports:
      - 5680:80
    environment:
      TZ: "Asia/Shanghai"
      CASHBOOK_ENVIRONMENT: "personal"
      CASHBOOK_MONGODB_URL: "mongodb://cashbook:yourpassword@mongo:27017/cashbook?authSource=admin"

  mongo:
    image: mongo:4.4.0
    container_name: cashbook_db
    restart: always
    volumes:
      - ./data:/data/db
    environment:
      TZ: "Asia/Shanghai"
      MONGO_INITDB_ROOT_USERNAME: cashbook
      MONGO_INITDB_ROOT_PASSWORD: yourpassword

然后执行下面的命令

# 新建文件夹 cashbook 和 子目录
mkdir -p /volume2/docker/cashbook/data

# 进入 cashbook 目录
cd /volume2/docker/cashbook

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5680 就能看到主界面

第一次直接点 创建

输入账本的名称后确定

生成的秘钥,一定要妥善保管

2mf41jdGPvi

新增流水

新增 开始输入

确定之后

又随便编了几条数据

日消费统计曲线

打开 日消费统计曲线,这是按 日期 统计的数据

消费类型统计饼图

打开 消费类型统计饼图,这是按 消费类型 统计的数据

消费日历

打开 消费日历,能看到哪天有消费

退出

只要 关闭账本 即可,系统很贴心的会再次展示 账本秘钥

如果你还没保存 账本秘钥,一定要保存好

确定后就回到了初始界面

你可以创建新的账本

也可以输入 账本秘钥打开已有的账本

移动端

网页在手机浏览器上也是可以用的

如果你觉得软件能满足你的需要,可以考虑去给作者打个赏,让作者有动力继续完善和更新下去。

参考文档

dingdangdog/cashbook: cashbook(记账本)
地址:https://github.com/DingDangDog/cashbook

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/788749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ardupilot 遥控的输入控制模式

目录 本节主要记录自己整理ardupilot的遥控器的输入控制模式:正常模式、简单模式、超简单模式的理解。 1.正常模式(有头模式) 在不用简单和超简单的模式的情况下,无人机操作员操作的控制输入是对应着不断旋转着的飞行器进行操作的。如上方图所示举例,当无人机操作员进行…

flask中的werkzeug介绍

flask中的werkzeug Werkzeug是一个Python库,用于开发Web应用程序。它是一个WSGI(Web Server Gateway Interface)工具包,提供了一系列实用功能来帮助开发者处理HTTP请求、响应、URLs等等。Werkzeug的设计非常灵活,可以…

基础入门-SpringBoot-自动配置特性

一、自动配好Tomcat 引入Tomcat依赖。配置Tomcat <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.3.4.RELEASE</version><scope>compile</sco…

同城跑腿小程序怎么做

同城跑腿小程序是一款基于地理位置的服务平台&#xff0c;为用户提供了便捷的日常生活服务。以下是该小程序的主要功能介绍&#xff1a; 1. 快速下单&#xff1a;用户可以通过小程序平台快速填写订单信息&#xff0c;包括取送地址、物品类型和重量等信息&#xff0c;然后选择合…

LabVIEW开发环境试验箱控制器

LabVIEW开发环境试验箱控制器 环境或气候试验箱是一种外壳&#xff0c;用于模拟各种材料&#xff08;包括工业产品、生物物质、复合材料、电子设备和航空航天部件&#xff09;的特定环境条件&#xff0c;并评估调节对这些材料的影响。 环境试验箱&#xff08;ETC&#xff09;…

存储过程——游标

1.游标 什么是游标&#xff0c;以及游标使用的相关语法。 #声明游标&#xff0c;存储查询结果集 #准备&#xff1a;创建表结构 #开启游标 #获取游标中的记录 #插入数据到新表中 #关闭游标 create procedure p11(in uage int) begindeclare uname varchar(100);declare upro …

Istio 故障注入与重试的实验

故障注入 Istio流量治理有故障注入的功能&#xff0c;在接收到用户请求程序的流量时&#xff0c;注入故障现象&#xff0c;例如注入HTTP请求错误&#xff0c;当有流量进入Sidecar时&#xff0c;直接返回一个500的错误请求代码。 通过故障注入可以用来测试整个应用程序的故障恢…

DYLD--动态链接器

概念 dyld&#xff08;the dynamic link editor&#xff09;是苹果的动态链接器&#xff0c;是苹果操作系统一个重要组成部分&#xff0c;在系统内核 XNU 完成 Mach-O 文件的加载&#xff0c;做好程序准备工作之后&#xff0c;交由 dyld 负责余下的工作。在 macOS 系统中&…

vue2引入lottie动画

说明下&#xff1a;如果你是vue3的话请移步&#xff1a;https://blog.csdn.net/qq_67801847/article/details/128386661&#xff0c;这里只针对vue2. 同时动画官网链接&#xff1a;lottie官网 实现思路&#xff1a; 1. 安装lottie-web (版本无所谓) 2. 在使用的页面引入组件 #…

一起来看看音频转文字怎么弄吧

从前有一个名叫小明的学生&#xff0c;他在学校里总是很喜欢录制各种有趣的音频&#xff0c;包括老师的讲课、同学们的笑声&#xff0c;以及校园里的各种声音。有一天&#xff0c;他在课堂上录下了老师的授课内容&#xff0c;想着晚上回家后再将它们转换成文字&#xff0c;便于…

网络安全(黑客)学习手册

1.什么是网络安全&#xff1f; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一是市场需求量高&#xff1b; 二则是发展…

Python+大数据开发拿到25k的offer!

随着95后、00后的登场&#xff0c;80后好似成为“古早”的存在&#xff0c;看似被生活磨平了棱角的他们&#xff0c;其实也在渴望重新“支棱”起来。今天分享的这位80后的逆袭故事&#xff0c;希望你能感受到他的力量…… 学科 | Python大数据开发 校区 | 北京 薪资 | 25k 我…

【深度学习之YOLO8】视频流推断

官方V8模型下载 需要准备两个东西 simsun.ttc字体包YOLOv8官方模型成品 ScreenCapture屏幕图像类 import cv2 import mss import numpy as npclass ScreenCapture:"""parameters----------screen_resolution : Tuple[int, int]屏幕宽高&#xff0c;分别为x&a…

5.2.11.添加读写接口

5.2.11.添加读写接口 5.2.11.1、在驱动中添加 5.2.11.2、在应用中添加 5.2.11.3、测试 1. app.c #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>#define FILE "/dev/test" // 刚才mknod创建的设…

K8S中网络如何通信

Kubernetes 提出了一个自己的网络模型“IP-per-pod”&#xff0c;能够很好地适应集群系统的网络需求&#xff0c;它有下面的这 4 点基本假设&#xff1a; 集群里的每个 Pod 都会有唯一的一个 IP 地址。Pod 里的所有容器共享这个 IP 地址。集群里的所有 Pod 都属于同一个网段。…

WT588F02B-8S 血压计语音芯片如何选型?低功耗语音ic方案

一、血压计语音提示方案需求设计&#xff1f; 血压计语音提示方案的需求设计是为了实现在测量血压过程中&#xff0c;通过语音提示用户操作指引、测量结果和健康建议等功能。以下是血压计语音提示方案需求设计的主要需求&#xff1a; &#xff08;1&#xff09;测量操作引导 …

QT---day1(QT的介绍、常用类及组件)

代码&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//设置窗口尺寸this->setFixedSize(600,500);//设置窗口标题this->setWindowTitle(&q…

【MySQL】库和表的操作

目录 一、库的操作 1.1创建数据库 1.2创建数据库案例 1.3字符集和校验规则 &#xff08;1&#xff09;查看系统默认字符集以及校验规则 &#xff08;2&#xff09;查看数据库支持的字符集 &#xff08;3&#xff09;查看数据库支持的字符集校验规则 &#xff08;4&…

万向节死锁

要理解万向节死锁的产生原因&#xff0c;首先要理解欧拉角变换&#xff0c;欧拉角变换是基于最初始的坐标进行变换而非变换后的坐标进行变换。 欧拉角变换需要空间中的三个角&#xff08;即变换后每个轴的偏移量&#xff09;&#xff0c;另外还有每个轴的变换顺序。值得注意的…

SpringSecurity6--认证和授权的原理

SpringSecurity6–认证和授权的原理&#xff0c;项目gitee地址在文章末尾。 文章目录 一、Spring Security简介二、Spring Security框架中认证流程中几个非常重要的类1、 FilterChainProxy2、 AbstractAuthenticationProcessingFilter3、 UsernamePasswordAuthenticationFilter…