可协作植物管理工具HortusFox

在这里插入图片描述

什么是 HortusFox ?

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

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

软件特点:

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

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

在这里插入图片描述

构建镜像

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

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

在这里插入图片描述

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

# 下载代码
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 已经遇到多次了,老苏除了换机器,也没找到其他的办法;

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

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

在这里插入图片描述

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

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

version: '3.8'services:app:image: wbsu2003/hortusfox-webcontainer_name: hortusfox-webports:- "3094:80"environment:APP_DEBUG: "true"DB_HOST: dbDB_PORT: 3306DB_DATABASE: hortusfoxDB_USERNAME: hortusfoxDB_PASSWORD: passwordDB_CHARSET: "utf8mb4"HORTUSFOX_ADMIN: wbsu2003@gmail.comHORTUSFOX_PASSWORD: 123456depends_on:- dbdb:image: mariadbcontainer_name: hortusfox-dbrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: my-secret-pwMYSQL_DATABASE: hortusfoxMYSQL_USER: hortusfoxMYSQL_PASSWORD: passwordports:- "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管理员密码,不设会自动生成

然后执行下面的命令

# 新建文件夹 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 没有写入权限导致的。既然知道了原因,就好办了

# 进入容器
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/

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

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

相关文章

小程序系列--6.全局配置

一. 全局配置文件及常用的配置项 二、window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 8. 设置下拉刷新时 loading 的样…

Git 使用与问题记录 二(公司快速上手版)

写在前面 记录自己学习的内容,方便后面忘记的时候查看。给像我一样的新手提供一点参考 正文 上一章已经安装好了Git,如何使用呢。我这里会分享两种办法,第一种是在VS2022中克隆代码,修改和提交;第二种是用命令提交。…

【计算机网络】TCP原理 | 可靠性机制分析(四)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 这里写目录标题 &#x1…

C函数详解 | 函数的作用、定义与声明、函数的调用、函数与指针

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

RISC-V是如何与X86、ARM三分天下

目录 1.行业CPU指令集格局 2.汽车中的RISC-V进展 2.1 国际进展 2.2 国内进展 3.小结 2023年3月2日,在平头哥牵头举办的玄铁RISC-V生态大会上,工程院院士倪光南表示,基于RISC-V模块化、可扩展、容易定制、不受垄断制约等优势,…

电商API接口|Javascript抓取京东、淘宝商品数据

“ 不知怎么建站?就找怎么建站! ” 背景: EDI许可证网站和ICP许可证网站需要有丰富的商品数据来应付EDI、ICP许可证下证审核。下面介绍的这种方法是我之前主要的抓取数据的方法,大概用了一年多。这几天又对这个方法进行了一些优…

11.云原生分布式数据库之TIDB

云原生专栏大纲 文章目录 为什么使用TIDB后端视角运维视角基础架构视角 TiDB Operator 简介软件版本要求部署tidbTIDB工具helm常用命令TIDB学习推荐资料 为什么使用TIDB 从后端视角、运维视角和基础架构视角来看,使用 TiDB 作为数据库系统可以获得分布式架构、高可…

学习Java API(二):基础知识点一文通✅

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读正则表达式正则表达式语法捕获组和分组matches 和 lookingAt 方法split方法r…

LeeCode前端算法基础100题(20)找出字符串中第一个匹配项的下标

一、问题详情: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad", needle = "s…

安全生产管理平台——革新传统安全生产管理方式,重塑企业安全文化

安全生产管理在现代企业中占据着至关重要的地位。传统的安全生产管理方式虽然在一定程度上能够保障企业的生产安全,但随着企业规模的不断扩大和生产环境的日益复杂,其局限性也愈发凸显。而安全生产管理平台的出现,正是为了解决这一问题。 平台…

从六西格玛到DFSS:提升企业创新能力的关键方法——张驰咨询

DFSS(Design for Six Sigma,即六西格玛设计)是一种结合了六西格玛思想和创新设计方法的质量管理方法。它的目标是在产品或服务的设计阶段,通过优化设计过程和减少变异性,以确保产品或服务达到高质量水平,满…

Linux多网卡绑定实现负载均衡详解

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 目录 1、bond的作用 2、Bonding聚合链路工作模…

反射助你无痛使用Semantic Kernel接入离线大模型

本文主要介绍如何使用 llama 的 server 部署离线大模型,并通过反射技术修改 Semantic Kernel 的 OpenAIClient 类,从而实现指定端点的功能。最后也推荐了一些学习 Semantic Kernel 的资料,希望能对你有所帮助。 封面图片: Dalle3 …

软信天成:数据安全管理解决方案分享

近年来,随着数据环境日趋复杂多变和潜在的数据隐私泄露风险潜伏,如何确保企业数据安全已成为众多企业亟待面对与妥善处理的重要问题。 为了应对这一严峻的现实挑战,软信天成凭借专业的知识体系和丰富的实战经验积累,总结出了一套…

Java多线程并发篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、ReadWriteLock 读写锁二、共享锁和独占锁三、重量级锁(Mutex Lock)四、轻量级锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给…

Spring MVC中的一些常用注解

目录 RequestMapping 实现路由映射 限制请求方式 PathVariable 从url中获取变量的值 更改绑定参数的名字 RequestParam 可以传递集合 更改绑定参数的名字 可修改是否为必传参数 RequestBody 获取请求正文的内容 可修改是否为必传参数 RequestPart 可以支持上传…

new mars3d.layer.GeoJsonLayer({实现图标点billboard贴模型聚合效果

说明: 1.【mars3d】的依赖库cesium本身是不支持贴地/贴模型操作的 2.sdk内部异步计算了数据的贴地/高度值之后,更新到图层上实现贴地/贴模型效果的 3.相关的示例链接: 1.功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 4.相关的计算…

【Python数据可视化】matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第(15)篇,也是流量控制系列的第(2)篇。点击上方关注,深入了解支付系统的方方面面。 上一篇介绍了固定时间窗口算法在支付渠道限流的应用以及使用redis…

消息的发送与接收

消息的发送与接收 消息的发送与接收不仅仅是在于聊天功能的实现。其实还有很多种情况也算"消息的发送与接收"。而且我们还可以通过多种方法去实现。我们可以基于实际情况来选择。 WebSocket实现 node做后端。找了好多,前端页面总是用到了jQuery&#x…