可协作植物管理工具HortusFox

什么是 HortusFox ?

HortusFox 是一个自托管的协作植物管理系统,您可以在自己的环境中使用它来管理所有的植物。您可以添加植物,并附带各种详细信息和照片,并将它们分配到环境中的位置。系统提供了一个仪表板,显示所有重要的概览信息。该系统还具有警告系统,以指示哪些植物需要特殊关注,还包括用户身份验证、任务、库存管理、协作聊天和用户所采取的操作历史记录。该系统支持协作管理,因此您可以与多个用户共同管理您的植物。

这是国外一位程序员为女朋友开发的,用于记录她家里 100 多株植物的情况

软件特点:

  • 管理植物并将其分配到位置
  • 包括植物的许多详细信息,以及标签系统和照片上传功能
  • 任务功能:跟踪植物养育所需的任务
  • 库存管理系统:跟踪与植物相关的库存
  • 搜索功能:搜索文本标记或植物 ID
  • 植物历史记录:跟踪已经消失的植物
  • 群组聊天:交流重要的与植物相关的信息
  • 管理员仪表盘:管理系统、用户、位置和媒体
  • 用户仪表盘:查看位置和其他重要信息

你可以先去官方演示站点进行体验:https://www.hortusfox.com/demo

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

官方提供了 Dockerfile 文件,但没找到镜像,所以需要自己编一下,对应的软件版本为 v1.6

构建镜像和容器运行的基本命令如下👇

1
2
3
4
5
6
7
8
9
10
11
# 下载代码
git clone https://github.com/danielbrendel/hortusfox-web.git

# 进入目录
cd hortusfox-web

# 构建镜像
docker build -t wbsu2003/hortusfox-web:v1 .

# 运行容器
docker-compose up -d

安装

在群晖上以 Docker 方式安装。

需要注意的是,群晖内核版本太低会遇到下面的错误,这个 AH00141 已经遇到多次了,老苏除了换机器,也没找到其他的办法;

1
Function not implemented: AH00141: Could not initialize random number generator

在注册表中搜索 hortusfox ,选择第二个 wbsu2003/hortusfox,版本选择 latest

涉及到前、后端两个容器,所以采用 docker-compose 安装更简单一些

请将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
version: '3.8'

services:
app:
image: wbsu2003/hortusfox-web
container_name: hortusfox-web
ports:
- "3094:80"
environment:
APP_DEBUG: "true"
DB_HOST: db
DB_PORT: 3306
DB_DATABASE: hortusfox
DB_USERNAME: hortusfox
DB_PASSWORD: password
DB_CHARSET: "utf8mb4"
HORTUSFOX_ADMIN: wbsu2003@gmail.com
HORTUSFOX_PASSWORD: 123456
depends_on:
- db

db:
image: mariadb
container_name: hortusfox-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_DATABASE: hortusfox
MYSQL_USER: hortusfox
MYSQL_PASSWORD: password
ports:
- "3308:3306"
volumes:
- ./data:/var/lib/mysql
  • 容器 hortusfox-db 的环境变量
可变
MYSQL_ROOT_PASSWORD 数据库用户 root 用户对应的密码
MYSQL_DATABASE 数据库库名
MYSQL_USER 数据库用户
MYSQL_PASSWORD 数据库用户对应的密码
  • 容器 hortusfox-web 的环境变量
可变
APP_DEBUG 调试模式
DB_HOST 数据库主机
DB_PORT 数据库端口
DB_DATABASE 数据库库名,对应 MYSQL_DATABASE 的值
DB_USERNAME 数据库用户,对应 MYSQL_USER 的值
DB_PASSWORD 数据库主机,对应 DB_PASSWORD 的值
DB_CHARSET 数据库字符集
HORTUSFOX_ADMIN 管理员账号,不设会有默认值
HORTUSFOX_PASSWORD 管理员密码,不设会自动生成

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 hortusfox 和 子目录
mkdir -p /volume2/docker/hortusfox/data

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

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

# 一键启动数据库
docker-compose up -d db

# 稍等一会再一键启动
docker-compose up -d

一定要先启动数据库,等一会儿再启动 HortusFox,否则会登录失败

以往到这里就结束了,但是这个镜像还不行,因为在上传植物照片时,会报错

经过老苏的测试,发现应该是图片目录权限是 755 没有写入权限导致的。既然知道了原因,就好办了

1
2
3
4
5
# 进入容器
docker exec -it hortusfox-web /bin/bash

# 修改目录权限
chmod 777 ./public/img

运行

在浏览器中输入 http://群晖IP:3094 就能看到登录界面

如果你没有设置 HORTUSFOX_ADMINHORTUSFOX_PASSWORD,容器 hortusfox-web 在启动时会自动生成管理员账号和密码,在日志中能找到

这界面风格应该是为移动端浏览器设计的

软件支持多语言,但是目前只有 英文德文

添加 Locations

从设置中找到 Locations

Add Location 添加区域

关于 Icon 支持 Font Awesome 5,老苏参照官方的图标,在这里找到了几个常用的图标
https://www.w3schools.com/icons/fontawesome5_intro.asp

  • 花园:fas fa-leaf
  • 阳台:fas fa-crow
  • 卧室:fas fa-bed
  • 游戏室:fas fa-gamepad
  • 厨房:fas fa-utensils
  • 客厅:fas fa-couch
  • 浴室:fas fa-bath

添加成功后,可以修改和删除

回到首页

添加 Plant

Add Plant 添加植物

  • 似乎对图片的兼容性不是太好,比较容易报错;
  • 图片目录没有映射到本地目录,所以重装会导致图片丢失;

添加成功,可以继续添加其他的植物

回到首页

创建任务

Create new 创建新任务

任务有点简陋

已经完成的任务,可以在 Done 里找到

其他还有库存(Inventory)、聊天(Chat) 等功能,有兴趣可以自己摸索

参考文档

danielbrendel/hortusfox-web: Self-hosted collaborative plant management system for your local environment
地址:https://github.com/danielbrendel/hortusfox-web

hortusfox.github.io
地址:https://hortusfox.github.io/

HortusFox: Plant Manager App
地址:https://www.hortusfox.com/

HortusFox, the selfhosted & collaborative plant manager app, reached version 1.6 today! : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/193kmr8/hortusfox_the_selfhosted_collaborative_plant/

What is HortusFox? An explanation : hortusfox
地址:https://www.reddit.com/r/hortusfox/comments/18ybo0r/what_is_hortusfox_an_explanation/