farmOS 4.0.9 介绍与选型指南
farmOS 4.0.9(基于 Drupal 11.3)农场管理系统的定位、数据模型、架构、功能、部署形态与同类选型对比,信息源官方文档与仓库(2026-10-23 核实)。
farmOS 4.0.9 介绍与选型指南
目标:面向计划自建农场管理系统的读者,从定位、架构、功能、部署形态到同类横向对比完整介绍 farmOS,并给出可落地的选型建议。本文全部信息来自 farmOS 官网、官方 GitHub 仓库与官方用户指南的联网溯源核实(查询日期:2026-10-23),版本口径以官方 Releases 页为准。
一、环境信息
本文为认知与选型篇,考察对象的关键信息如下(均于 2026-10-23 从官方渠道实查):
- 考察软件:farmOS,官方仓库
farmOS/farmOS(https://github.com/farmOS/farmOS),官网 https://farmos.org/。 - 当前最新稳定版:4.0.9(2026-10-21 发布),基于 Drupal 11.3.19 内核;同一时间官方仍在维护的上一主版本线为 3.5.9(基于 Drupal 10,供尚未升级 PHP 8.4 的存量站点过渡)。来源:GitHub Releases 页。
- 运行时依赖(官方 Requirements 页):PHP 8.4 + 扩展 BCMath/EXIF/GEOS/SimpleXML;数据库 PostgreSQL 16+(官方推荐)、MariaDB 10.6+、MySQL/Percona 8.0+ 或 SQLite 3.45+ 任选其一。
- 官方发布形态:Docker 官方镜像(推荐)、Composer 自行构建、预打包 tarball 三种;另有官方托管服务 Farmier 与官方在线 Demo。
- 社区热度:GitHub Stars 1.4k(shields.io 徽章,2026-10-23 实查)。
💡 说明:farmOS 版本号与 Drupal 大版本存在对应关系——farmOS 4.x 基于 Drupal 11.3.x,farmOS 3.x 基于 Drupal 10.x。升级 farmOS 大版本意味着同时升级 Drupal 与 PHP,这是选型时必须纳入考虑的依赖链成本。
二、软件概述
2.1 定位:面向农场的数据管理标准平台
farmOS 官方的自我定义是:"a web-based application for farm management, planning, and recordkeeping"(基于 Web 的农场管理、规划与记录应用),由农民、开发者、研究者与各类组织共同维护,目标是"为农业数据采集与管理提供一个标准平台"(来源:farmos.org 首页,2026-10-23)。
它的核心设计思想是把农场里"一切被管理的东西"抽象成三类记录:
- Asset(资产):农场的"管理单元",如地块、温室、动物、设备、水源、种植的作物;
- Log(日志/事件):发生在资产上的事件,如播种、施肥、灌溉、收获、用药、转群;
- Quantity(数量):挂在 Log 上的量化测量值,如施肥量、产量、投入成本。
所有记录默认私有,只有持有账号密码的用户可访问(来源:farmOS User Guide)。
2.2 开源属性与许可
- 许可证:GNU GPL(仓库 LICENSE 徽章实查为 GPL-2.0,2026-10-23)。
- 代码与组织:GitHub farmOS 组织(https://github.com/farmOS)。
- 社区渠道:官方论坛 farmos.discourse.group、Matrix/IRC 聊天、定期社区电话会;项目接受捐赠(farmos.org/donate)。
- 商业服务:官方背景的托管服务商 Farmier(farmier.com),提供
myfarm.farmos.net形式的托管实例;另有官方 Demo 站 farmos-demo.rootedsolutions.io 可在线体验。
2.3 版本与维护节奏
从官方 CHANGELOG 摘取 2026 年内的发布记录(来源:GitHub Releases / CHANGELOG.md,2026-10-23):
| 版本 | 发布日期 | 内容要点 |
|---|---|---|
| 4.0.9 | 2026-10-21 | 官方 Docker 镜像内置 PHP 升级到 8.4.27(修复 CVE-2026-109618 / CVE-2026-109619) |
| 4.0.8 | 2026-10-14 | Drupal 内核升级 11.3.19(SA-CORE-2026-014/015/016),Gin 主题 5.0.16 |
| 4.0.7 | 2026-10-09 | 修复 JSON:API 实体过滤越权问题(#1104) |
| 4.0.6 | 2026-09-16 | 修复 KML 导入崩溃;Drupal 内核 11.3.17 安全更新 |
| 4.0.5 | 2026-08-26 | Entity API 模块安全更新(SA-CONTRIB-2026-113) |
关键解读:4.x 线平均每月至少一个版本,且以安全响应为主(上游 Drupal/PHP 漏洞的快速跟进),说明项目处于活跃维护期、发布节奏成熟。非 Docker 用户也应在 PHP 侧自行跟进同版本安全更新——4.0.9 的变更仅作用于官方镜像,非镜像部署需自己把 PHP 升到 8.4.27。
三、核心架构
3.1 技术分层
farmOS 是建立在 Drupal 之上的发行版(distribution),自上而下分四层:
- Drupal 11.3 内核:提供实体系统、用户权限、表单 API、视图、缓存等基础框架;
- farm 安装 Profile:farmOS 以自定义安装配置(install profile)交付,安装向导中一次性装好农场领域所需的全部核心模块(本系列部署篇实测安装完成 81 个已启用模块,见《Ubuntu 22.04 安装 farmOS 4.0.9 指南》);
- farmOS 领域模块集:asset、log、quantity 三大实体模块及 farm_land、farm_animal、farm_crop、farm_map、farm_plan 等领域模块;
- Drupal 生态扩展:主题 Gin(后台体验)、JSON:API、simple_oauth(OAuth2 API 鉴权)等贡献模块,以及社区 add-on 模块。
3.2 数据模型与地理能力
farmOS 的数据模型文档(farmos.org Data model)把上述三类记录组织成网状关系:Log 同时关联多个 Asset,Quantity 挂在 Log 上,Asset 之间支持父子层级(如田块→温室→作物行)。
地理信息是一等公民:
- 位置类 Asset(田块、建筑等)可以在农场地图上绘制边界(GeoJSON);
- 地图底层默认使用 OpenStreetMap/卫星图层,可选装 Mapbox 或 Google Maps 卫星图层(均需申请 API Key,来源:Requirements 页 Satellite map layers 一节);
- 服务端依赖 GEOS PHP 扩展做几何运算——这也是 farmOS 相对普通 Drupal 站点多出的一个非标准扩展依赖。
3.3 API 与集成
- JSON:API:Drupal 原生 JSON:API 暴露所有实体资源,4.0.7 还专门修复了实体过滤的访问控制问题;
- Farm API(OAuth2):通过 farm_api_oauth 模块对外提供 OAuth2 令牌,需要 RSA 公私钥对存放在 Web 根目录之外的 keys 目录(官方安装文档专门有 OAuth2 keys 一节);
- 传感器数据:官方支持将传感器数据流式写入 farmOS(Requirements 页建议此类场景必须上 HTTPS,以保护传感器私钥);
- 第三方客户端:Field Kit 等社区应用基于上述 API 与 farmOS 协作。
3.4 扩展机制
farmOS 完全复用 Drupal 的模块机制扩展:
- Quick forms(快速表单):针对高频录入场景(如播种、移动、收获)的简化表单模块,装了才出现在侧栏;
- Plans(计划):围绕特定管理目的(如 CSAs 社区支持农业、土壤检测)组织资产与日志的模块;
- Reports(报表):可插拔的数据分析报表模块;
- 自定义模块可用 Composer 加入代码库(官方 Hosting/composer 文档提供构建方法)。
四、功能特性
结合官方用户指南(farmos.org/guide,2026-10-23 实查)与模块清单,farmOS 的功能面覆盖:
- 仪表盘:顶部农场地图(可点击位置资产下钻)、左侧 Upcoming/Late tasks 待办(可完成、改期、克隆、删除)、右侧资产/日志计数等指标卡,指标可由模块扩展;
- 记录管理:Assets / Logs / Quantities / People / Taxonomy 全量 CRUD,支持按类型与子类型组织原始记录列表;
- 地图与位置:位置资产层级管理(Locations)、地图导航、GeoJSON 边界绘制、可选卫星底图;
- 计划与报表:Plans 模块化管理、Reports 数据分析、Quick forms 快速录入;
- 多语言:安装器支持界面语言选择(Drupal 多语言体系);
- 权限与审计:Drupal 角色权限体系,所有记录默认私有;
- API 集成:JSON:API + OAuth2,可对接传感器与第三方工具;
- 定时任务:内置 cron 机制做数据库清理等例行维护,推荐宿主机 crontab 调用
drush cron或密钥 URL(来源:官方 Hosting/install 页)。
💡 技术拓展:同领域的自托管方案不止 farmOS 一家,其记录抽象(Asset/Log/Quantity)借鉴了农业数据标准(如 USDA 的记录keeping规范),比普通"任务清单+附件"类应用更贴近农业生产流。选型时还应关注数据导出能力:farmOS 基于 JSON:API 与 SQL,数据不属于平台锁定项,这也是开源农场软件相对 SaaS 产品的核心差异。
五、快速开始(最小可用示例)
以下为官方 Docker 部署的最小命令(来源:farmos.org/hosting/docker,2026-10-23 摘录;本系列《farmOS 4.0.9 Docker Compose 部署指南》有逐条实测):
# 1. 建立站点数据目录(属主必须是容器内 www-data 的 UID 33)
mkdir sites && sudo chown 33:33 sites
# 2. 以官方镜像启动(x.y.z 替换为最新稳定版,即 4.0.9;不建议用 latest 标签)
docker run --rm -p 80:80 -v "${PWD}/sites:/opt/drupal/web/sites" farmos/farmos:4.0.9
浏览器访问服务器 80 端口,跟随 Web 安装向导(选择语言 → 数据库连接 → 安装模块 → 设置站点名与管理员账号)即可完成初始化。注意:docker run 单容器方式不含数据库,生产环境应使用官方 docker-compose.production.yml 同时编排 PostgreSQL 17 容器与 farmOS 容器。
若不用 Docker,也可下载官方预打包 tarball(farmOS-4.0.9.tar.gz)解压到 Web 根目录、把文档根指向其中的 web/ 子目录,详见《Ubuntu 22.04 安装 farmOS 4.0.9 指南》。
六、适用场景与限制
6.1 适用场景
- 家庭农场/小型农场信息化:地块、作物、牲畜、设备、库存的全流程记录与任务管理;
- 农业研究项目:试验田管理、观测数据(Quantity)采集、可追溯实验记录;
- 合作社与 CSA(社区支持农业):会员份额计划(Plans)、产量统计、任务分派;
- 食品安全追溯:投入品(用药/施肥)与收获日志全程留痕,满足审计需求;
- 农业物联网集成:传感器数据经 API 写入,与地图位置联动展示。
6.2 限制与成本
- 运维门槛高于普通 PHP 应用:需要 PHP 8.4 及 GEOS 等非标准扩展、独立数据库、cron 调度、(生产建议)HTTPS 反向代理;官方明确建议用 Docker 封装这层依赖;
- 预打包版不易加装模块:官方 prebuilt 文档明确指出 tarball 只含"默认 stock 代码库",安装社区 add-on 模块"更困难",且官方不为 prebuilt 用户提供支持——要深度扩展必须走 Docker 或 Composer;
- 上游依赖链升级频繁:Drupal/PHP 的安全更新需要定期跟进(见 2.3 的月度节奏);
- 不支持 Hebrew/RTL 之外的小众语言自动翻译:界面翻译依赖 Drupal 翻译包,冷门语种覆盖不全(Drupal 通用限制);
- 没有移动端原生 App:移动端体验依赖浏览器与响应式主题。
七、同类选型对比
自托管农场管理方向的同类方案与"通用 ERP 套农业模块"路线的对比如下(星数取自 shields.io GitHub Stars 徽章,查询日期 2026-10-23):
| 维度 | farmOS 4.0.9 | Tania(tania-core,Go 重写版) | Odoo(社区版+农业模块) |
|---|---|---|---|
| 定位 | 农场管理/规划/记录专用平台 | 轻量农场管理(种植区域、任务、库存) | 通用 ERP,农业靠第三方模块 |
| 技术栈 | PHP 8.4 + Drupal 11.3 | Go + Vue | Python + Odoo 框架 |
| 数据库 | PostgreSQL 16+/MySQL 8.0+/MariaDB 10.6+/SQLite 3.45+ | PostgreSQL/MySQL | PostgreSQL |
| 许可证 | GPL-2.0 | Apache-2.0 | LGPL-3.0 |
| GitHub Stars | 1.4k | 544(旧 PHP 版 Tanibox/tania,官方已宣布停止维护) | 55k |
| 地理/地图 | 内置地图 + GeoJSON + GEOS(一等公民) | 基础种植区域管理 | 需第三方模块 |
| API | JSON:API + OAuth2 | REST | XML-RPC/JSON-RPC |
| 维护状态 | 活跃(4.x 月度安全版本) | 旧 PHP 版官方停维护,Go 版社区驱动 | 活跃(超大型项目) |
| 上手成本 | 中(Web 向导安装) | 低 | 高(部署与模块配置复杂) |
| 适合 | 认真做农业记录与追溯的农场/研究 | 极简需求、不想跑重栈 | 已用 Odoo 管企业、顺带管农场 |
关键差异与选型建议:
- 把农业记录当核心业务 → farmOS。它的 Asset/Log/Quantity 模型、地图能力与追溯报表是同类中最完整的,且许可与数据模型都不锁定用户;
- 只要最轻的任务/地块清单 → Tania 一类轻量方案,但要接受其旧版停止维护、新版社区规模小的现实;
- 已经是 Odoo 用户 → 优先在 Odoo 内找农业模块,避免维护两套系统;从零为一个农场部署 Odoo 得不偿失;
- 不想自己运维 → farmOS 官方背景托管 Farmier,或直接在官方 Demo 上先做体验验证。
八、参考链接
- 官网与文档:https://farmos.org/
- 服务器要求:https://farmos.org/hosting/requirements
- 安装指南:https://farmos.org/hosting/install
- Docker 部署:https://farmos.org/hosting/docker
- 预打包发行版:https://farmos.org/hosting/prebuilt
- GitHub 仓库与 Releases:https://github.com/farmOS/farmOS
- 用户指南:https://farmos.org/guide/
- 数据模型:https://farmos.org/data-model
- 社区论坛:https://farmos.discourse.group/
- 官方 Demo:https://farmos-demo.rootedsolutions.io/