Instalarea Mastodon pe CentOS 7

Mastodon este un server de microblogging și rețele de socializare self-gazdat. Oferă funcții ca Twitter; dar în loc să fie controlat de o singură companie, este o federație de servere descentralizate care se conectează pentru a realiza un întreg sistem de rețele sociale. O echipă mică poate porni instanța serverului Mastodon pentru a comunica între ei, precum și cu ceilalți utilizatori ai comunității federate. De asemenea, vă permite să alegeți propriile politici de confidențialitate și moderare și să definiți modul în care comunicați cu alți utilizatori ai diferitelor servere. Conținutul la care un utilizator individual creează și se abonează este găzduit pe serverul în care este creat contul său. Utilizatorii se pot urmări reciproc, chiar dacă nu sunt găzduiți pe același server. Fiecare utilizator din rețeaua Mastodon are un nume sau un ID unic, care se află în@username@domain-name.comformat. Aplicațiile client pentru Mastodon sunt disponibile pentru aproape toate platformele.

Cerințe preliminare

Notă: Vom folosi social.example.comnumele de domeniu folosit pentru instanța Mastodon. Înlocuiți toate aparițiile social.example.comcu numele de domeniu real pe care doriți să îl utilizați pentru aplicația Mastodon .

Actualizați sistemul de bază utilizând ghidul Cum să actualizați CentOS 7 , dacă este necesar. După ce sistemul dvs. a fost actualizat, continuați să instalați dependențele necesare.

Instalarea dependențelor

Mastodon necesită mai multe dependențe pentru a funcționa. Instalați cea mai recentă versiune Node.js, care va fi folosită pentru a compila fișierele JavaScript.

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs

Instalați Yarn, care este o aplicație de manager de dependență rapidă, fiabilă și sigură. Vom folosi Yarn pentru a instala dependențele Node.js.

sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn

Instalați Redis. Redis este o aplicație de memorie și aplicație de memorie cache în memorie.

sudo yum -y install redis

Porniți Redis și permiteți-l să pornească automat la pornire.

sudo systemctl start redis
sudo systemctl enable redis

Instalați alte câteva dependențe care sunt necesare pentru a construi Rubyinstalarea și alte dependențe.

sudo yum -y install ImageMagick git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel

De asemenea, va trebui să instalați instrumentele de dezvoltare.

sudo yum -y groupinstall 'Development Tools'

Instalarea și configurarea PostgreSQL

PostgreSQL este un sistem de baze de date relațional obiect. Va trebui să adăugați depozitul PostgreSQL la sistemul dvs., deoarece yumdepozitul implicit conține o versiune mai veche a aplicației.

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Instalați serverul de baze de date PostgreSQL.

sudo yum -y install postgresql96-server postgresql96-contrib postgresql96-devel

Inițializează baza de date.

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

Editați pg_hba.conffișierul pentru a activa MD5autentificarea bazată.

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

Găsiți următoarele linii și treceți peerla trustși identla md5.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Odată actualizată, configurația ar trebui să arate astfel.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Porniți serverul PostgreSQL și permiteți-l să pornească automat la pornire.

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

Modificați parola pentru utilizatorul implicit PostgreSQL.

sudo passwd postgres

Conectați-vă la shell ca PostgreSQLutilizator.

sudo su - postgres

Creați un PostgreSQLutilizator nou pentru Mastodon.

createuser mastodon

PostgreSQL oferă psqlshell - ul pentru a rula interogări pe baza de date. Comutați la shell-ul PostgreSQL rulând.

psql

Setați o parolă pentru utilizatorul nou creat pentru baza de date Mastodon și acordați permisiunea de a adăuga noi baze de date.

ALTER USER mastodon WITH ENCRYPTED password 'DBPassword' CREATEDB;

Înlocuiți DBPasswordcu o parolă puternică. Ieșiți din psqlcoajă:

\q

Comutați la sudoutilizator.

exit

Instalați alte câteva dependențe PostgreSQL necesare.

sudo yum -y install libpqxx-devel protobuf-devel

Instalați Ruby

Creați un utilizator nou pentru Mastodon și treceți la un utilizator nou creat.

sudo adduser mastodon -d /opt/mastodon
sudo su - mastodon

Vom instala cea mai recentă versiune de Ruby folosind Ruby Version Manager sau RVM. Este folosit pentru instalarea și gestionarea mai multor versiuni de Ruby.

Adăugați GPGcheia RVM pe serverul dvs.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Instalați RVM.

curl -sSL https://get.rvm.io | bash -s stable
source /opt/mastodon/.rvm/scripts/rvm

Obțineți acum lista versiunilor disponibile pentru Ruby.

rvm list known

Veți vedea următoarea ieșire.

[mastodon@vultr ~]$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head

...

Acum instalați cea mai recentă versiune a Ruby.

rvm install 2.4

Folosiți versiunea instalată de Ruby.

rvm use 2.4

Ar trebui să poți verifica versiunea sa.

ruby -v

Ar trebui să vedeți o ieșire similară.

