Build automatique de l'image Raspberry Pi OS

Ne ré essaye pas je sais pourquoi ça déconne, je vais refaire un build ce soir en corrigeant le problème. ( j’ai des bandes à faire avant qu’il fasse noir :sweat_smile:)

Merci pour le retour.

1 « J'aime »

J’ai amélioré le CI

Nouveau build => Release v1.0.3 · VonOx/gladys-pi-gen · GitHub

Pas testé en réél non plus

1er démarrage

Partition de la carte SD étendue
Reboot
Création du conteneur de setup puis Watchtower et Gladys

Note:

Lors de la 1ère connexion en SSH vous devrez modifier le password ( gladys/raspberry par défaut )
Pendant la phase de création des conteneurs une page d’attente est disponible à http://IP.DU.PI ou http://gladys

1 « J'aime »

Je up un peu si certain ont du temps pour tester et faire un feedback , je fais tout un peu à l’aveugle car j’ai pas de PI pour tester.

Merci d’avance :pray:

@VonOx Je sais pas si tu connais:

ça te permettra de tester tes images :wink:

Sinon il existe des Raspberry Pi qu’on peut louer en ligne:

C’est des serveurs cloud Raspberry Pi, à 4.99€/mois. Tu peux en faire pop un pour tester, je sais pas si c’est possible de payer à la minute, si oui c’est vraiment clé en main pour les tests comme ça ^^

Si non il y a aussi: Raspberry Pi - Mythic Beasts

1 « J'aime »

Hello. J’ai testé ce matin avec un RPI3A+ et ça a marché du premier coup :muscle:

Environ 1 minute avant l’affichage de la page :

Puis 4-5 minutes pour télécharger Gladys et l’installer (direct en dernière version :heart_eyes:)

Juste un petit détail, j’ai l’impression que la page d’attente se rafraichit toute seule, mais il y a un moment (je pense quand l’image Gladys démarre) où la page affiche une erreur. Il faut alors rafraichir manuellement. Je pense que ça va être dur de faire mieux.

Oui j’ai mis un autorefresh pour que ça tombe sur Gladys quand le conteneur est détruit ( 60 secondes ) peut être que je devrai mettre plus. Tu as du tomber pile quand le conteneur d’attente est détruit et que Gladys n’est pas complétement up ( joue au loto car c’est une histoire de seconde ^^ )

Merci pour le feedback @cicoub13

1 « J'aime »

:joy::joy:

Beau boulot en tout cas @VonOx !

Il te manque des trucs du coup pour que cette image raspberry pi soit “parfaite” ?

C’est une bonne nouvelle, ça évitera d’attendre 24h.

Tu voudrais pas mettre une requête GET en JS sans refresh pour éviter que l’utilisateur se retrouve sur une page “cassée” ?

Genre tu poll toutes les 10 secondes le endpoint de Gladys pour savoir si elle est up et tu refresh quand c’est finalement plus en 404

Le hic c’est que gladys ne se lancera pas si le port ( 80) est déjà utilisé.

C’est pour ça que j’ai mis un auto refresh côté browser, mais c’est un peu roulette russe comme méthode.

Quand @cicoub13 à eu l’erreur, le conteneur de setup n’existe plus

Je redétail un peu le flow de l’image:

  • 1er démarrage , préparation OS ( expand partition / génération nouvelle clé ssh etc )
  • Reboot
  • Création du conteneur de setup ( nginx sur port 80 ) , la page se refresh toute les 60s
  • Création du conteneur Watchtower
  • Pull de la dernière image Gladys
  • Quand l’image est pull, le conteneur de setup est détruit et Gladys est lancée sur le port 80 libéré juste avant.

Y’a probablement moyen de faire mieux ou plus smart. Je suis ouvert à toute suggestion

Oui oui, mais si le frontend est déjà lancé il restera dans le navigateur de l’utilisateur, même après le stop du container

Je parle de faire un GET en silencieux en JS (en gardant la page sans refresh) pour détecter justement tout ce lifecycle

