Installera Mastodon på CentOS 7

Mastodon är en öppen källkodsserver för mikrobloggtjänst och sociala nätverk. Det ger Twitter liknande funktioner; men snarare än att kontrolleras av ett enda företag, är det en federation av decentraliserade servrar som ansluter tillsammans för att skapa ett helt system av sociala nätverk. Ett litet team kan starta sin Mastodon-serverinstans för att kommunicera sinsemellan såväl som med andra användare av den federerade gemenskapen. Det gör det också möjligt för dig att välja din egen integritets- och modereringspolicy och definiera hur du kommunicerar med andra användare av olika servrar. Innehållet som en enskild användare skapar och prenumererar på finns på servern där hans/hennes konto skapas. Användare kan följa varandra även om de inte finns på samma server. Varje användare i Mastodon-nätverket har sitt unika namn eller ID som finns i@username@domain-name.comformatera. Klientapplikationer för Mastodon finns tillgängliga för nästan alla plattformar.

Förutsättningar

Obs: Vi kommer att använda social.example.comsom domännamn som används för Mastodon-instansen. Ersätt alla förekomster av social.example.commed ditt faktiska domännamn som du vill använda för din Mastodon-applikation .

Uppdatera ditt bassystem med hjälp av guiden Hur man uppdaterar CentOS 7 , om det behövs. När ditt system har uppdaterats fortsätter du med att installera de nödvändiga beroenden.

Installera beroenden

Mastodon kräver flera beroenden för att fungera. Installera den senaste versionen av Node.js, som kommer att användas för att kompilera JavaScript-filerna.

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

Installera Yarn, som är en snabb, pålitlig och säker applikation för beroendehanterare. Vi kommer att använda Yarn för att installera Node.js-beroenden.

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

Installera Redis. Redis är en applikation för lagrad datastruktur i minnet och cache.

sudo yum -y install redis

Starta Redis och låt den starta vid uppstart automatiskt.

sudo systemctl start redis
sudo systemctl enable redis

Installera ytterligare några beroenden som krävs för att bygga Rubyinstallationen och andra beroenden.

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

Du måste också installera utvecklingsverktygen.

sudo yum -y groupinstall 'Development Tools'

Installera och konfigurera PostgreSQL

PostgreSQL är ett relationsdatabassystem för objekt. Du måste lägga till PostgreSQL-förvaret till ditt system eftersom standardförvaret yuminnehåller en äldre version av programmet.

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

Installera PostgreSQL-databasservern.

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

Initiera databasen.

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

Redigera pg_hba.conffilen för att aktivera MD5baserad autentisering.

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

Hitta följande rader och ändra peertill trustoch identtill 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

När den väl har uppdaterats bör konfigurationen se ut så här.

# 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

Starta PostgreSQL-servern och låt den starta vid uppstart automatiskt.

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

Ändra lösenordet för standardpostgreSQL-användaren.

sudo passwd postgres

Logga in på skalet som PostgreSQLanvändare.

sudo su - postgres

Skapa en ny PostgreSQLanvändare för Mastodon.

createuser mastodon

PostgreSQL tillhandahåller psqlskalet för att köra frågor på databasen. Byt till PostgreSQL-skalet genom att köra.

psql

Ange ett lösenord för den nyskapade användaren för Mastodon-databasen och ge tillstånd att lägga till nya databaser.

ALTER USER mastodon WITH ENCRYPTED password 'DBPassword' CREATEDB;

Ersätt DBPasswordmed ett starkt lösenord. Utgång från psqlskalet:

\q

Växla till sudoanvändaren.

exit

Installera ytterligare några nödvändiga PostgreSQL-beroenden.

sudo yum -y install libpqxx-devel protobuf-devel

Installera Ruby

Skapa en ny användare för Mastodon och byt till den nyskapade användaren.

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

Vi kommer att installera den senaste versionen av Ruby med Ruby Version Manager, eller RVM. Den används för att installera och hantera flera versioner av Ruby.

Lägg till GPGnyckeln för RVM till din server.

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

Installera RVM.

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

Hämta nu listan över tillgängliga versioner av Ruby.

rvm list known

Du kommer att se följande utdata.

