In questo articolo, installeremo Mastodon su un VPS Ubuntu 18.04.
Mastodon è una piattaforma di rete gratuita e open source molto simile alla famosa piattaforma di social media nota come Twitter. Tuttavia, a differenza di Twitter, non esiste un'unica autorità centrale e non esiste pubblicità. Mastodon è scritto in Ruby e JavaScript e la sua natura open source fa in modo che rimanga aperto a chiunque possa usarlo in modo privato e sicuro. Chiunque può creare un server Mastodon e creare le proprie comunità con gli amici. Inoltre, Mastodon è supportato e disponibile tramite più app per iOS, Android e altre piattaforme, che ti permetteranno di rimanere in contatto con i tuoi amici ovunque tu vada. Iniziamo con l'installazione di Mastodon.
Prerequisiti:
Prima di iniziare l'installazione, dobbiamo soddisfare i prerequisiti:
- Un server che esegue Ubuntu 18.04
- accesso root o utente con privilegi sudo
- Un nome di dominio (o un sottodominio) per il server Mastodon, ad es. tuo_nome_dominio.com
Inizia accedendo al tuo VPS utilizzando il protocollo SSH.
Eseguiremo tutti i comandi come root in questo tutorial, quindi se non stai usando l'account root, passa a root o usa il comando sudo davanti ai comandi. In alternativa, assicurati di eseguire ogni comando con il prefisso "sudo".
sudo -i
Passaggio 1:aggiunta dei repository richiesti
In questo passaggio, aggiungeremo i repository richiesti al nostro sistema.
Per assicurarti che curl sia installato sul tuo sistema, esegui il comando:
apt install -y curl
Abilita il repository NodeSource con il seguente comando curl:
curl -sL https://deb.nodesource.com/setup_8.x | bash -
Utilizzando i seguenti comandi importeremo la chiave GPG del repository. Successivamente, abiliteremo il repository APT di filati:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
Fase 2:installazione dei pacchetti
Ora installeremo i pacchetti di sistema richiesti per Mastodon:
apt update apt install -y \ 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 libgdbm5 libgdbm-dev \ nginx redis-server redis-tools postgresql postgresql-contrib \ certbot yarn libidn11-dev libicu-dev libjemalloc-dev
Ecco una breve spiegazione delle dipendenze che abbiamo appena installato:
- imagemagic – Mastodon utilizza ImageMagick per le operazioni relative alle immagini
- ffmpeg – Mastodon utilizza FFmpeg per la conversione di GIF in MP4
- libprotobuf-dev e protobuf-compiler – Mastodon li usa per il rilevamento della lingua
- nginx – Nginx viene utilizzato come server web
- redis-* – Mastodon utilizza Redis per il suo archivio di strutture dati in memoria
- postgresql-* – Mastodon utilizza PostgreSQL come database SQL
- nodejs – Node viene utilizzato per l'API di streaming di Mastodon
- filato – Yarn è un gestore di pacchetti Node.js
- Altri pacchetti -dev, g++ – questi sono necessari per la compilazione di Ruby usando ruby-build.
Fase 3:installazione di Ruby
Ruby è anche uno dei requisiti per Mastodon e lo installeremo in questo passaggio. Useremo 'rbenv' per gestire le versioni di Ruby. Ma poiché rbenv deve essere installato per un utente Linux specifico, la prima cosa che dobbiamo fare è creare un nuovo utente Mastodon. Per creare l'utente Mastodon, eseguiremo il comando:
adduser --disabled-login mastodon
Quindi passare all'utente mastodonte con il comando:
su - mastodon
E con i seguenti comandi installeremo rbenv e rbenv-build:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv cd ~/.rbenv && src/configure && make -C src echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec bash git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Dopo aver terminato l'installazione di rbenv e rbenv-build, possiamo installare l'esatta versione di Ruby di cui abbiamo bisogno:
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.0 rbenv global 2.6.0
Poiché ruby_2.6.0 viene fornito con un bundler che non è compatibile con la versione gem predefinita, dovremo aggiornare la gem:
gem update --system
Inoltre, dobbiamo installare bundler:
gem install bundler --no-document
Una volta che tutti i passaggi sono stati elaborati, possiamo tornare all'utente root:
exit
Fase 4:configurazione di PostgreSQL
Creeremo un utente PostgreSQL che può essere utilizzato dall'utente Linux con lo stesso nome utente senza richiedere una password separata. Questo è un metodo molto semplice che utilizza l'autenticazione "ident" che consente una facile configurazione e consente agli utenti locali di accedere al database senza password.
Puoi aprire il prompt di Postgres passando all'utente postgres e quindi eseguendo psql comando oppure puoi eseguire il comando seguente:
sudo -u postgres psql
Esegui il comando:
CREATE USER mastodon CREATEDB;
Esci dal prompt di Postgres con:
\q
Fase 5:configurazione del mastodonte
Poiché abbiamo preparato il server per l'installazione di Mastodon, possiamo procedere ora con il download del codice Mastodon. Passa all'utente mastodonte con il comando:
su - mastodon
Useremo git per clonare l'ultima versione stabile di Mastodon eseguendo i comandi:
git clone https://github.com/tootsuite/mastodon.git live && cd live git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
Passaggio 6:installazione delle dipendenze Ruby e JavaScript
Queste sono le ultime dipendenze che dobbiamo installare. Useremo bundler per installare il resto delle dipendenze di Ruby:
bundle install \ -j$(getconf _NPROCESSORS_ONLN) \ --deployment --without development test
e usa il filato per installare le dipendenze di Node.js:
yarn install --pure-lockfile
Fase 7:generazione di un file di configurazione
Possiamo eseguire la procedura guidata di configurazione interattiva per generare il file di configurazione:
RAILS_ENV=production bundle exec rake mastodon:setup
Ora possiamo tornare all'account root perché questo è tutto ciò che dovevamo fare con l'utente mastodon.
exit
Fase 8:configurazione di Nginx
Mastodon viene fornito di default con un modello di configurazione Nginx. Nel passaggio successivo, utilizzeremo una copia di questo modello di configurazione e lo adatteremo alle nostre esigenze.
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon.conf ln -s /etc/nginx/sites-available/mastodon.conf /etc/nginx/sites-enabled/mastodon.conf
Quindi modifica /etc/nginx/sites-available/mastodon.conf
e sostituisci tuo_dominio.com con il tuo nome di dominio effettivo.
nano /etc/nginx/sites-available/mastodon.conf
Dobbiamo ricaricare Nginx per rendere effettive le modifiche:
systemctl reload nginx
Se per qualche motivo ti manca accidentalmente il file Nginx in quella posizione, puoi utilizzare la seguente configurazione Nginx e modificarla in base alle tue esigenze.
map $http_upgrade $connection_upgrade { default upgrade; '' close; } proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g; server { listen 80; listen [::]:80; server_name your_domain.com; root /home/mastodon/live/public; location /.well-known/acme-challenge/ { allow all; } location / { return 301 https://$host$request_uri; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name your_domain.com; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; # Uncomment these lines once you acquire a certificate: # ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem; # ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem; keepalive_timeout 70; sendfile on; client_max_body_size 80m; root /home/mastodon/live/public; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; add_header Strict-Transport-Security "max-age=31536000"; location / { try_files $uri @proxy; } location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) { add_header Cache-Control "public, max-age=31536000, immutable"; add_header Strict-Transport-Security "max-age=31536000"; try_files $uri @proxy; } location /sw.js { add_header Cache-Control "public, max-age=0"; add_header Strict-Transport-Security "max-age=31536000"; try_files $uri @proxy; } location @proxy { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Proxy ""; proxy_pass_header Server; proxy_pass http://127.0.0.1:3000; proxy_buffering on; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_cache CACHE; proxy_cache_valid 200 7d; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; add_header X-Cached $upstream_cache_status; add_header Strict-Transport-Security "max-age=31536000"; tcp_nodelay on; } location /api/v1/streaming { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Proxy ""; proxy_pass http://127.0.0.1:4000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; tcp_nodelay on; } error_page 500 501 502 503 504 /500.html; }
Ricordarsi di salvare ed uscire dal file e riavviare Nginx come mostrato sopra per riconoscere il nuovo file.
Fase 9:acquisizione di un certificato SSL
Useremo Let's Encrypt per generare un certificato SSL gratuito:
certbot certonly --webroot -d your_domain.com -w /home/mastodon/live/public/
Non dimenticare di sostituire tuo_dominio.com con il tuo nome di dominio effettivo. Ora possiamo modificare /etc/nginx/sites-available/mastodon.conf
file di configurazione con:
nano /etc/nginx/sites-available/mastodon.conf
Decommenta e modifica il certificato_ssl e ssl_certificate_key linee. Una volta terminata la modifica del file di configurazione, dobbiamo ricaricare Nginx ancora una volta affinché le nostre modifiche abbiano effetto:
systemctl reload nginx
A questo punto, se provi ad accedere al tuo dominio nel tuo browser web preferito, non sarai in grado di vedere Mastodon. Questo perché il nostro processo di mastodonte non è ancora iniziato.
Passaggio 10:configurazione dei servizi systemd
In questo passaggio, avvieremo e abiliteremo il servizio Mastodon sul server. Possiamo semplicemente copiare i modelli di servizio systemd dalla directory Mastodon:
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
Possiamo ricontrollare e assicurarci che il nome utente e i percorsi siano corretti in questi file:
/etc/systemd/system/mastodon-web.service
/etc/systemd/system/mastodon-sidekiq.service
/etc/systemd/system/mastodon-streaming.service
Infine, possiamo avviare e abilitare i servizi di sistema Mastodon:
systemctl start mastodon-web mastodon-sidekiq mastodon-streaming systemctl enable mastodon-web mastodon-sidekiq mastodon-streaming
Se per caso mancano i file systemd è possibile utilizzare le seguenti configurazioni. Devi creare tre file di servizio Mastodon di sistema.
Per il servizio Mastodon web worker inserisci quanto segue:
nano /etc/systemd/system/mastodon-web.service
Inserisci il seguente codice:
[Unit] Description=mastodon-web After=network.target [Service] Type=simple User=mastodon WorkingDirectory=/home/mastodon/live Environment="RAILS_ENV=production" Environment="PORT=3000" ExecStart=/home/mastodon/.rbenv/shims/bundle exec puma -C config/puma.rb ExecReload=/bin/kill -SIGUSR1 $MAINPID TimeoutSec=15 Restart=always [Install] WantedBy=multi-user.target
Quindi salva ed esci.
Per il servizio di coda in background Mastodon:
nano /etc/systemd/system/mastodon-sidekiq.service
Incolla il seguente codice:
[Unit] Description=mastodon-sidekiq After=network.target [Service] Type=simple User=mastodon WorkingDirectory=/home/mastodon/live Environment="RAILS_ENV=production" Environment="DB_POOL=25" Environment="MALLOC_ARENA_MAX=2" ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 25 TimeoutSec=15 Restart=always [Install] WantedBy=multi-user.target
Quindi salva ed esci dal file.
Per il servizio di streaming API Mastodon:
nano /etc/systemd/system/mastodon-streaming.service
Inserisci il seguente codice:
[Unit] Description=mastodon-streaming After=network.target [Service] Type=simple User=mastodon WorkingDirectory=/home/mastodon/live Environment="NODE_ENV=production" Environment="PORT=4000" Environment="STREAMING_CLUSTER_NUM=1" ExecStart=/usr/bin/node ./streaming TimeoutSec=15 Restart=always [Install] WantedBy=multi-user.target
Salva ed esci.
Dovrai ricaricare l'elenco dei demoni systemctl affinché le modifiche abbiano effetto:
systemctl daemon-reload
Ora dovresti essere in grado di avviare e abilitare i servizi di sistema Mastodon come abbiamo fatto in precedenza.
Congratulazioni! Hai installato con successo Mastodon sul tuo server. Puoi accedervi andando su https://tuo_dominio.com/.
In questo articolo, ti abbiamo mostrato come installare Mastodon su Ubuntu 18.04. Ora puoi utilizzare questa conoscenza e creare il tuo social network privato con questa meravigliosa applicazione.
Naturalmente, se sei uno dei nostri clienti di Managed Ubuntu Hosting, non devi installare Mastodon sul tuo VPS Ubuntu 18.04:chiedi semplicemente ai nostri amministratori, siediti e rilassati. I nostri amministratori installeranno immediatamente Mastodon su Ubuntu 18.04 per te.
PS. Se ti è piaciuto questo post su come installare Mastodon su un Ubuntu 18.04 VPS, condividilo con i tuoi amici sui social network utilizzando i pulsanti qui sotto, o semplicemente lascia un commento nella sezione commenti. Grazie.