Ospitare Discourse su un Raspberry Pi?

Secondo me, ti conviene aspettare il futuro Raspberry Pi 5, che – se si proietta in avanti l’evoluzione delle prestazioni dei Pi dal modello 2 al 3 e poi al 4 – dovrebbe avere potenza sufficiente per eseguire Discourse.

Non sono nemmeno sicuro che le dipendenze x86 (x64?) siano attualmente superabili, ma non è una cattiva idea esaminarle per il lungo termine.

Un cluster di Pi 4 con processore quad-core a 1,5 GHz a 64 bit e, possibilmente, dischi USB 3.0 per l’archiviazione (~300 MB/s) o un blob store esterno (S3 o GCP), con una CDN a protezione di quegli utenti anonimi, potrebbe essere un’alternativa di piattaforma praticabile :slight_smile: Lo dirà il futuro!

Da solo, questo non è un numero particolarmente significativo.

Non hai specificato quale scheda microSD fosse, ma si colloca nello stesso ordine di grandezza di una Lexar Professional 1800x, che può mantenere velocità di lettura sequenziale di circa 300 MB/s e velocità di scrittura vicine ai 250 MB/s. Le letture e scritture sequenziali non sono il problema con le microSD; per avere un’idea reale di ciò che accadrà con più utenti che accedono al database e alle risorse locali, è necessario guardare alle letture/scritture casuali.

Gli SSD moderni si collocano solitamente nella fascia di 500 MB/s+ per le letture sequenziali e 475 MB/s+ per le scritture sequenziali, il che non è molto lontano dai numeri sopra riportati. La differenza di prestazioni nelle letture/scritture casuali è però enorme: lo stesso SSD può raggiungere fino a 400 MB/s con un test 4KiBQ8T8, mentre la Lexar scende a cifre basse a due cifre, intorno ai 15 MB/s. Le scritture casuali sono ancora peggiori: l’SSD mantiene fino a 300 MB/s, mentre una microSD scende ben nelle cifre basse a una cifra (2 MB/s).

Sono un grande fan del rPi e li uso in molti contesti, ma sono ancora lontani da dove dovrebbero essere.

È una scheda SanDisk da 64 GB da 20 USD (in Svezia), credo di classe A2. Volevo solo dimostrare che la velocità sequenziale pura non è così scarsa come hai fatto sembrare :slight_smile:

Se non funziona sul rPi nemmeno con un SSD esterno collegato alle porte USB3, presumerei che eseguire il database esternamente risolverebbe quel particolare collo di bottiglia. Ma sono di parte, perché mi piace l’idea di mettere in piedi e far funzionare un cluster ARM con le nuove schede di rete reali da 1 Gbit/s sul Pi 4. Mi piace anche mettere in discussione in generale la mentalità del “non funziona” :wink:

Se investi abbastanza tempo, denaro e risorse in qualsiasi cosa, puoi farla funzionare.

Le richieste di eseguire Discourse su un Raspberry Pi negli ultimi anni provengono tipicamente da utenti che possiedono un Pi e non vogliono spendere altro oltre a quello. È esattamente ciò che stiamo esplorando qui.

Non appena inizi a collegare SSD esterni e a spostare il database su un sistema diverso, non stai più parlando di ospitare Discourse su un Raspberry Pi. :wink:

Esatto. Concordo sul fatto che di solito si ottiene ciò per cui si paga :slightly_smiling_face:

Prendi un Raspberry Pi 4 da 4GB o 8GB di RAM :wink:, poi procurati una MicroSD (INDUSTRIALE) su Amazon, eBay…

Scarica l’immagine da Docker dal sito: https://blog.hypriot.com/ :smiling_face_with_three_hearts: :slightly_smiling_face:, precisamente nella sezione: Download, ultima versione.

