Pleroma è una piattaforma di social networking federata open source, compatibile con Mastodon e altre piattaforme ActivityPub. Fa parte di Fediverse, una rete federata di istanze in grado di comunicare utilizzando un protocollo comune. Un singolo account su un'istanza può comunicare con l'intera rete Fediverse.
Questa guida ti mostrerà come creare la tua istanza Pleroma installandola su un server basato su Ubuntu 20.04.
Prerequisiti
-
Un server che esegue Ubuntu 20.04.
-
Un utente sudo non root.
-
Assicurati che tutto sia aggiornato.
$ sudo apt update $ sudo apt upgrade
-
Pochi pacchetti e dipendenze di cui hai bisogno prima di installare Pleroma.
$ sudo apt install wget curl gnupg2 ca-certificates lsb-release gnupg zip libncurses5 libmagic-dev -y
Passaggio 1:configurazione del firewall
Il primo passo è configurare il firewall. Ubuntu viene fornito con ufw (Uncomplicated Firewall) per impostazione predefinita.
Controlla se il firewall è in esecuzione.
$ sudo ufw status
Dovresti ottenere il seguente output.
Status: inactive
Consenti porta SSH in modo che il firewall non interrompa la connessione corrente quando lo si abilita.
$ sudo ufw allow OpenSSH
Consenti anche le porte HTTP e HTTPS.
$ sudo ufw allow 80
$ sudo ufw allow 443
Abilita il Firewall
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Ricontrolla lo stato del firewall.
$ sudo ufw status
Dovresti vedere un output simile.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Passaggio 2 - Installa PostgreSQL
Aggiungi il repository PostgreSQL ufficiale all'elenco delle fonti di Ubuntu.
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Aggiungi la chiave GPG del repository.
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Aggiorna l'elenco dei pacchetti di sistema.
$ sudo apt update
Passaggio 3:installa Nginx
Ubuntu 20.04 viene fornito con la versione stabile di Nginx 18 per impostazione predefinita.
$ sudo apt install nginx
Fase 4 - Installa Pleroma
Questa guida installa Pleroma da una versione OTP. Il primo passo è creare un utente Pleroma senza capacità di accesso. Creerà anche la directory home in /opt/pleroma
.
$ sudo adduser --system --shell /bin/false --home /opt/pleroma pleroma
Passa all'utente Pleroma. Ma prima, dobbiamo passare all'utente root.
$ sudo su
$ su pleroma -s $SHELL -l
Scarica Pleroma in una posizione temporanea.
$ curl "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=amd64" -o /tmp/pleroma_amd64.zip
Decomprimi l'archivio.
$ unzip /tmp/pleroma_amd64.zip -d /tmp/
Installa Pleroma.
$ mv /tmp/release/* /opt/pleroma
Elimina i file temporanei.
$ rm -rf /tmp/pleroma_amd64.zip /tmp/release
Passa all'utente root.
$ exit
Crea directory per i caricamenti e i file pubblici.
$ mkdir -p /var/lib/pleroma/{uploads,static}
Crea la directory per la configurazione di Pleroma.
$ mkdir -p /etc/pleroma
Cambia la proprietà delle directory Pleroma all'utente Pleroma.
$ chown -R pleroma /var/lib/pleroma /etc/pleroma
Passaggio 5 - Configura Pleroma
Torna all'utente Pleroma.
$ su pleroma -s /bin/bash -l
Eseguire il comando seguente per generare il file di configurazione per l'istanza Pleroma.
$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
Ti verranno poste diverse domande sulla configurazione di Pleroma. Se ricevi un avviso che indica che non è stato possibile trovare il file di configurazione, ignoralo.
[email protected]:~$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
!!! /etc/pleroma/config.exs not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file
What domain will your instance use? (e.g pleroma.soykaf.com) [] example.com
What is the name of your instance? (e.g. The Corndog Emporium) [nspeaks.com] Howtoforge Pleroma
What is your admin email address? [] [email protected]
What email address do you want to use for sending email notifications? [[email protected]] <Press Enter>
Do you want search engines to index your site? (y/n) [y] y
Do you want to store the configuration in the database (allows controlling it from admin-fe)? (y/n) [n] n
What is the hostname of your database? [localhost] localhost
What is the name of your database? [pleroma] pleroma
What is the user used to connect to your database? [pleroma] pleroma
What is the password used to connect to your database? [autogenerated] yourpassword
Would you like to use RUM indices? [n] n
What port will the app listen to (leave it if you are using the default setup with nginx)? [4000] <Press Enter>
What ip will the app listen to (leave it if you are using the default setup with nginx)? [127.0.0.1] <Press Enter>
What directory should media uploads go in (when using the local uploader)? [/var/lib/pleroma/uploads] <Press Enter>
What directory should custom public files be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)? [/var/lib/pleroma/static] <Press Enter>
Do you want to strip location (GPS) data from uploaded images? This requires exiftool, it was detected as not installed, please install it if you answer yes. (y/n) [n] n
Do you want to anonymize the filenames of uploads? (y/n) [n] n
Do you want to deduplicate uploaded files? (y/n) [n] y
Writing config to /etc/pleroma/config.exs.
Writing the postgres script to /tmp/setup_db.psql.
Writing /var/lib/pleroma/static/robots.txt.
All files successfully written! Refer to the installation instructions for your platform for next steps.
Puoi scegliere un diverso insieme di opzioni a seconda delle tue esigenze. Scegli una password complessa per il tuo database. Se desideri configurare la tua istanza dal Pannello di amministrazione, seleziona y
per la domanda sulla memorizzazione della configurazione nel database.
Passa all'utente PostgreSQL predefinito che è stato creato durante l'installazione di PostgreSQL.
$ exit
$ su postgres -s /bin/bash -l
Crea il database utilizzando il file SQL fornito da Pleroma.
$ psql -f /tmp/setup_db.psql
Torna all'utente Pleroma.
$ exit
$ su pleroma -s /bin/bash -l
Inizializza il database che abbiamo appena creato.
$ ./bin/pleroma_ctl migrate
Esci all'utente root.
$ exit
Passaggio 6:installa SSL utilizzando Let's Encrypt
Per installare un certificato SSL utilizzando Let's Encrypt, dobbiamo scaricare lo strumento Certbot.
Per installare Certbot, utilizzeremo il programma di installazione del pacchetto Snapd. Il repository ufficiale di Certbot è stato deprecato e il pacchetto Certbot di Ubuntu ha più di un anno. Snapd trasporta sempre l'ultima versione stabile di Certbot e dovresti usarla. Fortunatamente, Ubuntu 20.04 viene fornito con Snapd preinstallato.
Assicurati che la tua versione di Snapd sia aggiornata.
$ snap install core
$ snap refresh core
Rimuovi tutte le vecchie versioni di Certbot.
$ apt remove certbot
Installa Certbot.
$ snap install --classic certbot
Utilizzare il comando seguente per assicurarsi che il comando Certbot possa essere eseguito creando un collegamento simbolico al /usr/bin
directory.
$ ln -s /snap/bin/certbot /usr/bin/certbot
Arresta il servizio Nginx.
$ systemctl stop nginx
Genera un certificato SSL.
$ certbot certonly --standalone --preferred-challenges http -d example.com
Il comando precedente scaricherà un certificato in /etc/letsencrypt/live/example.com
directory sul tuo server.
Crea una directory radice web di sfida per il rinnovo automatico di Let's Encrypt.
$ mkdir -p /var/lib/letsencrypt
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, prima crea il file /etc/cron.daily/certbot-renew
e aprilo per la modifica.
$ nano /etc/cron.daily/certbot-renew
Incolla il seguente codice.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Modifica le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ chmod +x /etc/cron.daily/certbot-renew
Passaggio 7 - Configura Nginx
Pleroma viene fornito con un file di configurazione Nginx predefinito. Installalo spostandolo in /etc/nginx/sites-available
directory.
$ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
Sostituisci tutte le occorrenze di example.tld
con il tuo dominio.
$ sed -i 's/example\.tld/example.com/g' /etc/nginx/sites-available/pleroma.conf
Apri il file di configurazione per la modifica.
$ nano /etc/nginx/sites-available/pleroma.conf
Decommenta la location ~ /\.well-known/acme-challenge
bloccare. Il server
il blocco del tuo file di configurazione dovrebbe essere simile al seguente.
server {
server_name example.com;
listen 80;
listen [::]:80;
location ~ /\.well-known/acme-challenge {
root /var/lib/letsencrypt/;
}
location / {
return 301 https://$server_name$request_uri;
}
}
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Abilita la configurazione di Pleroma Nginx creando un collegamento simbolico.
$ ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
Abilita il server Nginx per avviarlo all'avvio.
$ systemctl enable nginx.
Avvia il server Nginx.
$ systemctl start nginx
Installa il file dell'unità di servizio di sistema Pleroma fornito nella distribuzione.
$ mv /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
Abilita e avvia il servizio Pleroma.
$ systemctl enable pleroma
$ systemctl start pleroma
Potrebbero essere necessari circa 30 secondi prima che il sito Pleroma diventi disponibile. Ora puoi aprire https://example.com
nel tuo browser web per visitare Pleroma. Dovrebbe essere simile al seguente.
Passaggio 8 - Configura Pleroma
Crea un utente amministratore
È possibile creare un utente amministrativo tramite la riga di comando. Passa prima all'utente Pleroma.
$ su pleroma -s /bin/bash -l
Crea un utente amministratore. Sostituisci example
con il tuo nome utente, [email protected]
con il tuo indirizzo email e password123
con una password complessa.
$ ./bin/pleroma_ctl user new example [email protected] --password password123 --admin
Torna all'utente root una volta terminato.
$ exit
Modifica delle impostazioni
Se hai selezionato no come risposta per memorizzare la configurazione nel database , ciò significa che non puoi modificare le impostazioni dal pannello di amministrazione di Pleroma. Per modificare le impostazioni, dovrai modificare il /etc/pleroma/config.exs
file.
$ nano /etc/pleroma/config.exs
Una volta terminata la modifica del file, dovrai anche riavviare il servizio Pleroma. Potrebbe essere necessario attendere un po' di tempo prima che il servizio venga ripreso.
$ systemctl restart pleroma
Aggiornamento di Pleroma
Per aggiornare Pleroma, il primo passo è scaricare la nuova versione. Esegui il comando seguente per scaricare la nuova versione di Pleroma.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl update"
Arresta l'istanza Pleroma.
$ systemctl stop pleroma
Il passaggio successivo consiste nel migrare il database.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Avvia l'istanza Pleroma.
$ systemctl start pleroma
Backup di Pleroma
Interrompi il servizio Pleroma.
$ systemctl stop pleroma
Passa alla directory del Pleroma.
$ cd /opt/pleroma
Esegui il comando seguente per eseguire il backup del database.
$ sudo -Hu postgres pg_dump -d <pleroma_db> --format=custom -f </path/to/backup_location/pleroma.pgdump>
Copia i file pleroma.pgdump
, config/prod.secret.exs
, config/setup_db.sql
e i uploads
cartella nella destinazione del backup.
Riavvia il servizio Pleroma.
$ systemctl start pleroma
Ripristino del Pleroma
Per ripristinare Pleroma, devi reinstallare Pleroma e assicurarti che il servizio Pleroma non funzioni.
Quindi copia i file di backup nella loro posizione originale.
Elimina il database e l'utente esistenti utilizzando il comando seguente.
$ sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';` `sudo -Hu postgres psql -c 'DROP USER <pleroma_db>;'
Ripristina lo schema del database e il ruolo Pleroma Postgres con il backup di setup_db.sql
file.
$ sudo -Hu postgres psql -f config/setup_db.psql
Quindi, ripristina i dati dell'istanza Pleroma.
$ sudo -Hu postgres pg_restore -d <pleroma_db> -v -1 </path/to/backup_location/pleroma.pgdump>
Esegui la migrazione del database se sono rimaste migrazioni da eseguire nel caso in cui stai passando a una versione più recente.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Riavvia il servizio Pleroma.
$ systemctl restart pleroma
Genera le statistiche in modo che Postgres possa pianificare correttamente le query.
$ sudo -Hu postgres vacuumdb --all --analyze-in-stages
Conclusione
Questo conclude il nostro tutorial sull'installazione della piattaforma Pleroma Social Network su un server basato su Ubuntu 20.04. Se hai domande o feedback, pubblicali nei commenti qui sotto.