群晖上部署农场管理系统farmOS
什么是 farmOS ?
farmOS
是一个基于Web
的应用程序,用于农场管理、规划和记录保存。它由志愿者社区开发,旨在为农民、开发人员和研究人员提供一个标准平台。
需要注意的是,群晖内核版本太低会遇到下面的错误,这个 AH00141
已经遇到多次了,老苏除了换机器,也没找到其他的办法;
AH00141: Could not initialize random number generator
准备
建数据库
老苏用了群晖自带的 MariaDB 10
数据库。
在 phpMyAdmin
中创建名为 farmos
的空数据库。
为便于说明,假设数据库密码为
123456
所以根据上面的设置,最后得到的数据库相关的参数如下:
- 数据库主机:
192.168.0.197
,与群晖主机IP
一致; - 数据库端口:
3307
- 数据库用户:
farmos
- 数据库密码:
123456
- 数据库库名:
farmos
,因为勾选了与用户同名;
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 farmos
,选择第一个 farmos/farmos
,版本选择 latest
。
本文写作时,
latest
版本对应为3.1.2
;
卷
在 docker
文件夹中,创建一个新文件夹 farmos
,并在其中建一个子文件夹 sites
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/farmos/sites | /opt/drupal/web/sites | 存放站点预构建文件、设置文件等 |
端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
6372 | 80 |
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
# 新建文件夹 farmos 和 子目录
mkdir -p /volume2/docker/farmos/sites# 进入 farmos 目录
cd /volume2/docker/farmos# 运行容器
docker run -d \--restart unless-stopped \--name farmos \-p 6372:80 \-v $(pwd)/sites:/opt/drupal/web/sites \farmos/farmos
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3'services:farmos:image: farmos/farmoscontainer_name: farmosrestart: unless-stoppedports:- 6372:80volumes:- ./sites:/opt/drupal/web/sites
然后执行下面的命令
# 新建文件夹 farmos 和 子目录
mkdir -p /volume2/docker/farmos/sites# 进入 farmos 目录
cd /volume2/docker/farmos# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d
运行
在浏览器中输入 http://群晖IP:6372
就能看到向导界面
按照前面的数据库设置填写
Database type
:使用默认的MySQL, MariaDB, Percona Server, or equivalent
即可;Database name
:数据库库名;Database username
:数据库用户;Database password
:数据库用户对应的数据库密码;
点 Advanced options
Host
:数据库主机,因为使用了群晖自带的MariaDB
,所以这里填群晖主机的IP
;Port number
:数据库端口;Transaction isolation level
:缺省值READ COMMITTED
Table name prefix
:数据库表前缀,farm_
或者farmos_
都是可以的;
点 Save and continue
,会有安装进度显示
开始设置站点名称、账号、国家和时区等
这一步选择需要安装的模块
除了默认的模块外,老苏还勾选了 Translation/localization features
模块,这是语言切换需要的模块。当然,如果现在不安装,后续也可以在设置模块中进行安装
显然选择的模块越多,安装时间会越长
安装完成后的主界面
OpenStreeMap
的加载有点慢,加载完成后
接下来可以开始通过右上角的 Add Asset
添加资产了
Animal
:动物Equipment
:设备Land
:土地Plant
:植物Structure
:建筑,可以指代农场中的各种建筑物,如农舍、谷仓、大棚、温室等Water
:水
如果你安装了更多的模块,可能还会有种子
、肥料
、 传感器
等物资;
中文(失败)
这是一次失败的尝试,有成功的朋友请不吝赐教
先是尝试了官方提供的方法,https://farmos.org/hosting/localization/
通过 Add language
添加 Chinese,Simplifed
但是会显示下载失败,系统中创建了 translations
目录,但是没有内容
手动下载了 po
文件,地址:https://ftp.drupal.org/files/translations/all/drupal/drupal-10.2.3.zh-hans.po
直接放到 translations
目录或者通过 Import
导入,也都没有成功,算了就先这样吧
参考文档
farmOS/farmOS: farmOS: A web-based farm record keeping application.
地址:https://github.com/farmOS/farmOS
paul121/farm-tugboat-demo: Simple site for creating demos of farmOS.
地址:https://github.com/paul121/farm-tugboat-demo
farmOS | 安装
地址:https://farmos.org/hosting/install/
farmOS | 官网
地址:https://farmos.org/
Chinese, Simplified overview | Translations
地址:https://localize.drupal.org/translate/languages/zh-hans
相关文章:

群晖上部署农场管理系统farmOS
什么是 farmOS ? farmOS 是一个基于 Web 的应用程序,用于农场管理、规划和记录保存。它由志愿者社区开发,旨在为农民、开发人员和研究人员提供一个标准平台。 需要注意的是,群晖内核版本太低会遇到下面的错误,这个 AH0…...
Python中的property装饰器:深入解析与实用示例
Python中的property装饰器:深入解析与实用示例 一、引言 在Python中,property装饰器是一个强大的工具,它允许我们定义类的属性,同时保持对这些属性的访问控制。这意味着我们可以在不破坏封装性的前提下,提供对类内部…...

