GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat Mastodon Social Network s Dockerem na Ubuntu 18.04 LTS

Mastodon je bezplatná, decentralizovaná a open source sociální síť. Vznikl jako alternativa k Twitteru. Stejně jako na Twitteru se lidé mohou navzájem sledovat, posílat zprávy, obrázky a videa. Na rozdíl od Twitteru však pro obsah neexistuje žádné centrální úložiště ani autorita.

Místo toho Mastodon funguje na tisících různých serverů, z nichž každý provozuje různé členy komunity. Uživatelé přihlášení na jednom serveru se mohou snadno připojit k uživatelům v druhé síti a vzájemně se sledovat v rámci instancí.

Každý si může nainstalovat svou vlastní instanci serveru Mastodon. Tento tutoriál vás naučí, jak nastavit vaši instanci Mastodon na serveru s Ubuntu 18.04 pomocí Dockeru.

Předpoklady

  • Server založený na Ubuntu 18.04 s uživatelem sudo, který není root.

  • Ujistěte se, že je váš systém aktuální.

    $ sudo apt update
    $ sudo apt upgrade
    
  • Mastodon zasílá uživatelům e-mailová upozornění. Jednou z možností, jak to udělat, je nastavit si vlastní poštovní server. Můžete to udělat na stejném serveru jako budete instalovat mastodont nebo na jiném serveru. Udělat to je mimo rozsah této příručky.

    Doporučujeme vám používat transakční poštovní službu třetí strany, jako je Mailgun, Sendgrid, Amazon SES nebo Sparkpost. Pokyny v příručce budou používat Mailgun jako poskytovatele SMTP.

  • Ujistěte se, že máte název domény směřující na server. V tomto tutoriálu budeme jako doménu používat example.com.

Krok 1 – Instalace závislostí

Než nainstalujeme Mastodon, musíme se ujistit, že náš server má určitý software, který bude muset nainstalovat správně. Spuštěním následujících příkazů nainstalujte závislosti.

$ sudo apt update
$ sudo apt install ca-certificates curl ufw apt-transport-https software-properties-common git -y

Některý z výše uvedeného softwaru pro vás může být předinstalován.

Protože jsme nainstalovali Git, měli bychom jej před pokračováním nakonfigurovat.

$ git config --global user.name "Your Name" 
$ git config --global user.email "[email protected]"

Krok 2 – Konfigurace brány firewall

V předchozím kroku jsme nainstalovali ufw (Uncomplicated Firewall) . Než budeme moci přistoupit k instalaci Mastodonu, musíme jej nakonfigurovat.

Povolte SSH a port, který jsme právě vytvořili, abyste nebyli zablokováni.

$ sudo ufw allow OpenSSH

Povolte ufw firewall.

$ sudo ufw enable

Aby Mastodon fungoval, musíme také povolit http a https.

$ sudo ufw allow http
$ sudo ufw allow https

Zkontrolujte stav brány firewall.

$ sudo ufw status

Měli byste vidět výstup podobný následujícímu.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             

Krok 3 – Instalace Dockeru

Přidejte do svého systému klíč GPG společnosti Docker.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Ověřte otisk staženého klíče.

$ sudo apt-key fingerprint 0EBFCD88

Měli byste vidět výstup podobný následujícímu.

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

Přidejte úložiště Docker.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Aktualizujte databázi balíčků.

$ sudo apt update

Nainstalujte Docker-CE. CE je komunitní vydání Dockeru.

$ sudo apt install docker-ce -y

Docker by měl být nyní nainstalován. Zkontrolujte, zda běží.

$ sudo systemctl status docker

Výstup by měl být podobný následujícímu.

? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-22 18:26:29 UTC; 25min ago
     Docs: https://docs.docker.com
 Main PID: 3574 (dockerd)
    Tasks: 8
   CGroup: /system.slice/docker.service
   ??3574 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Stiskněte q pro ukončení.

Přidejte svůj omezený uživatelský účet systému Linux do skupiny docker, abyste mohli spouštět docker bez sudo.

sudo usermod -aG docker $USER

$USER proměnná vybere a přidá aktuálně přihlášeného uživatele do skupiny dockerů. Nahraďte $USER se skutečným uživatelským jménem, ​​pokud s tímto uživatelem aktuálně nejste přihlášeni.

