[TUTORIEL] - Installation Gladys from scratch sur Raspbian Lite

TUTORIEL - Installation Gladys from scratch sur Raspbian Lite

Bonjour à tous !

Suite à une demande grandissante de la part de la communauté de pouvoir installer Gladys à coté d’un système déjà existant, j’ai entrepris une série de tutoriel dont celui-ci est le premier.

Seront prochainement disponibles les tutoriels sur les environnements suivants :

  • Linux
  • Debian
  • Windows
  • Mac

Préparation du Raspberry Pi

Pour bien démarrer ce tutoriel, nous allons mettre à jour notre Raspberry Pi, pour cela, exécutez les commandes suivantes :

On met à jour les librairies :

sudo apt-get update

On applique les mises à jour :

sudo apt-get upgrade

On upgrade le firmware du Pi :

sudo rpi-update
sudo reboot

Et nous voilà complètement à jour :slight_smile: on peut le vérifier avec la commande, uname -a

image

Installation des pré-requis pour accueillir Gladys

Installation de NodeJS

La version minimale pour exécuter Gladys est la version 4, cependant si vous n’avez pas d’application Node qui tourne déjà sur votre Pi, il est recommandé de passer sur la dernière version Lite => LTS

Pour cela, lancez les commandes suivantes :

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Vous pouvez connaitre votre version de node avec cette commande :

node -v 

Maintenant, nous allons avoir besoin de dépendances pour compiler certains modules nécessaire à Gladys :

sudo apt-get install -y build-essential
sudo apt-get install -y git
sudo npm install -g pm2
sudo npm install -g grunt-cli
sudo npm install -g sails

Installation de la base de données

Depuis peu sur Raspbian Stretch, MySQL a laissé place à MariaDB, cela nécessite donc quelques ajustement supplémentaires :

 sudo apt-get install -y mysql-server

Lors de l’installation de MariaDB aucun mot de passe pour l’user ROOT n’est demandé, nous aurons donc besoin de le changer.

On se connecte à la base en admin :

sudo mysql -u root

On se place sur la base système :

use mysql;

Et on change le mot de passe :

update user set password=PASSWORD("root") where User='root';
update user set plugin='' where User='root';
flush privileges;

Quittez en faisant exit

Et vérifiez désormais que vous arrivez bien à vous connecter à la base :

mysql -uroot -proot

On en profite du coup pour créer la base Gladys :

CREATE DATABASE gladys CHARACTER SET latin1 COLLATE latin1_swedish_ci;

On sort à nouveau avec exit

Installation de Gladys

Téléchargement des sources

On clone le repo GIT dans le répertoire /home/pi :

git clone https://github.com/GladysProject/gladys gladys

Puis on se place dans le dossier Gladys,

cd gladys

Installation des dépendances de Gladys

npm install

Cette étape est cruciale, il est important de bien la laisser se dérouler jusqu’à la fin.
Vous pourriez obtenir en cours d’exécution une erreur du type : “Error 404 when tried download…”
Des sources (fichier .o) seront alors directement téléchargés et compilés sur le Pi.

Compilation des assets

grunt buildProd

Initialisation de Gladys

node init.js

A cette étape vous n’êtes plus qu’à deux commandes du démarrage de Gladys :slight_smile:

Démarrage de Gladys

On va se servir de PM2, installé plus haut, pour démarrer Gladys et lui permettre de se lancer à chaque reboot du Pi :

pm2 startup
pm2 start /home/pi/gladys/app.js --name gladys
pm2 save

Voilà ! Gladys a démarré et vous devriez pouvoir y accéder depuis votre navigateur en tapant l’IP du Pi suivi du port 8080, pour moi par exemple : http://192.168.0.30:8080

Vous pouvez alors créer votre compte :slight_smile:

Activer HTTPS (facultatif)

Maintenant que notre interface fonctionne, nous allons activer l’HTTPS, qui est nécessaire pour le module météo par exemple.

Il est nécessaire d’installer NGINX

sudo apt-get install -y nginx

Pour faciliter la configuration, récupérez ensuite le repo GIT contenant les fichiers de config du SSL

cd /home/pi
git clone https://github.com/C4rlit0/gladys-ssl.git

Placez-vous dans le répertoire cloné et copiez le fichier de configuration dans son emplacement dédié Nginx :

cd gladys-ssl
sudo cp gladys-ssl /etc/nginx/sites-available/

Ensuite, il est nécessaire de générer le certificat SSL, pour cela il faut rendre exécutable le fichier enable-ss-gladys.sh :

chmod +x enable-ssl-gladys.sh

On peut alors l’exécuter (la génération du certificat prend du temps ~1h à 2h) :

./enable-ssl-gladys.sh

Maintenant que notre certificat est généré, il faut configurer Nginx pour s’en servir.
Créez le fichier self-signed.conf :

sudo nano /etc/nginx/snippets/self-signed.conf

Et ajoutez-y ces deux lignes :

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

Créez ensuite le fichier ssl-params.conf :

sudo nano /etc/nginx/snippets/ssl-params.conf

Et ajoutez-y les lignes suivantes :

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

Redémarrez Nginx pour que ce soit pris en compte :

sudo systemctl restart nginx

Vous pouvez désormais accéder à Gladys via votre IP du Pi précédée de HTTPS://
Par exemple pour moi https://192.168.0.30

Félicitation vous êtes prêt à plonger dans le cœur du système !

