Héberger Discourse sur un Raspberry Pi ?

À mon avis, vous feriez mieux d’attendre le Raspberry Pi 5 éventuel, qui — si l’on projette les progrès de la performance des Pi depuis le modèle 2, puis 3, jusqu’au 4 — devrait avoir assez de puissance pour exécuter Discourse.

Je ne suis pas certain non plus que les dépendances x86 (x64 ?) soient surmontables pour le moment, mais ce n’est pas une mauvaise idée d’examiner cette piste pour le long terme.

Un cluster de Raspberry Pi 4 avec un processeur quadricœur 64 bits à 1,5 GHz, éventuellement des disques USB 3 pour le stockage (~300 Mo/s) ou un magasin de blobs externe (S3 ou GCP), et un CDN placé devant ces utilisateurs anonymes, pourrait constituer une alternative de plateforme viable :slight_smile: L’avenir nous le dira !

Ce chiffre n’a pas vraiment de sens en soi.

Vous n’avez pas précisé quelle carte microSD il s’agissait, mais elle se situe dans le même ordre de grandeur qu’une Lexar Professional 1800x, qui peut maintenir des vitesses de lecture séquentielle d’environ 300 Mo/s et des écritures approchant les 250 Mo/s. Les lectures et écritures séquentielles ne sont pas le problème avec les cartes microSD ; il faut examiner les lectures/écritures aléatoires pour avoir une idée réelle de ce qui se passera lorsque plusieurs utilisateurs accéderont à la base de données et aux ressources locales.

Les SSD modernes atteignent généralement des vitesses de lecture séquentielle de 500 Mo/s et plus, et des écritures séquentielles de 475 Mo/s et plus, ce qui n’est pas très éloigné des chiffres ci-dessus. Cependant, l’écart de performance sur les lectures/écritures aléatoires est énorme : le même SSD peut atteindre jusqu’à 400 Mo/s sur un test 4KiBQ8T8, tandis que la Lexar chute à des valeurs à deux chiffres, autour de 15 Mo/s. Les écritures aléatoires sont encore pires, le SSD maintenant jusqu’à 300 Mo/s, alors que la carte microSD tombe bien en dessous de 10 Mo/s (2 Mo/s).

Je suis un grand fan du Raspberry Pi et je les utilise dans de nombreux endroits, mais ils sont encore loin d’atteindre le niveau dont nous avons besoin.

C’est une carte Sandisk 64 Go à 20 USD (en Suède), classée A2, je crois. Je voulais juste prouver que la vitesse séquentielle pure n’est pas aussi mauvaise que vous l’avez décrite :slight_smile:

Si cela ne fonctionne pas sur le rPi, même avec un SSD externe sur les ports USB 3, je supposerais qu’exécuter la base de données en externe résoudrait ce goulot d’étranglement spécifique. Mais je suis partial car j’aime l’idée de mettre en place un cluster ARM avec les nouvelles cartes réseau 1 Gbit/s réelles du Pi 4. J’aime aussi remettre en question la mentalité du « ça ne marche pas » en général :wink:

Si vous investissez suffisamment de temps, d’argent et de ressources dans n’importe quoi, vous pouvez le faire fonctionner.

Les demandes d’exécution de Discourse sur un Raspberry Pi ces dernières années proviennent généralement d’utilisateurs qui possèdent un Pi et ne souhaitent pas dépenser plus que cela. C’est essentiellement ce que nous explorons ici.

Dès l’instant où vous commencez à ajouter des SSD externes et à déporter la base de données vers un autre système, vous ne parlez plus vraiment d’héberger Discourse sur un Raspberry Pi. :wink:

Exact. Je suis d’accord, on obtient généralement ce pour quoi on paie :slightly_smiling_face:

Prenez un Raspberry Pi 4 avec 4 Go ou 8 Go de RAM :wink:, puis commandez une carte MicroSD (INDUSTRIELLE) sur Amazon, eBay, etc.

Écrivez l’image Docker depuis le site : https://blog.hypriot.com/ :smiling_face_with_three_hearts: :slightly_smiling_face:, précisément dans la section : Télécharger, dernière version.