OK je penses avoir pigé l’idée

Je garde le flux actuel avec les conteneurs, je vire le refresh.

Dans la page de setup un bout de js qui refresh quand le endpoint est dispo

1 « J'aime »

Yes c’est ça :slight_smile: mais sinon GG pour le reste, ça rendra l’installation bien plus comprehensible pour tout le monde !

C’est fait j’ai build une nouvelle image docker pour le container setup, pas besoin de build une nouvelle image raspberry :slight_smile:

Le js que j’ai ajouté ( merci stackoverflow :smiley: )

setInterval(detectGladysContainer, 30000);

var currentHostname = window.location.hostname;
var gladysUrl = 'http://' + currentHostname + '/signup';

function detectGladysContainer() {
    var myRequest = new Request(gladysUrl);
    fetch(myRequest).then(function (response) {
        if (response.status == '200') {
            window.location.replace(gladysUrl);
        }
    });
};

detectGladysContainer();


Ça marche nickel :ok_hand:

2 « J'aime »

Cool ça fait plaisir

Faudra qu’on voit pour le transfert de repos @pierre-gilles et que je rebuild l’image raspberry pour pull la bonne image.

Tu peux mettre plus rapide que 30 secondes à mon avis, 5 secondes ça me parait mieux ! C’est pas une petite requête qui va faire de mal :slight_smile:

Pour le transfert de repo comme tu veux, il y a quoi à faire ? Juste copier le repo ?

Après il faudra setup le CI (ou tu l’as déjà fais?)

Sinon autre questions:

  • le hostname est bien gladys ?
  • par rapport à l’image actuelle, qu’est ce qui diffère ?

Sinon beau boulot j’ai hâte de mettre ça en prod! Je vais essayer de faire un test demain pour voir ce que ça donne :slightly_smiling_face:

Oui j’avais mis 5 secondes puis ça m’as semblé un peu bourrin :smiley:

Soit tu récupère tel quel ( tout en manuel et perte de l’historique ), soit je fais un transfert de owner côté github ( actuellement je ne peux pas transfert sur l’org car il faut avoir le droit de créer un repo ).

Le CI est prêt mais configuré avec mon dockerhub pour les tests etc… mais il est fonctionnel.
Aussi bien pour l’image RPI que l’image docker de setup

Oui

L’utilisateur par défaut ( gladys )
Nécessité de changer le pass lors de la 1ère connexion SSH
Règles UDEV ( pas exploité aujourd’hui )

Faut que je récupère ce que tu as définie au niveau update de sécurité

On perdra pas l’historique si je pousse le repo, pas juste les fichiers :slight_smile: git clone + git push sur un autre origine

Est-ce qu’on veut vraiment changer ça?

J’aimais bien l’idée de garder les mêmes identifiants que l’image Raspberry Pi OS officielle pour que ce soit facile à comprendre que c’est juste la même image Raspberry Pi que l’image officielle, et que les identifiants sont les mêmes.

Yes ça c’est crucial. Tu as juste à installer un paquet c’est pas dur

Autre remarque, est-ce que tu sais si on aurait moyen d’exposer à l’image Docker les droits pour pouvoir changer le mot de passe de l’utilisateur linux ?

Pour moi, il faut vraiment penser l’image Raspberry Pi OS qu’on va fournir comme un produit qu’on distribue dans la grande distribution, pour un public qui veut juste utiliser Gladys, il branche le pi et il y touche plus. 90% des utilisateurs ne se connecteront jamais en SSH à Gladys.

Du coup, si on veut que ce soit secure pour tout le monde par défaut, il faudrait limite que Gladys change le mot de passe linux dès le premier boot, et expose ce mot de passe à l’utilisateur dans l’UI (l’utilisateur pourrait aussi changer le mot de passe dans l’UI). Donc il faudrait que le container Gladys ait les droits pour ça.

T’en pense quoi ?

Ou alors, il faudrait que l’image rasp change d’elle même le mot de passe et expose le nouveau mot de passe à Gladys au lancement. Je sais pas :slight_smile: