GNU/Linux >> Linux Esercitazione >  >> Panels >> Panels

Come installare Mastodon su Ubuntu 18.04

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.


Panels
  1. Come installare Panda3D su Ubuntu 10.04

  2. Come installare Zabbix su Ubuntu

  3. Come installare Observium su Ubuntu 14.04

  4. Come installare Java su Ubuntu 16.04

  5. Come installare Odoo 10 su Ubuntu 16.04

Come installare R su Ubuntu 20.04

Come installare Vai su Ubuntu 18.04

Come installare R su Ubuntu 18.04

Come installare qt su Ubuntu 20.04

Come installare Go in Ubuntu 20.04

Come installare Vai su Ubuntu 22.04