Une fois l’image écrite sur la carte SD, insérez-la dans le Raspberry Pi et connectez-vous via SSH. Les identifiants par défaut pour SSH Docker sont : “pirate” et “hypriot” (Utilisateur : pirate, Mot de passe : hypriot). Bien sûr, après la connexion SSH, modifiez les identifiants selon vos préférences en exécutant : sudo raspi-config, puis redémarrez le Raspberry Pi.

Après le redémarrage, reconnectez-vous via SSH et installez “Discourse” en suivant ce guide : https://linoxide.com/how-tos/install-discourse-docker-container/ :wink:. Notez que vous commencerez directement à l’étape 2), car Docker est déjà installé depuis le début.

Bon amusement.

Salut Massym,

J’ai suivi tes instructions, installé Hypriot, etc., mais j’ai obtenu l’erreur suivante :

  $ ./launcher bootstrap app
  standard_init_linux.go:211: exec user process caused "exec format error"
  Votre installation Docker ne fonctionne pas correctement

  Voir : https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

Tu as une idée de ce qui pourrait causer cela ?

Merci.

Je vous remercie vraiment pour votre réponse rapide, Rafael.

Apparemment, je me suis trompé en déduisant que Massym avait réussi à faire fonctionner Discourse sur un Raspberry Pi 4, car en relisant son message, il n’affirme pas explicitement cela. Une perte de temps de mon côté, mais au moins, une séance d’apprentissage.

Quel composant spécifique de Discourse n’est pas pris en charge ? Je suis certain que beaucoup d’autres seraient impatients de le faire fonctionner.

Merci.

Je parierais que Discourse utilise des images conçues pour x86_64, à savoir Redis, Ruby et PostgreSQL.

Il s’agit de notre bibliothèque V8/MiniRacer, qui exécute JavaScript sur le serveur.

Maintenant qu’Apple a introduit la famille de processeurs M1, je suis certain que nous parviendrons bientôt à la faire fonctionner sur ARM.

J’ai hâte de voir cela fonctionner. L’un de mes forums, hébergé sur Discourse, est le dernier élément en suspens pendant que je migre vers un cluster Raspberry Pi 4, qui consomme infiniment moins d’énergie que le serveur basé sur Intel.

Relance : y a-t-il eu des progrès concernant le gem v8 pour ARM ? J’ai essayé de compiler les images, mais je suis toujours bloqué sur ce gem. C’est un peu complexe : l’échec se produit principalement parce que les scripts tentent de télécharger des outils x86_64 (pour la construction) et de les exécuter sur ARM…

Voir :

ARM sur le serveur (et en Ruby) fera de grands progrès très bientôt grâce à la puce M1 incroyable d’Apple qui apparaît enfin dans un véritable ordinateur portable.

Mais le Raspberry Pi lui-même — même le 4 bien amélioré — est lamentablement sous-dimensionné pour servir de serveur. Selon ce post et les résultats de Speedometer 2.0…

3B+ Buster, noyau 32 bits
9,49/9,66/9,46 = 9,54 Chromium

4B4 Buster, noyau 64 bits (le 32 bits a donné des résultats équivalents)
17,2/17,0/17,1 = 17,1 Chromium

Smartphone OnePlus 7 Pro (Snapdragon 855, 8 Go de RAM, Android/Oxygen OS 10)
36,3/35,9/36,8 = 36,3 Chrome

HP Chromebook x2 (deux cœurs M3-7Y30)
68,2/68,6/68,0 = 68,3 Chrome OS 78

Legion Y520, ordinateur portable gaming d’entrée de gamme (i7-7700HQ, Win10x64)
87,4/86,8/87,3 = 87,2 Chrome

Sur la base de ces chiffres, j’émet l’hypothèse qu’un futur Raspberry Pi 5, s’il…

  • double au moins les performances du Pi 4
  • intègre un mini SSD M.2 de quelque type que ce soit pour le stockage, et non une carte SD

… pourrait peut-être constituer un serveur Discourse viable pour un forum Discourse à très faible trafic ?

Bientôt visible, j’ai exécuté d’autres applications Rails sur un Raspberry Pi 4 et j’étais satisfait des performances, mais je dois admettre qu’elles étaient beaucoup plus simples que Discourse.

Ceci est maintenant pris en charge