Přepněte na uživatele, kterého jsme právě přidali. I když jste již byli přihlášeni, budete se na něj muset znovu přepnout, abyste znovu načetli oprávnění.

$ su - ${USER}

Zkontrolujte, zda vše běží správně spuštěním vestavěného Hello World program.

$ docker run hello-world

Měli byste vidět následující výstup, který řekne, že Docker je nainstalován a funguje správně.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Krok 4 – Instalace Docker Compose

Tento krok je možné přeskočit a pokračovat, ale s nainstalovaným Docker Compose bude spouštění Mastodon mnohem jednodušší, zvláště pokud to chcete dělat na více než jednom serveru.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

V době psaní tohoto návodu je 1.24.1 aktuální stabilní vydání Docker Compose. Nejnovější verzi vydání můžete zkontrolovat na jejich stránce Github.

Použijte spustitelná oprávnění pro binární soubor pro vytvoření ukotvitelného panelu.

$ sudo chmod +x /usr/local/bin/docker-compose

Přidejte Dokončení příkazu do Docker Compose.

$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

Ověřte, zda byla vaše instalace úspěšná.

$ docker-compose --version

Vytiskne následující výstup.

docker-compose version 1.24.1, build 4667896b

Krok 5 – Instalace Mastodon

Naklonujte úložiště Mastodon na svůj server.

$ git clone https://github.com/tootsuite/mastodon

Přejděte do adresáře, do kterého jsme právě zkopírovali soubory.

$ cd mastodon

Mastodon je dodáván s ukázkovým konfiguračním souborem. Musíme to přejmenovat, aby Mastodon fungoval.

$ cp .env.production.sample .env.production

Potřebujeme vygenerovat tajné klíče pro náš konfigurační soubor. Ale předtím musíme vytvořit image Docker.

$ docker-compose build

Nyní, když je obraz úspěšně sestaven, musíte vytvořit několik klíčů, které jsou nutné ke konfiguraci Mastodon.

Vygenerovat SECRET_KEY_BASE první.

$ SECRET_KEY_BASE=$(docker-compose run --rm web bundle exec rake secret)

Vložte výše uvedený klíč do konfiguračního souboru.

$ sed -i -e "s/SECRET_KEY_BASE=/&${SECRET_KEY_BASE}/" .env.production

Vygenerujte a vložte OTP_SECRET do konfiguračního souboru.

$ OTP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/OTP_SECRET=/&${OTP_SECRET}/" .env.production

Vygenerujte a vložte PAPERCLIP_SECRET do konfiguračního souboru.

$ PAPERCLIP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/PAPERCLIP_SECRET=/&${PAPERCLIP_SECRET}/" .env.production

Vygenerujte hodnoty pro VAPID_PRIVATE_KEY a VAPID_PUBLIC_KEY .

$ docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key

Otevřete .env.production soubor.

$ sudo nano ./.env.production

Vyhledejte VAPID_PRIVATE_KEY a VAPID_PUBLIC_KEY v souboru a zkopírujte výstup z předchozího příkazu.

Najděte LOCAL_DOMAIN proměnnou a změňte její hodnotu z example.com na název domény, který jste vybrali pro instalaci Mastodon.

Zadejte hodnoty, které jste získali od svého poskytovatele SMTP.

SMTP_SERVER = smtp.mailgun.org
SMTP_PORT = 587
SMTP_LOGIN = username
SMTP_PASSWORD = password
SMTP_FROM_ADDRESS = [email protected]

Stiskněte Ctrl + X a po dokončení soubor uložte.

Chcete-li implementovat všechny výše provedené změny, musíte znovu vytvořit image Docker.

$ docker-compose build

Nastavte databázi.

$ docker-compose run --rm web rails db:migrate

Předkompilujte aktiva Mastodon.

$ docker-compose run --rm web rails assets:precompile

Spusťte následující příkaz pro spuštění kontejneru.

$ docker-compose up -d

Krok 6 – Instalace a konfigurace Nginx

Dalším krokem v našem průvodci je instalace serveru Nginx, aby web Mastodon fungoval.

Spuštěním následujícího příkazu nainstalujte server Nginx.

