当前位置: 首页 > news >正文

部署Docker开源记账神器Firefly III

参考文章:Site Unreachable
官网:GitHub - firefly-iii/firefly-iii: Firefly III: a personal finances manager

使用 Docker - Firefly III 文档 --- Using Docker - Firefly III documentation

Firefly III 搭建个人财务记账平台 - 墨天轮

Firefly III 可以使用 Docker 安装。几乎所有平台都有现成的 Docker 容器。如果您之前从未使用过 Docker,请先自行了解一下。

安装 Firefly III 最简单的方法是使用 Docker Compose,它是一个 Docker 工具,允许您定义和运行多容器 Docker 应用程序。使用 Docker Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,只需一条命令,即可根据配置创建并启动所有服务。

为了方便起见,YAML 文件和所有必要的配置都已在线提供。

如果您有任何疑问,请参阅 Docker 常见问题解答或按照支持页面上的说明与我联系。

准备文件夹

创建主机目录:

mkdir -p /opt/docker-stacks/Firefly-III/upload
mkdir -p /opt/docker-stacks/Firefly-III/db

Docker Compose配置

下载 Docker Compose 文件并将其放置在方便的位置。要将数据导入器包含在您的安装中,请阅读数据导入器的安装指南 。

请保存原始文件,不要从浏览器复制粘贴文本。文件中的空格非常重要。因此,请使用“另存为”功能。

下载配置文件

运行此 Docker Compose 文件需要两个配置文件。请下载所有文件并将它们保存在与 Docker Compose 文件相同的文件夹中。

  • 第一个文件包含 Firefly III 变量,可以从 Firefly III 存储库下载。将其另存为名为 .env 的新文件。
  • 第二个文件包含数据库变量,可以从 Docker 存储库下载。将其另存为名为 .db.env 的新文件。

