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
- Go to Release v15.5.1 · FarmBot/farmbot_os · GitHub
- Note the latest version (e.g.
v15.5.1) - 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"
)
Replace
15.5.1andrpi3with 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.imgfile 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.
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 → Settings → FarmBot 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.