Mode d'emploi

Mise en garde#

Attention ! La pile technique à mettre en place pour disposer d'une application Farmbot autonome nécessite un savoir-faire particulier d'administration de serveur et une connaissance avancée des systÚmes d'information.

si-farmbot

Une mise en oeuvre "à tùtons" peut entraßner des pertes de données et n'est acceptable que dans le cadre de simples tests.

Infrastructure requise#

Tout serveur capable de supporter Docker et docker-compose est théoriquement utilisable.

Pour cette expérimentation, nous avons choisi un serveur VPS OVH implanté physiquement sur le territoire français, et présentant les caractéristiques suivantes :

  • 4 Go de RAM
  • 80 Go d'espace disque
  • Ubuntu 20.04

Procédure#

La documentation du projet Farmbot fournit des pistes pour mettre en place une instance privée de l'application.

Voici une procédure testée avec succÚs, adaptée et traduite en français.

# Installation d'une application Farmbot sur un serveur Ubuntu 20.04
# Supprimer les anciennes versions de Docker
sudo apt-get remove docker docker-engine docker.io
# Installer docker
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release --yes
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce --yes
sudo docker run hello-world # tester Docker
# Installer docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo docker-compose --version # test de l'installation
# Installer l'application FarmBot
# ⚠ PASSER CETTE LIGNE S'IL S'AGIT D'UNE MISE A JOUR !
git clone https://github.com/FarmBot/Farmbot-Web-App --depth=5 --branch=main
cd Farmbot-Web-App
snap install micro --classic # `micro` peut ĂȘtre remplacĂ© par vim, nano, etc.
cp example.env .env # ⚠ PASSER CETTE LIGNE S'IL S'AGIT D'UNE MISE A JOUR !
# == L'Ă©tape suivante est trĂšs importante ==
#
# Ouvrir `.env` dans un Ă©diteur de texte et changer les valeurs.
#
micro .env # ⚠ PASSER CETTE LIGNE S'IL S'AGIT D'UNE MISE A JOUR !
# ^ Ceci est l'Ă©tape la plus importante !
# Installer la version correcte du bundler
sudo docker-compose run web gem install bundler
# Installer les dépendances Ruby spécifiques du projet
sudo docker-compose run web bundle install
# Installer les dépendances JavScript spécifiques du projet
sudo docker-compose run web npm install
# Créer une base de données dans PostgreSQL
sudo docker-compose run web bundle exec rails db:create db:migrate
# Générer les fichiers *.pem pour le chiffrage des données
sudo docker-compose run web rake keys:generate # ⚠ PASSER CETTE LIGNE S'IL S'AGIT D'UNE MISE A JOUR !
# Builder les assets de l'interface avec ParcelJS
sudo docker-compose run web rake assets:precompile
# Lancer le serveur
# N.B.: N'ESSAYEZ PAS DE VOUS LOGGUER AVANT DE VOIR UN MESSAGE DE CE TYPE :
# "✹ Built in 44.92s"
# CELA PEUT-ÊTRE TRES LONG SUR UNE MACHINE PEU PERFORMANTE (PLUSIEURS MINUTES)
sudo docker-compose up
# A ce stade, l'installation à proprement parler est terminée. Vous devez voir l'application sur
# http://YOUR_HOST:3000/.
# De maniĂšre optionnelle, vous pouvez lancer les tests unitaires :
# Créer la base de données test de l'application:
sudo docker-compose run -e RAILS_ENV=test web bundle exec rails db:setup
# Lancer les tests dans l'environnement RAILS_ENV "test" :
sudo docker-compose run -e RAILS_ENV=test web rspec spec
# Lancer les tests cÎté client/UI (nécessite au moins 4 GB de RAM) :
sudo docker-compose run web npm run test
# === MISES A JOUR (OPTIONNEL)
# Pour mettre à jour vers des versions plus récentes de Farmbot,
# couper le serveur, créer un backup des données
# et lancer les commandes suivantes :
git pull https://github.com/FarmBot/Farmbot-Web-App.git main
sudo docker-compose build
sudo docker-compose run web bundle install # <== ⚠ MISE A NIVEAU UTILISATEURS SEULEMENT
sudo docker-compose run web npm install # <== ⚠ MISE A NIVEAU UTILISATEURS SEULEMENT
sudo docker-compose run web rails db:migrate # <== ⚠ MISE A NIVEAU UTILISATEURS SEULEMENT
# ===