务必按照此处的说明重命名文件。您可以在 Docker Compose 文件中看到原因。该文件在 env_file: ` 中有引用。如果您没有将其命名为与 Docker Compose 文件中的名称一致,则必须编辑 Docker Compose 文件以匹配文件名。

将配置文件上传到文件夹

.env和.db.env和docker-compose.yml上传到/opt/docker-stacks/Firefly-III/文件夹

修改配置文件

请先更改密码。如果在运行 Firefly III 之后更改密码,它会提示没有访问权限,因为密码已存储在数据库卷中。

指示:

  1. .env 中的 DB_PASSWORD 改为其他值。选择一个容易记住的密码。DB_PASSWORD=1111111aa
  2. .db.env 中的 MYSQL_PASSWORD 更改为相同的值MYSQL_PASSWORD=1111111aa

x86平台忽略本条[切换到 PostgreSQL]

使用 arm/v7 架构(例如部分 Raspberry Pi)的用户可能需要切换到 PostgreSQL,因为这些平台上没有可靠的 MariaDB 和 MySQL 容器。为此,请修改 .env 文件中的以下几行。

DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432

同时,将 .db.env 文件中的变量名从 MYSQL_* 更改为 POSTGRES_*。可以删除 MYSQL_RANDOM_ROOT_PASSWORD。

修改 docker-compose.yml 文件,使其指向 postgres 而不是 mariadb:lts

然后,将卷( firefly_iii_db )下的数据库挂载点更改为 /var/lib/postgresql/data

修改yml文件-数据永久化

docker-compose.yml 文件中:

  1. 删除 最后的 volumes: 部分(因为我们要用主机路径替代命名卷)。
  2. 修改 appdb 服务中的 volumes: 挂载点。
服务 原命名卷挂载 (docker-compose.yml 底部定义) 修改后的主机目录挂载
app - firefly_iii_upload:/var/www/html/storage/upload - /opt/docker-stacks/Firefly-III/upload:/var/www/html/storage/upload
db - firefly_iii_db:/var/lib/mysql - /opt/docker-stacks/Firefly-III/db:/var/lib/mysql

修改后的 docker-compose.yml 结构示例:

# ... (app, db, cron services, 和 networks 部分保持不变)app:# ...volumes:- /opt/docker-stacks/Firefly-III/upload:/var/www/html/storage/upload  # <-- 修改点# ...db:# ...volumes:- /opt/docker-stacks/Firefly-III/db:/var/lib/mysql # <-- 修改点# ...# ❗ 注意:删除原来的 volumes: 段落
# volumes:
#  firefly_iii_upload:
#  firefly_iii_db:

完整yaml

services:  app:    image: fireflyiii/core:latest    hostname: app    container_name: firefly_iii_core    restart: always    volumes:      - /opt/docker-stacks/Firefly-III/upload:/var/www/html/storage/upload    env_file: .env    networks:      - firefly_iii    ports:      - 9006:8080    depends_on:      - db  db:    image: mariadb:lts    hostname: db    container_name: firefly_iii_db    restart: always    env_file: .db.env    networks:      - firefly_iii    volumes:      - /opt/docker-stacks/Firefly-III/db:/var/lib/mysql  cron:    #    # To make this work, set STATIC_CRON_TOKEN in your .env file or as an environment variable    # The STATIC_CRON_TOKEN must be *exactly* 32 characters long    #    image: alpine    restart: always    container_name: firefly_iii_cron    env_file: .env    command: sh -c "      apk add tzdata && \      (ln -s /usr/share/zoneinfo/$$TZ /etc/localtime || true) && \      echo \"0 3 * * * wget -qO- http://app:8080/api/v1/cron/$$STATIC_CRON_TOKEN;echo\"      | crontab - && \      crond -f -L /dev/stdout"    networks:      - firefly_iii    depends_on:      - app# volumes:#  firefly_iii_upload:#  firefly_iii_db:networks:  firefly_iii:    driver: bridge

启动容器

cd /opt/docker-stacks/Firefly-III/

docker-compose.yml 和所有配置文件所在的目录中运行以下命令。

docker compose -f docker-compose.yml up -d --pull=always

可以通过运行以下命令来跟踪安装进度:

docker compose -f docker-compose.yml logs -f

现在可以通过 http://localhost 或 http://docker-ip:port 访问 Firefly III(如果它运行在自定义端口上)。要继续操作,请阅读有关如何创建帐户和交易的教程 。

例如http://192.168.6.197:4000

image

http://www.jsqmd.com/news/28520/

相关文章:

  • 多车轨迹规划
  • 完整教程:RabbitMQ-如何保证消息不丢失
  • 2025 年 11 月酒店加盟公司最新推荐,聚焦高端定制需求与全案交付能力
  • 人工智能与信息物理系统(CPS)的会师:达成物理世界泛化应用的核心路径
  • 2025 年 11 月酒店加盟公司最新推荐,聚焦资质、案例、售后的五家酒店深度解读
  • 2025 年 11 月酒店加盟公司最新推荐,品牌实力与运营保障深度透视
  • Java学习之旅第一季-25:一维数组 - 教程
  • 类和对象-C++运算符重载project7
  • flutter专栏--深入了解widget原理 - 教程
  • 2025 年 11 月酒店加盟公司最新推荐,品牌资质与运营韧性深度解析!
  • C# 中的顺序存储与链式存储详解
  • 2025 年 11 月酒店加盟公司最新推荐,技术实力与市场口碑深度解析
  • 2025 年 11 月酒店加盟公司最新推荐,聚焦跨平台能力与售后体系的实用指南
  • 安全模块阻挡Docker守护进程 (Daemon) 访问home文件夹
  • faust-一个简单的单选下拉菜单代码,用于切换波形。
  • 如何使用React和Redux构建现代化Web应用程序
  • React Hooks 实现表单验证
  • Unreal:SimpleAssetCleaner自动资源清理插件
  • 第11章 STM32 定时器中断的配备和测试
  • 一种单选的视线,但是实际的ui现实不出来
  • 量子计算技术全景:从硬件路线到AI融合 - 教程
  • 100万QPS短链系统、商城微服务系统、Saas点餐系统、商城系统、秒杀系统、刷题吧小程序、智能天气播报AI Agent等9个实战项目
  • geek主题备份
  • 完整教程:【深度学习04】PyTorch:损失函数、优化器、模型微调、保存与加载
  • Chainlink:DeFi量化交易的数据中枢
  • 金仓的数据迁移工具不会用?教你手搓一个万能数据迁移工具。
  • 【C++】map和set的使用 - 指南
  • 【Web安全】转义字符注入?转义也会失效的SQL注入 - 指南
  • isulad容器使用教程
  • 完整教程:基于类的四种设计模式