部署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 可以使用 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 之后更改密码,它会提示没有访问权限,因为密码已存储在数据库卷中。
指示:
- 将
.env中的DB_PASSWORD改为其他值。选择一个容易记住的密码。DB_PASSWORD=1111111aa - 将
.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 文件中:
- 删除 最后的
volumes:部分(因为我们要用主机路径替代命名卷)。 - 修改
app和db服务中的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

本文来自博客园,作者:舟清颺,转载请注明原文链接:https://www.cnblogs.com/zqingyang/p/19183509

部署Docker开源记账神器Firefly III
浙公网安备 33010602011771号