[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

...

Installera nu den senaste versionen av Ruby från listan.

rvm install 2.4

Använd den installerade versionen av Ruby.

rvm use 2.4

Du bör kunna verifiera dess version.

ruby -v

Du bör se en liknande utgång.

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

Installera bundler, som är beroendehanteraren för Ruby-applikationen.

gem install bundler

Byt nu till hemmakatalogen för Mastodon-användaren och klona applikationsförvarsfilerna från Github.

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

Flytta applikationskatalogen och kolla in de senaste versionerna av applikationen.

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

Konfigurera för bundleatt använda en anpassad sökväg för PostgreSQL-konfigurationen. Installera också Ruby-beroendena.

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

Installera Node.js-beroendena med Yarn.

yarn install --pure-lockfile

Du måste skapa en konfigurationsfil för Mastodon-applikationen. Kopiera exempel på konfigurationsfilen.

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

Innan du redigerar filen, generera tre olika secretsgenom att köra följande kommando tre gånger. Du måste ställa in dessa hemligheter i konfigurationsfilen.

RAILS_ENV=production bundle exec rake secret

Du bör få en liknande utgång.

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

Redigera konfigurationsfilen med hjälp av nanoeditorn.

nano .env.production

Hitta följande rader och ändra värdena därefter.

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

Provide the database credentials, according to database user you have created during installation of PostgreSQL. Provide any name for database name as Mastodon will automatically create the database with the name you provide.

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

Set the domain name of the application.

LOCAL_DOMAIN=social.example.com

Find the following lines and set its value to the secrets you have generated.

PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

Save the file and exit from the editor.

Now, run the following command to generate Web Push VAPID keys. You will get an error while generating the Web Push VAPID keys if you have not set the secrets in the configuration file mentioned above.

RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key

You should see the following output.

[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=

Open the configuration file again and set the generated keys in their respective lines.

VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=

Finally, provide the information of your SMTP mail server so that the application can send emails to users. It is important that you use a working SMTP server as, upon new registration, users will be sent an email with an activation link. New users will have to click on the activation link to activate their account.

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

Once done, save the file and exit from the editor. You have done the basic configuration of Mastodon instance.

Setup the PostgreSQL database for the first time.

RAILS_ENV=production bundle exec rails db:setup

First, the above command will create a new database with the name mentioned in the configuration. Then, it will write the database according to the configuration.

Precompile all CSS and JavaScript files to create the cache.

RAILS_ENV=production bundle exec rails assets:precompile

Mastodon is now installed on your server. Now you will need to setup an Nginx web server to serve the application and setup Systemd services to run the Mastodon services.

From now on, we will need to execute the commands using the sudo user.

Install Nginx with Let's Encrypt SSL

We will use the Nginx web server as a reverse proxy to serve the application to the users. We will also obtain and install SSL certificates from Let's Encrypt.

Install Nginx and Certbot. Certbot is the official certificates issuing client for Let's Encrypt CA.

sudo yum -y install nginx certbot

Adjust your firewall setting to allow the standard HTTP and HTTPS ports through the firewall as Certbot needs to make an HTTP connection for verifying the domain authority.

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

Note: To obtain certificates from Let's Encrypt CA, you must ensure that the domain for which you wish to generate the certificates is pointed towards the server. If not, then make the necessary changes to the DNS records of your domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.

Now use the builtin web server in Certbot to generate the certificates for your domain.

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

The generated certificates are likely to be stored in the /etc/letsencrypt/live/social.example.com/ directory. The SSL certificate will be retained as fullchain.pem and the private key will be saved as privkey.pem.

Låt oss kryptera certifikat går ut om 90 dagar, så det rekommenderas att ställa in automatisk förnyelse för certifikaten med Cron-jobb. Cron är en systemtjänst som används för att köra periodiska uppgifter.

Öppna cron-jobbfilen.

sudo crontab -e

Lägg till följande rad.

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

Ovanstående cron-jobb kommer att köras dagligen vid midnatt. Om certifikatet löper ut kommer det automatiskt att förnya certifikaten.

Skapa nu ett nytt Nginx-serverblock för Mastodon-webbplatsen.

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

Fyll filen med detta.

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

Se till att ändra domännamnet och sökvägen till SSL-certifikaten.

Nu kan du starta Nginx-webbservern och aktivera den att starta automatiskt vid uppstart.

sudo systemctl start nginx
sudo systemctl enable nginx

Du kommer också att behöva tillåta port 4000genom brandväggen eftersom porten kommer att tillhandahålla streaming-API-tjänsten.

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

Ange körrättigheter för Mastodon-katalogen.

sudo chmod +x /opt/mastodon

Konfigurera Systemd Service

Du måste starta tre olika processer för att starta Mastodon-servern framgångsrikt. Användning av Systemd-tjänsten säkerställer att Mastodon-servern automatiskt startas vid uppstart och bearbetar fel.

Skapa en ny systemd tjänst för att köra Mastodons webbtjänst. Denna tjänst kommer att starta den inbyggda webbservern på port 3000.

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

Fyll filen med följande innehåll.

[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

Skapa den andra Systemd-tjänsten för att köra Mastodon-bakgrundskötjänsten. Mastodons kötjänst tar hand om alla bakgrundsuppgifter.

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

Fyll filen med följande innehåll.

[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

Slutligen, skapa den sista tjänstefilen för Mastodon streaming API-tjänst.

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

Fyll filen med följande innehåll.

[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

Aktivera Mastodon-tjänsterna att starta automatiskt vid uppstart.

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

För att starta Mastodon-tjänsterna kan du köra detta.

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

För att kontrollera status för tjänsterna kan du köra detta.

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

Slutsats

Du kan nu komma åt Mastodon-applikationen genom att gå till https://social.example.com. Skapa ett nytt användarkonto på din server och verifiera användarkontot genom att öppna länken som skickades i e-postmeddelandet. För att ge administratörsbehörighet till kontot du just skapade, kör detta.

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

Ersätt <user_name>med det faktiska användarnamnet du har använt för att skapa kontot i Mastodon-gränssnittet.

Din Mastodon-instans är nu installerad och konfigurerad att köras. Börja med att bjuda in dina vänner att gå med i din instans och utforska funktionerna som tillhandahålls av Mastodon. Du kan använda din sociala nätverkssida i mobilen genom att ladda ner någon av de applikationer som finns tillgängliga för olika plattformar.

Lämna en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer