Windows Docker 部署 Firefly III 开源记账软件

news2025/1/12 9:59:54

一、简介

Firefly III是一款开源的记账软件,支持全球多种语言。它可以帮助用户追踪和管理个人账目、预算和账单,减少支出,节省更多。该软件支持多种货币、银行账户和投资账户,并提供了丰富的报表功能,帮助用户更好地了解个人财务状况。此外,Firefly III还支持使用预算、类别和标签,支持导入数据,并提供许多简洁的财务报告。

Firefly III是自我托管和开源的,意味着它是免费的,没有广告,没有跟踪。用户可以自主搭建个人的财务管理服务,并提供了开放的接口,支持跨平台使用和同步,因此不管是对于个人还是公司来说,都比较适用。如需更多关于Firefly III的信息,建议直接访问其官方网站或查阅相关用户评价和使用手册。

二、部署 DB 依赖

Firefly III 数存储在数据库中,我们这里使用的是 MySQL 数据库。打开 Docker Desktop,切换到 Linux 容器。然后在 PowerShell 执行下面命令,即可启动一个 MySQL 服务。这里安装的是 8.3.0 Tag版本,如果需要安装其他或者最新版本,可以到 Docker Hub 进行查找。

docker run -itd -p 3306:3306 `
--name mysql-8.3.0 `
--restart always -v C:\ProgramDatas\Docker\Containers\mysql-8.3.0\data:/var/lib/mysql `
-v C:\ProgramDatas\Docker\Containers\mysql-8.3.0\conf.d:/etc/mysql/conf.d `
-e MYSQL_ROOT_PASSWORD=123abcABC@! `
mysql:8.3.0

-参数 --restart always 在容器退出时总是重启容器。
-参数 -e MYSQL_ROOT_PASSWORD=123abcABC@! 是环境变量,指定了 MySQL 默认 root 用户的密码。更多环境变量信息可以访问 Environment Variables。
-参数 -v C:\ProgramDatas\Docker\Containers\mysql-8.3.0\data:/var/lib/mysql 将容器内的 /var/lib/mysql 数据目录映射到物理机的 C:\ProgramDatas\Docker\Containers\mysql-8.3.0\data 目录下。
参数 -v C:\ProgramDatas\Docker\Containers\mysql-8.3.0\conf.d:/etc/mysql/conf.d 将容器内的 /etc/mysql/conf.d 配置目录映射到物理机的 C:\ProgramDatas\Docker\Containers\mysql-8.3.0\conf.d 目录下。

三、部署 Firefly III

打开 Docker Desktop,切换到 Linux 容器。然后在 PowerShell 执行下面命令,即可启动一个 Firefly III 服务。这里安装的是 6.1.13 Tag版本,如果需要安装其他或者最新版本,可以到 Docker Hub 进行查找。

docker run -d -p 8080:8080 `
--restart always `
--name fireflyiii-6.1.13 `
-v C:\ProgramDatas\Docker\Containers\fireflyiii-6.1.13\upload:/var/www/html/storage/upload `
-v C:\ProgramDatas\Docker\Containers\fireflyiii-6.1.13\export:/var/www/html/storage/export  `
-e APP_KEY=12345678901234567890123456789012 `
-e DB_HOST=host.docker.internal `
-e DB_PORT=3306 `
-e DB_CONNECTION=mysql `
-e DB_DATABASE=FireflyIII `
-e DB_USERNAME=root `
-e DB_PASSWORD=123abcABC@! `
fireflyiii/core:version-6.1.13

容器启动后,程序会检测初始化 DB。如下图 :
在这里插入图片描述

四、Web UI

打开浏览器,访问 http://localhost:8080 地址,即可看到 Firefly III 界面。第一次登录,需要初始化一个账号。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Netty客户端发送数据给服务器的两个通道(1)

EventLoopGroup group new NioEventLoopGroup();// 设置的连接group。 Bootstrap bootstrap new Bootstrap().group(group).option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000) // 超时时间。 .channel(NioSocketChannel.class).handler(new ChannelInitializer() { Ov…

JVM专题——类文件加载

本文部分内容节选自Java Guide和《深入理解Java虚拟机》, Java Guide地址: https://javaguide.cn/java/jvm/class-loading-process.html 🚀 基础(上) → 🚀 基础(中) → 🚀基础(下&a…

Makefile:make install的实现(十一)

1、make install的概念 在Linux环境下有些时候软件或者服务会通过源码安装,执行一些make、make install、make clean的指令。例如:redis make:编译所有的文件、生成一些动态库、静态库、可执行程序等等make install:通常会创建一个…

Qt | Qt 框架结构概述

一、Qt 基本框架概述 1、Qt 5 引入了模块化的概念,Qt 5 将实现众多功能的 Qt 库细分为各个模块,也就是说一个模块中包含了实现某种功能的众多 C++类库,比如 Qt GUI 模块用于图形用户界面绘制,该模块中包含了实现 GUI 组件的类库,比如 QFont、QImage、QOpenGL、QWindow 等…

11.python的字典dict(下) 遍历字典,结构优化

11.python的字典dict(下) 遍历所有的键值对 items()方法是字典的一个内置方法,用于返回字典中所有键值对的视图(view)。它返回一个可迭代的对象,每个元素都是一个包含键和对应值的元组。 下面用一个例子来说明items()方法的用法…

闻风丧胆的算法(二)

🌈个人主页:Rookie Maker 🔥 系列专栏:算法 🏆🏆关注博主,随时获取更多关于IT的优质内容!🏆🏆 😀欢迎来到小田代码世界~ 😁 喜欢的小…

第十二届通信和宽带网络国际会议(ICCBN 2024)即将召开!

2024年第十二届通信和宽带网络国际会议将于2024年7月25日至27日在西藏林芝举行会议涵盖的议题广泛多样,包括但不限于:5G、6G技术与应用,宽带网络架构和优化,物联网与智能连接,人工智能在通信领域的应用,数据…

C++ 标准库类型stackqueue

C/C总述:Study C/C-CSDN博客 栈与队列详解(数据结构):栈与队列_禊月初三-CSDN博客 stack(栈) stack的常用函数 函数说明功能说明stack()构造空栈push(T& val)将元素val压入栈中size()返回栈中元素个…

蓝桥杯算法题:区间移位

题目描述 数轴上有n个闭区间&#xff1a;D1,...,Dn。 其中区间Di用一对整数[ai, bi]来描述&#xff0c;满足ai < bi。 已知这些区间的长度之和至少有10000。 所以&#xff0c;通过适当的移动这些区间&#xff0c;你总可以使得他们的“并”覆盖[0, 10000]——也就是说[0, 100…

【数据结构(一)】初识数据结构

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你学更多数据结构知识 目录 1.前言2.集合架构3.时间和空间复杂度3.1算法效率3.2时间复杂度3.2.1大O的渐进…

Unity类银河恶魔城学习记录12-4 p126 Item Tooltip源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI.cs using System.Collections; using System.Collections.Generic; usi…

AD20全流程的使用笔记

目录 首先一个完整的AD工程文件需要我们自己建立的文件有这些&#xff1a; 新建工程&#xff1a; 从现有的工程文件中将元件添加到原理图库&#xff1a; 元件的摆放&#xff1a; 器件的复制及对齐&#xff1a; 导线、Netlabe、端口的添加&#xff1a; Value值的校对&…

每日一练 寻找两个正序数组的中间数

题目参上&#xff0c;以下是解题思路&#xff1a; 首先&#xff0c;我们应该想到的一种方法是把两数组合并为一个整体的数组&#xff0c;然后返回其中位数即可。那么我们如何合并两数组呢&#xff1f;我们可以用归并排序&#xff0c;设置上下两指针&#xff0c;不断遍历返回较…

idea Springboot校园新闻系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 校园新闻发布系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&a…

LeetCode-217存在重复的元素

217 存在重复的元素 给定一个整数数组&#xff0c;判断是否存在重复元素。 如果存在一值在数组中出现至少两次&#xff0c;函数返回 true 。如果数组中每个元素都不相同&#xff0c;则返回 false 。 JavaScript的 Array 对象是用于构造数组的全局对象&#xff0c;数组是类似…

如何在iPhone上恢复永久删除的照片?

2007 年&#xff0c;Apple Inc. 推出了这款震撼人心的智能手机&#xff0c;后来被称为 iPhone。您会惊讶地发现&#xff0c;迄今为止&#xff0c;Apple Inc. 已售罄 7 亿台 iPhone 设备。根据 2023 年 8 月的一项调查数据&#xff0c;95% 的智能手机利润都落入了苹果公司的口袋…

【Vue】watch监听复杂数据,新值与旧值一样

问题 watch监听复杂数据&#xff0c;例如数组&#xff0c;旧值与新值一样 解决方案 监听回调里返回新数组&#xff0c;新、旧数组地址改变&#xff0c;得到的值也就不一样&#xff0c;例↓ ()>[...data] 码 test.js // 数据 const musicList ref([{ id: 540000200805…

兑换码生成算法

兑换码生成算法 兑换码生成算法1.兑换码的需求2.算法分析2.重兑校验算法3.防刷校验算法 3.算法实现 兑换码生成算法 兑换码生成通常涉及在特定场景下为用户提供特定产品或服务的权益或礼品&#xff0c;典型的应用场景包括优惠券、礼品卡、会员权益等。 1.兑换码的需求 要求如…

软考--软件设计师(软件工程总结2)

目录 1.测试方法 2.软件项目管理 3.软件容错技术 4.软件复杂性度量 5.结构化分析方法&#xff08;一种面向数据流的开发方法&#xff09; 6.数据流图 1.测试方法 软件测试&#xff1a;静态测试&#xff08;被测程序采用人工检测&#xff0c;计算机辅助静态分析的手段&…

MyBatis 解决上篇的参数绑定问题以及XML方式交互

前言 上文:MyBatis 初识简单操作-CSDN博客 上篇文章我们谈到的Spring中如何使用注解对Mysql进行交互 但是我们发现我们返回出来的数据明显有问题 我们发现后面三个字段的信息明显没有展示出来 下面我们来谈谈解决方案 解决方案 这里的原因本质上是因为mysql中和对象中的字段属性…