[mastodon@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

Instalați bundler, care este managerul de dependență pentru aplicația Ruby.

gem install bundler

Acum treceți la directorul principal al utilizatorului Mastodon și clonați fișierele de depozitare a aplicațiilor de la Github.

cd ~
git clone https://github.com/tootsuite/mastodon.git app

Mutați directorul aplicației și verificați cele mai recente versiuni ale aplicației.

cd ~/app
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)

Configurați bundlepentru a utiliza o cale personalizată pentru configurația PostgreSQL. De asemenea, instalați dependențele Ruby.

bundle config build.pg --with-pg-config=/usr/pgsql-9.6/bin/pg_config
bundle install --deployment --without development test

Instalați dependențele Node.js folosind Yarn.

yarn install --pure-lockfile

Va trebui să creați un fișier de configurare pentru aplicația Mastodon. Copiați fișierul de configurare a mostrei.

cd ~/app
cp .env.production.sample .env.production

Înainte de a edita fișierul, generați trei diferite secretsrulând următoarea comandă de trei ori. Va trebui să setați aceste secrete în fișierul de configurare.

RAILS_ENV=production bundle exec rake secret

Ar trebui să obțineți o ieșire similară.

[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake secret
0f17dab1cf4a07f6fac671ecd5815adcb59d012b338dae9350c66402250c6c729dccd6182b1a8f75c4fde55453ce283ea66e07ed4466cdc6d4d6974c98512967

Editați fișierul de configurare folosind nanoeditorul.

nano .env.production

Găsiți următoarele linii și modificați valorile în consecință.

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

Furnizați datele de acreditare ale bazei de date, în funcție de utilizatorul bazei de date pe care l-ați creat în timpul instalării PostgreSQL. Furnizați orice nume pentru numele bazei de date, întrucât Mastodon va crea automat baza de date cu numele pe care îl furnizați.

DB_HOST=127.0.0.1
DB_USER=mastodon
DB_NAME=mastodon
DB_PASS=DBPassword
DB_PORT=5432

Setați numele de domeniu al aplicației.

LOCAL_DOMAIN=social.example.com

Găsiți următoarele linii și setați valoarea acesteia la secretele pe care le-ați generat.

PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

Salvați fișierul și ieșiți din editor.

Acum, executați următoarea comandă pentru a genera Web Push VAPIDchei. Veți primi o eroare la generarea tastelor VAPID Web Push dacă nu ați setat secretele în fișierul de configurație menționat mai sus.

RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key

Ar trebui să vedeți următoarea ieșire.

[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key
VAPID_PRIVATE_KEY=DCMQdSPkdm-mepsNh4F3suc-UIvsABCvwFd03jSVemM=
VAPID_PUBLIC_KEY=BMMVcVXmqnV0C8S_ybZ7eQH-MXBEX2exqfdPSYQiMMUF2rRxfhoEtVF931i26ebMgmslHB_nvVadOdcBPhaFEjw=

Deschideți din nou fișierul de configurare și setați tastele generate în liniile respective.

VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=

În cele din urmă, furnizați informațiile serverului dvs. de poștă SMTP, astfel încât aplicația să poată trimite e-mailuri către utilizatori. Este important să utilizați un server SMTP funcțional deoarece, la înregistrarea nouă, utilizatorii vor primi un e-mail cu un link de activare. Utilizatorii noi vor trebui să facă clic pe linkul de activare pentru a-și activa contul.

SMTP_SERVER=mail.example.com
SMTP_PORT=456
SMTP_LOGIN=mail@example.com
SMTP_PASSWORD=MailPassword
SMTP_FROM_ADDRESS=notifications@example.com
SMTP_TLS=true

Odată terminat, salvați fișierul și ieșiți din editor. Ați făcut configurația de bază a instanței Mastodon.

Configurați baza de date PostgreSQL pentru prima dată.

RAILS_ENV=production bundle exec rails db:setup

În primul rând, comanda de mai sus va crea o nouă bază de date cu numele menționat în configurație. Apoi, va scrie baza de date conform configurației.

Precompila cu toate CSSși JavaScriptfișiere pentru a crea cache.

RAILS_ENV=production bundle exec rails assets:precompile

Mastodon este acum instalat pe serverul dvs. Acum, va trebui să configurați un Nginxserver web pentru a servi aplicația și Systemdserviciile de configurare pentru a rula serviciile Mastodon.

De acum, va trebui să executăm comenzile folosind sudoutilizatorul.

Instalați Nginx cu ajutorul modelului Let's Encrypt SSL

Vom folosi serverul web Nginx ca proxy invers pentru a servi aplicația utilizatorilor. De asemenea, vom obține și vom instala certificate SSL de la Let's Encrypt.

Instalați Nginx și Certbot. Certbot este clientul oficial care eliberează certificate pentru Let's Encrypt CA.

sudo yum -y install nginx certbot

Ajustați setarea firewallului pentru a permite standardul HTTPși HTTPSporturile prin firewall, deoarece Certbot trebuie să creeze o conexiune HTTP pentru verificarea autorității domeniului.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Notă: Pentru a obține certificate de la Let's Encrypt CA, trebuie să vă asigurați că domeniul pentru care doriți să generați certificatele este îndreptat către server. Dacă nu, atunci faceți modificările necesare la înregistrările DNS ale domeniului dvs. și așteptați propagarea DNS înainte de a face din nou cererea de certificat. Certbot verifică autoritatea domeniului înainte de furnizarea certificatelor .

Acum utilizați serverul web încorporat din Certbot pentru a genera certificatele pentru domeniul dvs.

sudo certbot certonly --standalone -d social.example.com

Este posibil ca certificatele generate să fie stocate în /etc/letsencrypt/live/social.example.com/director. Certificatul SSL vor fi păstrate fullchain.pemși cheia privată vor fi salvate privkey.pem.

Să cripțăm certificatele expiră în 90 de zile, de aceea este recomandat să configurați reînnoirea automată a certificatelor folosind joburi Cron. Cron este un serviciu de sistem care este utilizat pentru a executa sarcini periodice.

Deschideți fișierul de job cron.

sudo crontab -e

Adăugați următoarea linie.

0 0 * * * /usr/bin/certbot renew --quiet

Slujba cron de mai sus va rula zilnic la miezul nopții. Dacă certificatul este scadent, acesta va reînnoi automat certificatele.

Acum creați un nou bloc de server Nginx pentru site-ul Mastodon.

sudo nano /etc/nginx/conf.d/mastodon.conf

Populați fișierul cu aceasta.

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen 80;
  listen [::]:80;
  server_name social.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name social.example.com;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

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

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 0;

  root /opt/mastodon/app/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";
    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 off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    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;
}

Asigurați-vă că schimbați numele de domeniu și calea către certificatele SSL.

Acum puteți porni serverul web Nginx și puteți să îl porniți automat la pornire.

sudo systemctl start nginx
sudo systemctl enable nginx

De asemenea, vi se va cere să permiteți portul 4000prin firewall, deoarece portul va furniza serviciul de streaming API.

sudo firewall-cmd --permanent --zone=public --add-port=4000/tcp
sudo firewall-cmd --reload

Furnizați permisiunile de execuție pentru directorul Mastodon.

sudo chmod +x /opt/mastodon

Configurarea serviciului Systemd

Va trebui să începeți trei procese diferite pentru a porni serverul Mastodon cu succes. Utilizarea serviciului Systemd vă va asigura că serverul Mastodon este pornit automat la pornirea și procesarea eșecurilor.

Creați un nou serviciu systemd pentru a rula serviciul web Mastodon. Acest serviciu va lansa serverul web încorporat pe port 3000.

sudo nano /etc/systemd/system/mastodon-web.service

Populați fișierul cu următorul conținut.

[Unit]
Description=Mastodon Web Service
After=network.target

[Service]
Type=simple
User=mastodon
Group=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="PORT=3000"
ExecStart=/bin/bash -lc 'bundle exec puma -C config/puma.rb'
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Creați al doilea serviciu Systemd pentru a rula serviciul de coadă de fundal Mastodon. Serviciul coadă Mastodon are grijă de toate sarcinile de fundal.

sudo nano /etc/systemd/system/mastodon-queue.service

Populați fișierul cu următorul conținut.

[Unit]
Description=Mastodon Queue Service
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="DB_POOL=5"
ExecStart=/bin/bash -lc 'bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push'
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

În cele din urmă, creați ultimul fișier de serviciu pentru serviciul de streaming Mastodon API.

sudo nano /etc/systemd/system/mastodon-api.service

Populați fișierul cu următorul conținut.

[Unit]
Description=Mastodon Streaming
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="NODE_ENV=production"
Environment="PORT=4000"
ExecStart=/bin/npm run start
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Activați serviciile Mastodon pentru a începe automat la momentul de pornire.

sudo systemctl enable mastodon-web mastodon-queue mastodon-api 

Pentru a porni serviciile Mastodon, puteți rula acest lucru.

sudo systemctl start mastodon-web mastodon-queue mastodon-api 

Pentru a verifica starea serviciilor, puteți rula acest lucru.

sudo systemctl status mastodon-web mastodon-queue mastodon-api 

Concluzie

Acum puteți accesa aplicația Mastodon accesând https://social.example.com. Creați un cont de utilizator nou pe serverul dvs. și verificați contul de utilizator prin deschiderea linkului trimis în e-mail. Pentru a oferi privilegii de administrator contului pe care tocmai l-ați creat, executați acest lucru.

sudo su - mastodon && cd ~/app
RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=<user_name>

Înlocuiți <user_name>cu numele de utilizator pe care l-ați folosit pentru a crea contul în interfața Mastodon.

Instanța dvs. Mastodon este acum instalată și configurată pentru a rula. Începeți prin a invita prietenii să se alăture instanței dvs. și să explorați funcțiile oferite de Mastodon. Puteți utiliza site-ul dvs. de rețea socială în mobil, descărcând oricare dintre aplicațiile disponibile pentru diverse platforme.

Lasă un comentariu

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe