Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Mastodon: installazione su Raspberry Pi

Come installare un'istanza di Mastodon su Raspberry Py in un ambiente basato su NodeJS, Ruby, NGINX e PostgreSQL
Come installare un'istanza di Mastodon su Raspberry Py in un ambiente basato su NodeJS, Ruby, NGINX e PostgreSQL
Link copiato negli appunti

Negli ultimi anni sono nati diversi progetti di social network decentralizzati. Uno dei interessanti è sicuramente Mastodon, si tratta di una piattaforma di microblogging completamente open source considerata alternativa a Twitter. Potenzialmente tutti gli utenti Mastodon possono ospitare un'istanza di tale social media su un proprio device.

Installare Mastodon non richiede conoscenze tecniche particolari ed è sostanzialmente alla portata di qualsiasi utente. In questa guida analizzeremo quindi la procedura per l'installazione di un'istanza del social network su Raspberry Pi.

Configurazione di Raspberry Pi OS

Raspberry Pi OS

In questo tutorial diamo per scontato che Raspberry Pi OS, ovvero la distribuzione Linux sviluppata dai developer della Raspberry Pi Foundation, sia già installata e pienamente operativa. Partiamo quindi con il download e l'installazione di una serie di software e librerie varie che ci serviranno durante il setup dell'istanza di Mastodon.

Apriamo il terminale ed invochiamo la CLI (Command Line Interface) del gestore di pacchetti APT (Advanced Packaging Tool):

sudo apt update

sudo apt upgrade

Cosi facendo abbiamo eseguito un controllo degli aggiornamento di sistema disponibili. Se non vi sono update possiamo proseguire installando tali pacchetti, sempre tramite il package manager APT:

sudo apt install curl lsb-release imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev nginx redis-server redis-tools certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev

Si tratta di un cospicuo set di librerie e tool che ci serviranno per far funzionare correttamente Mastodon. Successivamente è necessario generare un utente dedicato a tale istanza che sfrutteremo per l'esecuzione dell'applicativo:

sudo useradd mastodon -m

Installazione di NodeJS

Mastodon è stato realizzato tramite la nota runtime NodeJS e dipende da essa per il suo corretto funzionamento. Quindi dobbiamo procedere alla sua installazione e configurazione su Raspberry Pi OS. Torniamo in bash e digitiamo:

curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -

sudo apt update

sudo apt install nodejs

Installazione e configurazione di PostgreSQL

Mastodon sfrutta il DBMS (Database Management System) PostgreSQL per gestire i dati. Ecco perché dobbiamo installare tale componente software prima di procedere alla configurazione dell'applicativo. Sempre da bash scriviamo:

curl -L https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-archive-keyring.gpg >/dev/null

Con questo comando abbiamo scaricato la chiave gpg dei pacchetti di PostgreSQL, ora provvediamo ad impostare il repository da cui reperire il software:

echo "deb [arch=arm64 signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list

sudo apt update

e finalmente scarichiamo ed installiamo PostgreSQL:

sudo apt install postgresql postgresql-contrib

Successivamente è necessario predisporre un utente di Mastodon in tale database:

sudo -u postgres psql

CREATE USER mastodon CREATEDB;

\q

Configurazione di Yarn e delle librerie Ruby

Yarn è un package manager e per eseguire il build di Mastodon è necessario reperire dei pacchetti tramite questo tool. Dunque dobbiamo provvedere alla sua configurazione:

sudo corepack enable

sudo yarn set version stable

Successivamente passiamo invece all'installazione di altre librerie che servono a Mastodon, ovvero quelle di Ruby:

sudo su mastodon

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc

exec bash

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.4

rbenv global 3.0.4

Arrivati a questo punto avremo non solo installato le librerie Ruby ma anche indicato al sistema di utilizzarle per tutti gli applicativi che le richiedono. Ora abilitiamo il package manager di Ruby:

gem install bundler --no-document

Installare Mastodon

Siamo finalmente pronti per installare Mastodon sul Raspberry Pi. Torniamo nella nostra home directory:

cd ~

Se non siamo loggati con l'utente chiamato mastodon possiamo eseguire il login cosi:

sudo su mastodon

quindi passiamo alla clonazione del codice sorgente di Mastodon:

git clone https://github.com/mastodon/mastodon.git live

e dopo spostiamoci nella directory appena generata:

cd live

Ora procediamo all'installazione:

git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)

bundle config deployment 'true'

bundle config without 'development test'

bundle install -j$(nproc)

yarn install --pure-lockfile

Successivamente lanciamo il setup dell'applicativo:

RAILS_ENV=production bundle exec rake mastodon:setup

Arrivati a questo punto il programma ci domanderà il dominio da utilizzare, ecco un esempio:

mastodon.test.it

Nello step successivo Mastodon ci chiede se vogliamo sfruttare tale istanza in modalità single-user, ovvero un profilo privato gestibile unicamente da una sola persona. Se desiderate tale setup digitate "Y", altrimenti scrivete "N". Il programma vorrà sapere se lo stiamo eseguendo in un container Docker, noi in questo caso rispondiamo ovviamente con "N".

Le prossime domande riguardano tutte le impostazioni di PostgreSQL e Redis, possiamo rispondere a tutte affermativamente premendo il tasto invio. Mentre per quanto concerne il setup del cloud storage digitiamo "N", visto che stiamo operando completamente in locale. Lo stesso vale per l'invio di email inerenti a comunicazioni varie, mentre per le email che è possibile inviare agli utenti possiamo anche lasciare la casella di default premendo ancora su Invio.

Alle successive domande continuano a rispondere "Y" fino a quando non ci verrà chiesto di inserire un account di amministrazione, con le relative credenziali, ed un indirizzo email con cui eseguire il login.

Terminiamo il primo setup digitando:

exit

Configurare certificato SSL e NGIX

Per poterci connettere all'interfaccia Web è necessario avviare un Web server, in questo caso useremo NGINX, ed impostare un certificato SSL cosi da poter sfruttare il protocollo HTTPS.

Quindi torniamo in bash e scriviamo:

certbot --nginx -d TEST.com

Successivamente passiamo alla configurazione di NGIX:

sudo cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

A questo punto dobbiamo modificare un file in modo tale che al suo interno sia indicato il nostro dominio:

sudo nano /etc/nginx/sites-enabled/mastodon

la stringa su cui operare dovrebbe apparire cosi:

server_name example.com;

e va modificata in questo modo:

server_name test.com;

Ora dobbiamo indicare al Web server i certificati SSL generati poco prima, quindi reperiamo queste righe:

# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

e modifichiamole cosi:

ssl_certificate /etc/letsencrypt/live/mastodon.test.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mastodon.test.com/privkey.pem;

Salviamo tramite la shortcut CTRL+O e chiudiamo il documento con CTRL+X. Per rendere operative tali modifiche è necessario riavviare il Web server:

sudo systemctl reload nginx

Adesso impostiamo il demone di Mastodon in modo tale che sia attivo:

sudo cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/

sudo systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming

Se tutto dovesse andare per il meglio basterà aprire il browser e digitare questo URL per navigare nella nostra istanza di Mastodon:

https://mastodon.test.com

mastodon

Ti consigliamo anche