Gira un bel po di dramma in questi giorni riguardo twitter, ed è anche pieno di alternative anche più attraenti. Facciamoci la nostra instanza Mastodon che potenzialmente è un ottima alternativa a Twitter.
Che Cosa è Mastodon
Mastodon è un social network di microblogging open source molto simile alla piattaforma acquisita recentemente da Elon Musk, le persone sono in grado di creare profili, pubblicare messaggi (fino ad un massimo di 500 caratteri), condividere immagini o video e seguire ulteriori persone.
Unica cosa e grande differenza sostanziale rispetto a Twitter è la parziale decentralizzazione, il che significa che non esiste una società che gestisce l’intera rete Mastodon.
Cosa ci occorre
- Dominio registrato
- Una instanza VPS, con 4GB RAM raccomandati
- DNS con record A che punta la nostra VPS
- Un provider SMTP per mandare in uscita le email
Setup iniziale
Questi comandi non sono specifici per Mastodon, ma aiutano a configurare e ad avere una buona base di partenza su ogni nuovo server.
Creare un user non-root
uscire e riautenticatevi con l’user appena creato
Installazione e aggiornamento
Sempre buona norma installare gli aggiornamenti su una nuova instanza appena creata. Come prima cosa aggiornate l’indice dei repository per aggiornare le cache locali e vedere se ci sono pacchetti più recenti:
Configurare l’hostname
modificatelo dal seguente file /etc/hostname
:
1
| sudo nano /etc/hostname
|
dentro il file, cambiate l’hostname con lo stesso nome utilizzato dal vostro dominio.
prossima, modificare /etc/hosts
e configurate anche qui:
Installare i pacchetti richiesti
Prima cosa installeremo i pacchetti development dal default repository di Debian:
1
| sudo apt install build-essential bundler git libidn11-dev libjemalloc-dev libpq-dev nodejs npm postgresql postgresql-contrib rbenv redis-server ruby ruby-dev
|
per nginx
consiglio di seguire i seguenti comandi piuttosto che utilizzare il default di debian
1
2
3
| apt-get update
apt install -y curl gnupg2 ca-certificates lsb-release \
debian-archive-keyring
|
Scaricare e salvare la signing key di NGINX:
1
2
| curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
|
lsb_release
serve per definire l’OS e il nome della release, poi creiamo un apt source file:
1
2
3
4
5
| OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/${OS} ${RELEASE} nginx" \
| tee /etc/apt/sources.list.d/nginx.list
|
ora potete aggiornare le cache del repository e installare nginx:
1
2
3
| apt-get update
apt-get install -y nginx
nginx
|
adesso dobbiamo installare yarn
via npm:
1
| sudo npm install --global yarn
|
Database setup e configurazioni
configuriamo PostgreSQL
1
2
3
4
5
6
7
8
9
10
11
12
13
| psql
CREATE DATABASE mastodon_db;
CREATE USER mastodon;
ALTER USER mastodon createdb;
ALTER USER mastodon WITH ENCRYPTED PASSWORD 'password_super_segreta';
ALTER DATABASE mastodon_db OWNER TO mastodon;
exit
|
un secondo exit
, per ritornarare al nostro user di partenza:
Configuriamo il nostro utente mastodon di sistema
dobbiamo creare un utente dedicato esclusivamente per mastodon. Per farlo, eseguire il seguente comando:
1
| sudo adduser --group --system mastodon
|
Scarichiamo Mastodon
Possiamo scaricarlo dal repository git localmente nella nostra macchina con il seguente comando:
1
| git clone https://github.com/mastodon/mastodon.git
|
cambiamo l’owner del repository appena scaricato:
1
| sudo chown -R mastodon:mastodon mastodon
|
Creare la directory dell’app
spostiamo i file mastodon nella directory www
Mai servire una directory dalla propria home, spostiamola invece sotto la directory /var/www
:
1
| sudo mv mastodon /var/www/
|
Configurare la versione di mastodon da usare
spostiamoci sotto:
Aggiungiamo la directory Mastodon nella safe list
Se proviamo a modificare il repository, fallirà. Di default, i repositories sono protetti. Per permettere all’user mastodon di gestire i file mastodon, dobbiamo aggiungere la directory in una safe list (e farlo anche per l’utente mastodon):
1
| sudo -u mastodon git config --global --add safe.directory /var/www/mastodon
|
Determinare l’ultima versione di Mastodon
Dobbiamo specificare la versione Mastodon da usare. come prima cosa segui il link:
mastodon/releases
prendi nota dell numero della versione indicato come “latest”.
controllare la versione con il seguente comando:
1
| sudo -u mastodon git checkout <version>
|
Preparare Mastodon per l’installazione
1
| sudo gem install bundler
|
1
| sudo -u mastodon bundle config deployment 'true'
|
1
| sudo -u mastodon bundle config without 'development test'
|
1
| sudo -u mastodon bundle install -j$(getconf _NPROCESSORS_ONLN)
|
Configurare Mastodon
I seguenti comandi eseguirranno lo script di setup:
1
| sudo -u mastodon RAILS_ENV=production bundle exec rake mastodon:setup
|
Installare il systemd units
Copiare gli script di startup nella directory /etc/systemd/system
:
1
| sudo cp /var/www/mastodon/dist/mastodon*.service /etc/systemd/system
|
1
| sudo sed -i 's/home\/mastodon\/live/var\/www\/mastodon/g' /etc/systemd/system/mastodon-*.service
|
1
| sudo sed -i 's/home\/mastodon\/.rbenv\/shims/usr\/local\/bin/g' /etc/systemd/system/mastodon-*.service
|
1
| sudo systemctl daemon-reload
|
1
| sudo systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
|
Configurare il nostro Reverse Proxy
1
| sudo cp /var/www/mastodon/dist/nginx.conf /etc/nginx/conf.d/mastodon.conf
|
1
| sudo nano /etc/nginx/conf.d/mastodon.conf
|
Cambiare l’home path corretto, e il servername. entrambi nella sezione 80 e 443
aggiungere nella certificate section:
1
2
| ssl_certificate /etc/ssl/certs/ssl-cert.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert.key;
|
verificate successivamente il prossimo step che puntino ai certificati giusti creati con certbot
Restart nginx
1
| sudo systemctl restart nginx
|
Configurare i certificati TLS
1
| sudo snap install core; sudo snap refresh core
|
1
| sudo snap install --classic certbot
|
1
| sudo ln -s /snap/bin/certbot /usr/bin/certbot
|
Alcuni tweaks di sicurezza
1
| sudo apt install unattended-upgrades
|
modificate /etc/apt/apt.conf.d/50unattended-upgrades
Abilitate il reboot automatico, il tempo di reboot automatico e abilitate il reboot automatico degli users.
Installare Crowdsec
Crowdsec è una versione più avanzata del fail2ban. (a breve di cercherò di ampliare)
1
| curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
|
1
| sudo apt install crowdsec
|
1
| sudo apt install crowdsec-firewall-bouncer-iptables
|
o in alternativa potete usare lo stesso fail2ban