Setup, customize, and control FarmBot from any device
Clone or download
RickCarlino Merge pull request #1020 from RickCarlino/dep_readme_stuff
README updates + Routine Dep Upgrades
Latest commit aaa3b84 Oct 23, 2018
Failed to load latest commit information.
.circleci Last attempt, I guess Oct 16, 2018
app Maybe we dont need caching right now Oct 19, 2018
bin Add more fields, validations to image and start writing model tests. Jan 11, 2017
config Enable AMS caching??? Oct 19, 2018
db Add updated_at to all the models Oct 19, 2018
docker_configs Fix PSQL dep mismatch Oct 15, 2018
lib Fix for when webpack runs outside of docker. Requires `npm run webpac… Oct 5, 2018
public Remove unused folder Oct 19, 2018
spec Add updated_at to all the models Oct 19, 2018
typings Type fixes Jul 27, 2018
webpack show sensor readings in map Oct 15, 2018
.buildpacks use heroku-postbuild Sep 22, 2016
.codebeatignore Remove logger; ignore entrypoint files; call maybeRunLocalstorageMigr… Jan 10, 2018
.codeclimate.yml Exclude db/ folder from code quality metrics Mar 7, 2018
.coveralls.yml Add coveralls repo token Jul 20, 2017
.gitignore More legacy cleanup Oct 4, 2018
.ruby-gemset rename application from `dss` to `farmbot` Mar 9, 2015
.ruby-version Gem upgrades Apr 12, 2018
.sass-lint.yml add sass-lint Sep 13, 2018 Update the CLA link again Mar 24, 2018 Shuffle files around better, remove more legacy references. Ready for… Oct 2, 2018
Gemfile Allow minor Ruby version differences. Oct 19, 2018
Gemfile.lock README, bundler deps Oct 23, 2018
ISSUE_TEMPLATE Update Self Hosted Docs. Closes #868 May 27, 2018
LICENSE Shuffle files around better, remove more legacy references. Ready for… Oct 2, 2018
Procfile Attempt to decrease max-pool-size to 2 for better mem mgmt. Oct 2, 2018 README, bundler deps Oct 23, 2018
Rakefile Cruft removal, part I Oct 20, 2015 .success? => successful? (Rails 6 deprecation warning) Jun 26, 2018
auto_upgrade.rb Diagnostic Dumps - RC 1 (#889) Jun 18, 2018 Change segment order for batch resource topics Jul 30, 2018 Added foundation and high voltage. Readme updates, too. Mar 31, 2014
docker-compose.yml First set o' unmount() calls. Oct 12, 2018
example.env Use Redis as caching mechanism Oct 5, 2018
latest_corpus.rb Typechecks Sep 6, 2018
package.json Update webpack, too Oct 23, 2018 Clear cache before running test Oct 8, 2018
tsconfig.json Moar issues noted via VPS testing Oct 2, 2018
tslint.json TSLint --fix Aug 28, 2017 Update (needs QA) Oct 19, 2018

FarmBot Web App

codebeat badge codecov Coverage Status Maintainability

😎🆕 Documentation to help software developers write add-ons and plugins for FarmBot👀

Q: Do I need this?

End users should not run this software.

There are only a handful of use cases where running a third party server is advisable:

  • Development of new features, bug fixes and pull requests.
  • Independent security research and auditing.

FarmBot, Inc. provides a publicly accessible server at for end users that are not familiar with Ruby on Rails application development. Hosting your own server will require an understanding of how Ruby on Rails applications (and databases) operate. It is designed for use by software engineers. Self-hosting the Web App will not provide you with a more stable user experience and may result in accidental security issues or data loss.

If you are not a Ruby on Rails developer, or you have never written a Ruby on Rails application, you are encouraged to use the publicly available web app. Running a server is a non-trivial task with security implications. Data loss and security issues are possible in some circumstances. Self hosting requires an intermediate background in Ruby, SQL and Linux system administration.

We do not have the resources available to help novice developers learn to setup servers, environments, configurations, or perform basic Linux command line instructions.

Q: Where do I report security issues?

We take security seriously and value the input of independent researchers. Please see our responsible disclosure guidelines.

Q: What is the Farmbot Web App?

This repo contains FarmBot's web based user interface, a RESTful JSON API and a Dockerized MQTT server. The API stores data such as user account information, plant data, authorization tokens and a variety of other resources. The MQTT server facilitates realtime messaging from the browser to the device.

Q: Can I see some example API requests?

For a list of example API requests and responses, see our reference documentation. If you wish to write an add-on application that uses the FarmBot API, please let us know in an issue. We are happy to answer any specific questions you may have.

Q: How do I Setup an instance locally?

If you are not a software developer with Ruby on Rails experience, you should not set up a server. Data loss and security vulnerabilities are possible.

We provide example setup instructions for software developers running Ubuntu 18 here.

Installation was last tested against Ubuntu 18.04 in October of 2018 on an x86 based machine.

Our ability to help individual users with private setup is limited. Using the public server at is the recommended setup for end users. Please see the top of this document for more information.

Config Settings (important)

We follow the 12 Factor Methodology. As such, ENV variables are the primary means of storing configuration. Your server won't run without setting ENV variables first.

You can accomplish this by setting the ENV variables directly from your shell / server management tool or by writing an .env file in server's base directory.

See example.env for a list of all the variables that must be set.

Encryption keys: Encryption keys will be auto-generated if not present. They can be reset using rake keys:generate. If ENV['RSA_KEY'] is set, it will be used in place of the *.pem files. This is useful for environments like Heroku and Docker, where file system access is not allowed.

Translating the Web App into Your Language

Thanks for your interest in internationalizing the FarmBot web app! To add translations:

  1. Fork this repo
  2. Navigate to /public/app-resources/languages and run the command node _helper.js yy where yy is your language's language code. Eg: ru for Russian.
  3. Edit the translations in the file created in the previous step: "phrase": "translated phrase".
  4. When you have updated or added new translations, commit/push your changes and submit a pull request.

Want to Help?

Low Hanging Fruit.

Raise an issue if you have any questions.

If you raise an issue indicating that you haven't followed the setup instructions, looked through past issues, or done a cursory internet search for basic help, expect the issue to be closed and we'll point you to the setup instructions. Again, if you do not have at least intermediate Linux and Ruby experience, please use the hosted version of the web app at Running a self-hosted server is not easy!