Mastodon installeren op CentOS 7

Mastodon is een open source zelf gehoste microblogging- en sociale netwerkserver. Het biedt Twitter-achtige functies; maar in plaats van gecontroleerd te worden door één enkel bedrijf, is het een federatie van gedecentraliseerde servers die met elkaar verbonden zijn om een ​​heel systeem van sociale netwerken te vormen. Een klein team kan hun Mastodon-serverinstantie starten om onderling en met de andere gebruikers van de federatieve gemeenschap te communiceren. Het stelt u ook in staat om uw eigen privacy- en moderatiebeleid te kiezen en te definiëren hoe u communiceert met andere gebruikers van verschillende servers. De inhoud die een individuele gebruiker maakt en waarop hij zich abonneert, wordt gehost op de server waarop zijn / haar account is gemaakt. Gebruikers kunnen elkaar volgen, zelfs als ze niet op dezelfde server worden gehost. Elke gebruiker in het Mastodon-netwerk heeft zijn / haar unieke naam of ID die in de@[email protected]formaat. Clientapplicaties voor Mastodon zijn beschikbaar voor bijna alle platforms.

Vereisten

Opmerking: we gebruiken social.example.comde domeinnaam die wordt gebruikt voor de Mastodon-instantie. Vervang alle exemplaren van social.example.comdoor uw daadwerkelijke domeinnaam die u wilt gebruiken voor uw Mastodon-toepassing .

Update uw basissysteem met behulp van de handleiding CentOS 7 bijwerken , indien nodig. Zodra uw systeem is bijgewerkt, gaat u verder met het installeren van de vereiste afhankelijkheden.

Afhankelijkheden installeren

Mastodon vereist verschillende afhankelijkheden om te werken. Installeer de nieuwste versie van Node.js, die zal worden gebruikt om de JavaScript-bestanden te compileren.

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

Installeer Yarn, wat een snelle, betrouwbare en veilige applicatie voor afhankelijkheidsbeheer is. We zullen Yarn gebruiken om de afhankelijkheden van Node.js te installeren.

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

Installeer Redis. Redis is een opslag- en cachetoepassing in het geheugen.

sudo yum -y install redis

Start Redis en schakel het automatisch in bij het opstarten.

sudo systemctl start redis
sudo systemctl enable redis

Installeer nog een paar afhankelijkheden die nodig zijn om de Rubyinstallatie en andere afhankelijkheden te bouwen .

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

U moet ook de ontwikkeltools installeren.

sudo yum -y groupinstall 'Development Tools'

PostgreSQL installeren en configureren

PostgreSQL is een relationeel databasesysteem voor objecten. U moet de PostgreSQL-repository aan uw systeem toevoegen, aangezien de standaardrepository yumeen oudere versie van de applicatie bevat.

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

Installeer de PostgreSQL-databaseserver.

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

Initialiseer de database.

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

Bewerk het pg_hba.confbestand om op MD5basis van authenticatie in te schakelen .

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

Zoek de volgende regels en verander peernaar trusten identnaar 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

Eenmaal bijgewerkt, zou de configuratie er als volgt uit moeten zien.

# 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

Start de PostgreSQL-server en schakel deze automatisch in bij het opstarten.

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

Wijzig het wachtwoord voor de standaard PostgreSQL-gebruiker.

sudo passwd postgres

Log in op de shell als PostgreSQLgebruiker.

sudo su - postgres

Maak een nieuwe PostgreSQLgebruiker voor Mastodon.

createuser mastodon

PostgreSQL biedt de psqlshell om query's op de database uit te voeren. Schakel over naar de PostgreSQL-shell door te draaien.

psql

Stel een wachtwoord in voor de nieuw aangemaakte gebruiker voor de Mastodon-database en geef toestemming om nieuwe databases toe te voegen.

ALTER USER mastodon WITH ENCRYPTED password 'DBPassword' CREATEDB;

Vervang DBPassworddoor een sterk wachtwoord. Verlaat de psqlshell:

\q

Schakel over naar de sudogebruiker.

exit

Installeer nog een paar vereiste PostgreSQL-afhankelijkheden.

sudo yum -y install libpqxx-devel protobuf-devel

Installeer Ruby

Maak een nieuwe gebruiker voor Mastodon en schakel over naar de zojuist aangemaakte gebruiker.

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

