How to update FarmBot OS on a self-hosted server

FarmBot OS Update on a Self-Hosted / Local Server

Applies to: FarmBot Web App running locally (Docker) instead of the official my.farm.bot


The Problem

On the official my.farm.bot server, FarmBot manages the releases table automatically — when a new FBOS version is published, the server adds it on its own.

On a self-hosted installation, this table is empty. When FarmBot OS clicks “Check for Updates”, the server responds with an error instead of a valid image URL. Result:

Error: Check for Updates failed.

Or in the Rails/Docker log:

sudo docker compose logs -f
# or filter :
sudo docker compose logs -f | grep -i "release\|update\|platform"

"Platform can't be nil"

How to Find the Current FBOS Version

  1. Go to Release v15.5.1 · FarmBot/farmbot_os · GitHub
  2. Note the latest version (e.g. v15.5.1)
  3. Check your hardware — the Raspberry Pi model determines the platform:
    • rpi3 → Raspberry Pi 3 or 4 (Genesis / Express — most common)
    • rpi → Raspberry Pi Zero or 1

Fix: Add a Release Record to the Database

Step 1 — Open the Rails Console

sudo docker compose run web rails c

Step 2 — Verify the Table is Empty

Release.all

If it returns an empty array [], continue below.

Step 3 — Create a Release Record

Release.create!(
  version: "15.5.1",
  platform: "rpi3",
  channel: "stable",
  image_url: "https://github.com/FarmBot/farmbot_os/releases/download/v15.5.1/farmbot-rpi3-15.5.1.img"
)

:warning: Replace 15.5.1 and rpi3 with the correct version and platform for your hardware.
The image URL points directly to GitHub — FarmBot will download the file from there. You do not need to host the .img file on your own server.

Step 4 — Verify the Record

Release.last

Should return a record with the version, platform, and image URL.

Step 5 — Check the API Endpoint

http://<your-server>:3000/api/releases

Instead of the "Platform can't be nil" error, it should now return a JSON object with the version and URL.

:information_source: The endpoint requires authentication — a 401 error when accessing from a browser without a token is normal. The FarmBot device authenticates automatically.

Step 6 — Test in the Web App

In the FarmBot web app → SettingsFarmBot OS → click Check for Updates.

In the Docker log you should see:

Not updating: ["Already on the latest version."]

or the device will begin downloading the new version.


Every Time a New FBOS Version is Released

Repeat the steps above with the new version number. Or update the existing record:

r = Release.find_by(platform: "rpi3", channel: "stable")
r.update!(
  version: "15.6.0",
  image_url: "https://github.com/FarmBot/farmbot_os/releases/download/v15.6.0/farmbot-rpi3-15.6.0.img"
)

Guide compiled from a real-world troubleshooting session running FarmBot Web App in a Docker environment.

2 Likes