7 Likes

Bien vu je pense que ça va énormément servir !

1 Like

Ouais, je me trompe pas si je crois qu’il y a une forte demande ^^

1 Like

Non tu ne te trompe pas :joy:

1 Like

Tuto en ligne les amis !

Salut,

Super tuto ! J’aurais aimé tombé dessus avant de finaliser mon installation ! :joy:

Par contre pour le https, j’ai des soucis avec les fichiers .css et .js

J’ai fait une installation manuelle de gladys et le dossier d’installation est “/home/pi/Bureau/gladys/…”

Or depuis que je suis sous https, il va chercher les fichiers (.css et .js) à cet emplacement: “/home/pi/glayds/…”

Avez vous une idée d’ou cela peut venir?

PS: pour le moment j’ai recopié betement les fichiers de “/home/pi/Bureau/gladys/www/” dans “/home/pi/gladys/www”

Merci d’avance pour la réponse !

1 Like

Salut @Nicolas95,

ouaip ! ça vient du fichier gladys-ssl fourni par Pierre-gilles que j’ai repris dans mon tuto, il faut que tu change cette ligne avec ton chemin :wink: :

1 Like

Bonjour

J’ai droit à cette erreur

ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’

En faisant cette action comme expliquée dans le tutotriel

Need some Help huhu

On dirait un pb de connexion à la DB. Tu connais les identifiants ?

Bonjour Boimb
Ce sont les login et mdp du PI?
La DB en a d’autres?

Oui, la db en a d’autres.

Arf Je ne les connais pas
Je suis trop novice sur Raspbian… comment on les définit?

Salut @drew,

Tu es sous raspbian ou sous linux ?

la commande mysql -uroot -proot
peut littéralement se lire : ouvre une connexion mysql avec (-u) l’utilisateur ‘root’ et (-p) le mot de passe ‘root’ :wink:

Es-tu sur de ne pas avoir sauter une étape ?

sudo mysql -u root
cette commande donne quoi chez toi ?

La réponse à tes problèmes est là :

bonjour

merci cela fonctionne
pour le démarrage j’ai fait

cd
/home/pi/gladys/app.js --name gladys

je fais des essais pour l’instant :wink:

2 Likes

Bonjour,

Quand j’arrive à l’étape Initialisation de Gladys

J'obtiens ces erreurs
`[email protected]:~/gladys# node init.js
error: A hook (orm) failed to load!
Error (E_UNKNOWN) :: Encountered an unexpected error
: Could not connect to MySQL:
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MariaDB client
    at afterwards (/root/gladys/node_modules/sails-mysql/lib/connections/spawn.js:72:13)
    at /root/gladys/node_modules/sails-mysql/lib/connections/spawn.js:40:7
    at Handshake.onConnect (/root/gladys/node_modules/sails-mysql/node_modules/mysql/lib/Pool.js:54:9)
    at Handshake.Sequence.end (/root/gladys/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
    at Handshake.ErrorPacket (/root/gladys/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Handshake.js:103:8)
    at Protocol._parsePacket (/root/gladys/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:280:23)
    at Parser.write (/root/gladys/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:73:12)
    at Protocol.write (/root/gladys/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:39:16)
    at Socket.<anonymous> (/root/gladys/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:96:28)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at TCP.onread (net.js:547:20)

Details:  Error: Could not connect to MySQL:
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MariaDB client`

J’essaye d’installer Gladys sur un serveur avec Debian 9.1 Stretch

Merci d’avance pour votre aide

Salut @rafi59, je pense que tu pourras trouver la réponse à ton problème dans ce sujet :

Et surtout dans ce post :

2 Likes

Merci @Pti_Nico le problème est réglé

2 Likes

Bravo @C4rlit0 pour ce super tutorial !

J’ai suivi toute la procédure jusqu’au lancement de gladys et tout fonctionne parfaitement (la création du certificat SSH est en court).

Je me suis fait mon propre tuto (sur la base du tien) avec quelques mises à jour. En particulier, utilisation de node LTS (en version 8) ainsi que de MariaDB (plutôt que MySQL). J’ai ajouté des liens notamment concernant la gestion de MariaDB. J’ai également pris l’approche de créer un compte BDD séparé pour gladys pour des raisons de sécurité (avec des droits limités à la database gladys) plutôt que d’utiliser root. Si cela t’intéresse, je peux te donner ma procédure si tu veux ajouter ces éléments à ton tuto.

@pierre-gilles, j’ai un souci avec les variables d’environnement. A moins que je ne m’y prenne mal, ce que je défini dans le fichier .env génère des erreurs lors de la connexion. Si je rentre les informations en dur dans le fichier config/connection.js en revanche ça passe. Du coup, je me demande pourquoi le fichier .env ne semble pas pris en compte (bug ou moi qui fait mon boulet ?). Par ailleurs est-ce la bonne méthode de modifier config/connection.js ?

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=gladys
MYSQL_PASSWORD=[mon mot de passe]
MYSQL_DATABASE=gladys

@pierre-gilles laisse tomber ma dernière question, j’ai fait mon boulet :roll_eyes:

Il est précisé dans le guide du starter pack qu’en mode production le fichier .env n’est pas pris en compte. Les variables correspondantes sont alors à définir au niveau de la session dans l’OS. Sinon il reste l’option de modifier le fichier config/connection.js en conséquence comme je le suggère.