Una volta scritta l’immagine sulla SD, inseriscila nel Raspberry Pi e connettiti via SSH (le credenziali predefinite per Docker SSH sono: “pirate” “hypriot” → Utente: pirate, Password: hypriot). Ovviamente, dopo la connessione SSH, modifica le credenziali a tuo piacimento tramite → sudo raspi-config, quindi riavvia il Raspberry.

Dopo il riavvio, connettiti di nuovo via SSH e installa “Discourse” seguendo questa guida: https://linoxide.com/how-tos/install-discourse-docker-container/ :wink:. Ovviamente, dovrai iniziare dal punto 2), poiché Docker è già stato installato fin dall’inizio.

Buon divertimento.

Ciao Massym,

Ho seguito le tue istruzioni, ho installato Hypriot, ecc., ma ho ottenuto il seguente errore:

  $ ./launcher bootstrap app
  standard_init_linux.go:211: exec user process caused "exec format error"
  La tua installazione Docker non funziona correttamente

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

Hai qualche idea?

Grazie.

Apprezzo molto la tua pronta risposta, Rafael.

A quanto pare ho sbagliato a dedurre che Massym sia riuscito a far funzionare Discourse su un Raspberry Pi 4; rileggendo il suo post, non lo afferma esplicitamente. Ho perso molto tempo inutilmente, ma è stato almeno un esercizio di apprendimento.

Quale componente specifico di Discourse non è supportato? Io e, sono sicuro, molti altri saremmo entusiasti di farlo funzionare.

Grazie.

Indovino che Discourse stia utilizzando immagini costruite per x86_64, ovvero Redis, Ruby e PostgreSQL.

È la nostra libreria V8/MiniRacer, che esegue Javascript sul server.

Ora che Apple ha introdotto la famiglia di processori M1, sono sicuro che riusciremo a farla funzionare su ARM molto presto.

Non vedo l’ora di vederlo funzionare. Uno dei miei forum, in esecuzione su Discourse, è l’ultimo elemento in sospeso mentre mi sposto verso un cluster Raspberry Pi 4, che consuma infinitamente meno energia rispetto al server basato su Intel.

Aggiornamento, ci sono stati progressi sul gem v8 per ARM? Ho provato a compilare le immagini, ma mi sono sempre bloccato su quel gem, è un po’ intricato: fallisce principalmente perché gli script cercano di scaricare strumenti X86_64 (per la compilazione) ed eseguirli su ARM…

Vedi:

ARM sui server (e in Ruby) farà enormi progressi molto presto grazie alla straordinaria chip M1 di Apple, finalmente disponibile su un vero laptop.

Ma il Raspberry Pi stesso — anche il molto migliorato modello 4 — è terribilmente sottopotenziato per fare da server. Come indicato in questo post e nei risultati di Speedometer 2.0…

3B+ Buster, kernel a 32 bit
9.49/9.66/9.46 = 9.54 Chromium

4B4 Buster, kernel a 64 bit (il 32 bit ha ottenuto risultati equivalenti)
17.2/17.0/17.1 = 17.1 Chromium

Smartphone OnePlus 7 Pro (Snapdragon 855, 8 GB RAM, Android/Oxygen OS 10)
36.3/35.9/36.8 = 36.3 Chrome

HP Chromebook x2 (dual core M3-7Y30)
68.2/68.6/68.0 = 68.3 Chrome OS 78

Legion Y520, laptop economico per gaming (i7-7700HQ Win10x64)
87.4/86.8/87.3 = 87.2 Chrome

Sulla base di questi dati, ipotizzo che un futuro Raspberry Pi 5, se…

  • raddoppiasse almeno le prestazioni rispetto al Pi 4
  • includesse un mini SSD M.2 di qualche tipo per l’archiviazione, invece di una scheda SD

… potrebbe forse diventare un server Discourse percorribile per un forum Discourse con traffico molto basso?

A breve, ho eseguito altre applicazioni Rails su RPi4 e sono rimasto soddisfatto delle prestazioni, ma devo ammettere che erano molto più semplici di Discourse.

Ora è supportato