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
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.