farmOS 4.0.9 介绍与选型指南

farmOS 4.0.9(基于 Drupal 11.3)农场管理系统的定位、数据模型、架构、功能、部署形态与同类选型对比,信息源官方文档与仓库(2026-10-23 核实)。

farmOS自托管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.92026-10-21官方 Docker 镜像内置 PHP 升级到 8.4.27(修复 CVE-2026-109618 / CVE-2026-109619)
4.0.82026-10-14Drupal 内核升级 11.3.19(SA-CORE-2026-014/015/016),Gin 主题 5.0.16
4.0.72026-10-09修复 JSON:API 实体过滤越权问题(#1104)
4.0.62026-09-16修复 KML 导入崩溃;Drupal 内核 11.3.17 安全更新
4.0.52026-08-26Entity API 模块安全更新(SA-CONTRIB-2026-113)

关键解读:4.x 线平均每月至少一个版本,且以安全响应为主(上游 Drupal/PHP 漏洞的快速跟进),说明项目处于活跃维护期、发布节奏成熟。非 Docker 用户也应在 PHP 侧自行跟进同版本安全更新——4.0.9 的变更仅作用于官方镜像,非镜像部署需自己把 PHP 升到 8.4.27。

三、核心架构

3.1 技术分层

farmOS 是建立在 Drupal 之上的发行版(distribution),自上而下分四层:

  1. Drupal 11.3 内核:提供实体系统、用户权限、表单 API、视图、缓存等基础框架;
  2. farm 安装 Profile:farmOS 以自定义安装配置(install profile)交付,安装向导中一次性装好农场领域所需的全部核心模块(本系列部署篇实测安装完成 81 个已启用模块,见《Ubuntu 22.04 安装 farmOS 4.0.9 指南》);
  3. farmOS 领域模块集:asset、log、quantity 三大实体模块及 farm_land、farm_animal、farm_crop、farm_map、farm_plan 等领域模块;
  4. 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.9Tania(tania-core,Go 重写版)Odoo(社区版+农业模块)
定位农场管理/规划/记录专用平台轻量农场管理(种植区域、任务、库存)通用 ERP,农业靠第三方模块
技术栈PHP 8.4 + Drupal 11.3Go + VuePython + Odoo 框架
数据库PostgreSQL 16+/MySQL 8.0+/MariaDB 10.6+/SQLite 3.45+PostgreSQL/MySQLPostgreSQL
许可证GPL-2.0Apache-2.0LGPL-3.0
GitHub Stars1.4k544(旧 PHP 版 Tanibox/tania,官方已宣布停止维护)55k
地理/地图内置地图 + GeoJSON + GEOS(一等公民)基础种植区域管理需第三方模块
APIJSON:API + OAuth2RESTXML-RPC/JSON-RPC
维护状态活跃(4.x 月度安全版本)旧 PHP 版官方停维护,Go 版社区驱动活跃(超大型项目)
上手成本中(Web 向导安装)低高(部署与模块配置复杂)
适合认真做农业记录与追溯的农场/研究极简需求、不想跑重栈已用 Odoo 管企业、顺带管农场

关键差异与选型建议:

  1. 把农业记录当核心业务 → farmOS。它的 Asset/Log/Quantity 模型、地图能力与追溯报表是同类中最完整的,且许可与数据模型都不锁定用户;
  2. 只要最轻的任务/地块清单 → Tania 一类轻量方案,但要接受其旧版停止维护、新版社区规模小的现实;
  3. 已经是 Odoo 用户 → 优先在 Odoo 内找农业模块,避免维护两套系统;从零为一个农场部署 Odoo 得不偿失;
  4. 不想自己运维 → farmOS 官方背景托管 Farmier,或直接在官方 Demo 上先做体验验证。

八、参考链接