$ sudo apt install nginx -y

Nginx je dodáván s nakonfigurovaným výchozím webem. Odstraňte to.

$ sudo rm /etc/nginx/sites-available/default

Odstraňte také symbolický odkaz pro výchozí web.

$ sudo rm /etc/nginx/sites-enabled/default

Vytvořte konfigurační soubor Nginx pro Mastodon.

$ sudo touch /etc/nginx/sites-available/mastodon

Vytvořte symbolický odkaz pro konfiguraci Mastodon.

$ sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

Otevřete konfiguraci Mastodon v editoru Nano. (Můžete si vybrat libovolný editor)

$ sudo nano /etc/nginx/sites-available/mastodon

Zkopírujte a vložte do něj následující text.

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

server {
  listen 80;
  listen [::]:80;
  server_name example.com;
  root /home/user/mastodon/public;
  # Useful for Let's Encrypt
  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 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/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 80m;

  root /home/user/mastodon/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 /sw.js {
    add_header Cache-Control "public, max-age=0";
    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;
}

Výše uvedená konfigurace předpokládá, že jako poskytovatele SSL používáte Let's encrypt. Pokud používáte jinou službu SSL, musíte upravit umístění klíčů a přeskočit další část výukového programu.

Krok 7 – Instalace a konfigurace Let's Encrypt

Ujistěte se, že je Nginx zastaven.

$ sudo systemctl stop nginx

Přidejte úložiště Certbot.

$ sudo add-apt-repository ppa:certbot/certbot

Aktualizujte systémové balíčky.

$ sudo apt update

Nainstalujte nástroj Certbot.

$ sudo apt install certbot

Certifikát je potřeba vytvořit dvakrát – jednou metodou TLS SNI a podruhé metodou webroot.

sudo certbot certonly --standalone -d example.com

Nyní vytvořte certifikát pomocí metody webroot. To bude vyžadovat spuštění Nginx.

sudo systemctl start nginx
sudo certbot certonly --webroot -d example.com -w /home/user/mastodon/public/

Nástroj se vás zeptá, zda si chcete certifikát ponechat nebo jej obnovit. Vyberte možnost pro obnovení.

Nastavení automatického obnovování certifikátů SSL

Certifikáty Let's Encrypt mají platnost 90 dní. Poté je musíte znovu obnovit. Za tímto účelem můžete vytvořit úlohu cron, která to udělá automaticky za vás.

Vytvořte úlohu cron.

$ sudo nano /etc/cron.daily/letsencrypt-renew

Zkopírujte a vložte následující do souboru.

#!/usr/bin/env bash
certbot renew
systemctl reload nginx

Uložte a ukončete soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Udělejte skript spustitelným a restartujte démona cron, aby se náš skript spouštěl denně.

$ sudo chmod +x /etc/cron.daily/letsencrypt-renew
$ sudo systemctl restart cron

Krok 8 – Vytvořte si uživatele mastodonta

Navštivte své mastodontské stránky v prohlížeči. Měli byste vidět následující obrazovku.

Zadejte požadované uživatelské jméno, e-mailovou adresu a heslo pro vytvoření nového účtu na vaší instanci Mastodon. Vaše celé uživatelské jméno, které budete potřebovat pro připojení k uživatelům jiných serverů Mastodon, je howtoforge@example.com.

Mastodon vám zašle potvrzovací e-mail pro ověření registrace.

Registraci můžete potvrdit i ručně. K tomu budete muset SSH do své instance Dockeru. Seznam všech aktuálních instancí Dockeru.

$ docker ps

Uvidíte výstup jako níže.

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                  PORTS                      NAMES
32f2c4cd2598        tootsuite/mastodon    "/tini -- bash -c 'r…"   16 hours ago        Up 16 hours (healthy)   127.0.0.1:3000->3000/tcp   mastodon_web_1
76beca2b858d        tootsuite/mastodon    "/tini -- node ./str…"   16 hours ago        Up 16 hours (healthy)   127.0.0.1:4000->4000/tcp   mastodon_streaming_1
08f7a42b75ac        tootsuite/mastodon    "/tini -- bundle exe…"   16 hours ago        Up 16 hours                                        mastodon_sidekiq_1
bacaa8c09a85        redis:5.0-alpine      "docker-entrypoint.s…"   17 hours ago        Up 17 hours (healthy)                              mastodon_redis_1
62e9b2175a53        postgres:9.6-alpine   "docker-entrypoint.s…"   17 hours ago        Up 17 hours (healthy)                              mastodon_db_1

Abychom mohli provést požadované změny, potřebujeme získat přístup ke streamovacímu kontejneru. SSH do mastodont_streaming_1 kontejner.

$ docker exec -it mastodon_streaming_1 /bin/bash

Tím se spustí Bash shell uvnitř vašeho kontejneru.

Spusťte následující příkaz ke schválení nově vytvořeného uživatelského jména.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --confirm

Spuštěním následujícího příkazu udělejte z nově vytvořeného účtu správce.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --role admin

Opusťte kontejner.

[email protected]:~$ exit

Přihlaste se ke své instanci pomocí svého uživatelského jména a hesla a uvítá vás následující obrazovka.

Klikněte na Pojďme na to a přejdete na následující stránky, které vás seznámí se základy toho, jak Mastodon funguje.

Klikněte na Dokončit výukový program abyste byli uvítáni domovskou stránkou vašeho Mastodona, kde můžete začít přispívat podle svého.

Do nastavení a oblasti správy se dostanete z nabídky Předvolby.

Krok 9 – Údržba

Chcete-li zobrazit výkon a protokoly vaší instance Mastodon, přejděte na https://example.com/sidekiq/

Zde si můžete prohlédnout seznam různých procesů a naplánovaných úloh souvisejících s vaší instancí Mastodon. Můžete také zkontrolovat neúspěšné úlohy v části Mrtvý nebo opakování. Také vám sdělí využití paměti vaší instance.

Stav databáze vaší instance můžete zkontrolovat na https://example.com/pghero/

Můžete provádět údržbu databáze, spouštět dotazy SQL a odstraňovat nepoužívané indexy.

Pokud se váš web z nějakého důvodu vůbec nenačte, můžete zkontrolovat protokoly generované Dockerem.

Za tímto účelem nejprve zavřete kontejnery.

$ docker-compose down

Spusťte Docker compose v připojeném stavu, abyste mohli zobrazit protokoly generované každým kontejnerem.

$ docker-compose up

Krok 10 Upgrade vašeho mastodonta

Přepněte se do adresáře mastodontů.

$ cd /home/user/mastdon

Stáhněte si aktualizace z úložiště

$ git fetch

Pokud jste změnili svůj docker-compose.yml z nějakého důvodu musíte nejprve spustit následující příkaz.

$ git status

To vám řekne všechny změny, které se v něm provedly. Pokud je soubor změněn, nejprve uložte změny.

$ git stash

Podívejte se na nejnovější verzi Mastodon. Zkontrolujte nejnovější verzi na stránce vydání.

$ git checkout <version/tag>

Pokud jste dříve spustili git stash, pak spusťte následující příkaz a zopakujte změny v souboru docker-compose.yml soubor.

$ git stash pop

Vytvořte obrázek dockeru.

$ docker-compose build

Proveďte migraci databáze.

$ docker-compose run --rm web rails db:migrate

Předkompilujte aktiva Mastodon.

$ docker-compose run --rm web rails assets:precompile

Spusťte následující příkaz pro spuštění kontejneru.

$ docker-compose up -d

To je pro tento tutoriál vše. Chcete-li se o Mastodon dozvědět více, sledujte jejich dokumenty.


Ubuntu
  1. Jak nainstalovat Docker na Ubuntu 16.04

  2. Jak nainstalovat R na Ubuntu 20.04 LTS

  3. Jak nainstalovat Docker na Ubuntu 20.04 LTS

  1. Jak nainstalovat Docker na Ubuntu 18.04

  2. Jak nainstalovat Docker na Ubuntu 20.04

  3. Jak nainstalovat R na Ubuntu 18.04 LTS

  1. Jak nainstalovat Docker na Ubuntu 22.04 / 20.04 LTS

  2. Jak nainstalovat ONLYOFFICE 8.9.0 s Dockerem na Ubuntu

  3. Jak nainstalovat OroCRM s Nginx na Ubuntu 16.04 LTS