【Linux】使用Jenkins + svn + springboot自动构建jar包并自动打包在服务器上运行
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...

数据库、OS内核安全等精彩继续!龙蜥大讲堂 5 月直播预告来袭
「龙蜥大讲堂」5 月精彩预告来了,点击下方海报抢先了解。本月又是满满的技术干货分享,多位大咖带你共享技术盛宴!直播地址:http://live.bilibili.com/24798267 5 月精彩分享直达 👇 直播主题及内容介绍 一࿱…...

ubuntu20文件安装和卸载cuda11.6
搜索cuda 11.6 nvidia,进入官网https://developer.nvidia.com/cuda-11-6-0-download-archive 选择linux --> runfile 用安装包安装 wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run sudo s…...
如何备份firewalld的配置信息?
要备份Firewalld的配置信息,您可以通过以下步骤进行: 备份配置文件: Firewalld的配置文件位于/etc/firewalld/目录下。您可以使用cp命令来备份这些文件到其他位置,例如: cp -r /etc/firewalld/zones /path/to/backup…...
我们该如何看待AIGC(人工智能)
引言 人工智能(AI)是当今世界科技发展的前沿领域之一,它正在以前所未有的速度和规模影响着我们的生活、工作和思考方式。AIGC,即人工智能生成内容(Artificial Intelligence Generated Content),…...

POWERBI==官网教程
地址 COVID-19 tracking sample for US state and local governments - Power BI | Microsoft Learn 已经非常全面了...

自然语言处理(NLP)技术有哪些运用?
目录 一、自然语言处理(NLP)技术有哪些运用? 二、Python进行文本的情感分析 1、NLTK库: 2、TextBlob库: 三、错误排除 一、自然语言处理(NLP)技术有哪些运用? 自然语言处理(NLP)…...

java spring 09 Bean的销毁过程 上 在docreatebean中登记要销毁的bean
1.Bean销毁是发送在Spring容器关闭过程中的 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);UserService userService (UserService) context.getBean("userService");userService.test();// 容器关闭cont…...
杰发科技AC7801——支持的纠错功能
1. 复位寄存器保留复位类型 低压检测复位(LVD Reset) 集成了一个低压保护系统,以便在电源电压发生变化期间保护存储器内容和控制 MCU 系统状态。该系统由上电复位(POR)电路和 LVD 电路组成,LVD 可以配置为不同的复位基准&#x…...

spring boot运行过程中动态加载Controller
1.被加载的jar代码 package com.dl;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class App {public static void main(String[] args) {SpringApplication.run(A…...

学习软考----数据库系统工程师25
关系规范化 1NF(第一范式) 2NF(第二范式) 3NF(第三范式) BCNF(巴克斯范式) 4NF(第四范式) 总结...

RTMP 直播推流 Demo(一)—— 项目配置与视频预览
音视频编解码系列目录: Android 音视频基础知识 Android 音视频播放器 Demo(一)—— 视频解码与渲染 Android 音视频播放器 Demo(二)—— 音频解码与音视频同步 RTMP 直播推流 Demo(一)—— 项目…...

安卓获取SHA
1:安卓通过签名key获取SHA 方式有两种, 1、电脑上来存在eclipse的用户或正在使用此开发工具的用户就简单了,直接利用eclipse 走打包流程,再打包的时候选择相应的签名,那么在当前面板的下面便会出现签名的相关信息。 2、…...

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Dial的使用及说明
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 输入类控件 | Dial的使用及说明 文章编号:Qt…...

【C语言】项目实践-贪吃蛇小游戏(Windows环境的控制台下)
一.游戏要实现基本的功能: • 贪吃蛇地图绘制 • 蛇吃食物的功能 (上、下、左、右方向键控制蛇的动作) • 蛇撞墙死亡 • 蛇撞自身死亡 • 计算得分 • 蛇身加速、减速 • 暂停游戏 二.技术要点 C语言函数、枚举、结构体、动态内存管…...

在做题中学习(50):搜索插入位置
35. 搜索插入位置 - 力扣(LeetCode) 解法:二分查找 思路:题目是有序的,时间复杂度O(logN),二分没跑了,题目说如果找不到target,返回它应该被插入位置的下标,所以可以分析一下示例2&…...

【mysql】mysql单表查询、多表查询、分组查询、子查询等案例详细解析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

【Gateway远程开发】0.5GB of free space is necessary to run the IDE.
【Gateway远程开发】0.5GB of free space is necessary to run the IDE. 报错 0.5GB of free space is necessary to run the IDE. Make sure that there’s enough space in following paths: /root/.cache/JetBrains /root/.config/JetBrains 原因 下面两个路径的空间不…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...

C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...