We zullen de nieuwste versie van Ruby installeren met Ruby Version Manager of RVM. Het wordt gebruikt om meerdere versies van Ruby te installeren en te beheren.

Voeg de GPGsleutel van RVM toe aan uw server.

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

Installeer RVM.

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

Haal nu de lijst op met de beschikbare versies van Ruby.

rvm list known

Je ziet de volgende output.

[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

...

Installeer nu de nieuwste versie van Ruby uit de lijst.

rvm install 2.4

Gebruik de geïnstalleerde versie van Ruby.

rvm use 2.4

Je zou de versie moeten kunnen verifiëren.

ruby -v

Je zou een vergelijkbare output moeten zien.

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

Installeer bundler, wat de afhankelijkheidsmanager is voor de Ruby-applicatie.

gem install bundler

Schakel nu over naar de homedirectory van de Mastodon-gebruiker en kloon de toepassingsrepository-bestanden van Github.

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

Verplaats de toepassingsmap en bekijk de nieuwste releases van de toepassing.

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

Configureer de bundleom een ​​aangepast pad te gebruiken voor de PostgreSQL-configuratie. Installeer ook de Ruby-afhankelijkheden.

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

Installeer de afhankelijkheden van Node.js met Yarn.

yarn install --pure-lockfile

U moet een configuratiebestand maken voor de Mastodon-applicatie. Kopieer het voorbeeldconfiguratiebestand.

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

Voordat u het bestand bewerkt, genereert u er drie verschillende secretsdoor driemaal de volgende opdracht uit te voeren. U moet deze geheimen in het configuratiebestand instellen.

RAILS_ENV=production bundle exec rake secret

Je zou een vergelijkbare output moeten krijgen.

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

Bewerk het configuratiebestand met de nanoeditor.

nano .env.production

Zoek de volgende regels en wijzig de waarden dienovereenkomstig.

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

Geef de databasereferenties op, volgens de databasegebruiker die u tijdens de installatie van PostgreSQL hebt gemaakt. Geef een naam op voor de databasenaam, aangezien Mastodon automatisch de database maakt met de naam die u opgeeft.

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

Stel de domeinnaam van de applicatie in.

LOCAL_DOMAIN=social.example.com

Zoek de volgende regels en stel de waarde ervan in op de geheimen die je hebt gegenereerd.

PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

Sla het bestand op en verlaat de editor.

Voer nu de volgende opdracht uit om Web Push VAPIDsleutels te genereren . U krijgt een foutmelding bij het genereren van de Web Push VAPID-sleutels als u de geheimen in het hierboven genoemde configuratiebestand niet hebt ingesteld.

RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key

Je zou de volgende output moeten zien.

[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 het configuratiebestand opnieuw en stel de gegenereerde sleutels in hun respectievelijke regels in.

VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=

Geef ten slotte de informatie van uw SMTP-mailserver op, zodat de applicatie e-mails naar gebruikers kan sturen. Het is belangrijk dat u een werkende SMTP-server gebruikt, omdat gebruikers bij nieuwe registratie een e-mail ontvangen met een activeringslink. Nieuwe gebruikers zullen op de activatielink moeten klikken om hun account te activeren.

SMTP_SERVER=mail.example.com
SMTP_PORT=456
[email protected]
SMTP_PASSWORD=MailPassword
[email protected]
SMTP_TLS=true

Als je klaar bent, sla je het bestand op en verlaat je de editor. U hebt de basisconfiguratie van Mastodon-instantie gedaan.

Stel de PostgreSQL-database voor de eerste keer in.

RAILS_ENV=production bundle exec rails db:setup

Eerst zal de bovenstaande opdracht een nieuwe database maken met de naam die in de configuratie wordt genoemd. Vervolgens wordt de database geschreven volgens de configuratie.

Compileer alle bestanden CSSen alle JavaScriptbestanden om de cache te maken.

RAILS_ENV=production bundle exec rails assets:precompile

Mastodon is nu geïnstalleerd op uw server. Nu moet u een Nginxwebserver instellen om de applicatie te bedienen en Systemdservices instellen om de Mastodon-services uit te voeren.

Vanaf nu moeten we de opdrachten uitvoeren met de sudogebruiker.

Installeer Nginx met Let's Encrypt SSL

We zullen de Nginx-webserver gebruiken als een reverse proxy om de applicatie aan de gebruikers te bedienen. We zullen ook SSL-certificaten verkrijgen en installeren via Let's Encrypt.

Installeer Nginx en Certbot. Certbot is de officiële certificeringsinstantie voor Let's Encrypt CA.

sudo yum -y install nginx certbot

Pas uw firewall-instelling aan om de standaard HTTPen HTTPSpoorten door de firewall heen te laten, aangezien Certbot een HTTP-verbinding moet maken om de domeinautoriteit te verifiëren.

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

Opmerking: om certificaten van Let's Encrypt CA te verkrijgen, moet u ervoor zorgen dat het domein waarvoor u de certificaten wilt genereren, naar de server is gericht. Zo niet, breng dan de nodige wijzigingen aan in de DNS-records van uw domein en wacht tot de DNS zich verspreidt voordat u het certificaatverzoek opnieuw indient. Certbot controleert de domeinautoriteit voordat de certificaten worden verstrekt .

Gebruik nu de ingebouwde webserver in Certbot om de certificaten voor uw domein te genereren.

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

De gegenereerde certificaten worden waarschijnlijk in de /etc/letsencrypt/live/social.example.com/directory opgeslagen . Het SSL-certificaat blijft behouden fullchain.pemen de privésleutel wordt opgeslagen als privkey.pem.

Let's Encrypt-certificaten verlopen over 90 dagen, dus het wordt aanbevolen om automatische verlenging in te stellen voor de certificaten met Cron-taken. Cron is een systeemservice die wordt gebruikt om periodieke taken uit te voeren.

Open het cron-taakbestand.

sudo crontab -e

Voeg de volgende regel toe.

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

De bovenstaande cron-taak wordt dagelijks om middernacht uitgevoerd. Als het certificaat afloopt, worden de certificaten automatisch verlengd.

Maak nu een nieuw Nginx-serverblok voor de Mastodon-site.

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

Vul hiermee het bestand in.

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

Zorg ervoor dat u de domeinnaam en het pad naar de SSL-certificaten wijzigt.

Nu kunt u de Nginx-webserver starten en deze automatisch laten opstarten.

sudo systemctl start nginx
sudo systemctl enable nginx

U moet ook poort 4000via de firewall toestaan, aangezien de poort de streaming API-service levert.

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

Geef de uitvoeringsrechten voor de Mastodon-directory.

sudo chmod +x /opt/mastodon

Systemd-service instellen

U moet drie verschillende processen starten om de Mastodon-server met succes te starten. Het gebruik van de Systemd-service zorgt ervoor dat de Mastodon-server automatisch wordt gestart bij het opstarten en storingen verwerkt.

Maak een nieuwe systemd-service om de Mastodon-webservice uit te voeren. Deze service start de ingebouwde webserver op poort 3000.

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

Vul het bestand met de volgende inhoud.

[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

Maak de tweede Systemd-service om de Mastodon-achtergrondwachtrijservice uit te voeren. De Mastodon-wachtrijservice zorgt voor alle achtergrondtaken.

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

Vul het bestand met de volgende inhoud.

[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

Maak ten slotte het laatste servicebestand voor de Mastodon streaming API-service.

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

Vul het bestand met de volgende inhoud.

[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

Schakel de Mastodon-services in om automatisch bij het opstarten te starten.

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

Om de Mastodon-services te starten, kunt u dit uitvoeren.

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

Om de status van de services te controleren, kunt u dit uitvoeren.

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

Gevolgtrekking

U kunt nu toegang krijgen tot de Mastodon-applicatie door naar te gaan https://social.example.com. Maak een nieuw gebruikersaccount aan op uw server en verifieer het gebruikersaccount door de link in de e-mail te openen. Voer dit uit om beheerdersrechten te verlenen aan het account dat u zojuist hebt gemaakt.

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

Vervang <user_name>door de daadwerkelijke gebruikersnaam die u hebt gebruikt om het account in de Mastodon-interface te maken.

Uw Mastodon-exemplaar is nu geïnstalleerd en geconfigureerd om te worden uitgevoerd. Nodig eerst uw vrienden uit om deel te nemen aan uw instantie en verken de functies van Mastodon. U kunt uw sociale netwerksite mobiel gebruiken door een van de beschikbare applicaties voor verschillende platforms te downloaden .



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.