Sociální síť Mastodon: Nainstalujte si server s vlastními pravidly

20. ledna 2023

Co je to vlastně ten Mastodon?

V souvislosti s převzetím Twitteru Elonem Muskem se začal termín Mastodon výrazněji probírat. Jedná se o open-source platformu sociálních sítí, kterou v roce 2016 vytvořil Eugen Rochko (v ruštině Евгений Рочко). Klíčovou vlastností Mastodonu je využití protokolu ActivityPub. Pro svůj chod využívá Ruby on Rails a PostgreSQL.

Protože se jedná o decentralizovanou platformu, můžete se zaregistrovat na libovolném serveru, kde každý má vlastní pravidla pro registraci a obsah a svůj obsah sdílíte s libovolnými dalšími uživateli. Na https://joinmastodon.org/servers najdete seznam serverů na kterých si můžete zažádat o účet. České jsou tam (v době psaní článku) dva.

Výhodou toho, že se jedná o free a open-source je, že si můžete nainstalovat vlastní server s vlastními pravidly. Dokumentace je natolik dobře udělaná, že instalaci zvládne téměř každý.

Snadná instalace serveru na Mastodon

Pochopitelně jsem si instalaci vyzkoušel a byl jsem nadšený, jak snadné to je. Zabezpečení virtuálního serveru jsem si udělal vlastní, ale jinak jsem postupoval podle návodu. Zvolil jsem si  VPS s Debian 11.6 Bullseye, 2CPU, 2GB RAM  a certifikáty pro doménu jsem použil validní od DigiCert. Po úspěšné instalaci, restartu serveru a kontrole, jestli všechny služby běží, jsem netrpělivě otevřel stránku https://mastodon.vyboh.net/ a vyskočilo na mě:

Paráda, mám funkční Mastodon server. Od objednání serveru a certifikátu do zprovoznění necelá hodina.

Ale na rovinu, zas tak jednoduché to nebylo

Proto píšu, že to zvládne téměř každý. První pokus který jsem zkoušel byl na serveru s 1GB RAM. Instalace proběhla v pohodě (pokud tam byla nějaká chyba, tak jsem si jí nevšiml). Restartoval jsem server, zkontroloval jsem, že všechny služby fungují, zadal do prohlížeče adresu serveru a skončil jsem na chybě 500. Podíval jsem se do error logu Nginx a tohle je jediný záznam naprosto nesouvisející s daným problémem:

2023/01/23 13:31:29 [notice] 9943#9943: using inherited sockets from "6;7;"

Takže jsem se pustil do zkoumání /var/log/syslog  a tam jsem konečně našel užitečnou informaci:

Jan 23 14:08:34 mastodont bundle[1072]: [74520534-5d1c-4963-ba12-e5f9c38873b1] Chewy request strategy is `mastodon`
Jan 23 14:08:34 mastodont bundle[1072]: [74520534-5d1c-4963-ba12-e5f9c38873b1] method=GET path=/ format=html controller=HomeController action=index status=500 error='ActionView::Template::Error: Webpacker can't find media/images/preview.
png in /home/mastodon/live/public/packs/manifest.json. Possible causes:
Jan 23 14:08:34 mastodont bundle[1072]: 1. You want to set webpacker.yml value of compile to true for your environment
Jan 23 14:08:34 mastodont bundle[1072]: unless you are using the `webpack -w` or the webpack-dev-server.
Jan 23 14:08:34 mastodont bundle[1072]: 2. webpack has not yet re-run to reflect updates.
Jan 23 14:08:34 mastodont bundle[1072]: 3. You have misconfigured Webpacker's config/webpacker.yml file.
Jan 23 14:08:34 mastodont bundle[1072]: 4. Your webpack configuration is not creating a manifest.
Jan 23 14:08:34 mastodont bundle[1072]: Your manifest contains:
Jan 23 14:08:34 mastodont bundle[1072]: {
Jan 23 14:08:34 mastodont bundle[1072]: }
Jan 23 14:08:34 mastodont bundle[1072]: ' duration=113.80 view=0.00 db=6.73

Protože Ruby on Rails jsem naposledy použil před nějakými dvanácti lety, tak jsem zkusil Google a našel jsem řešení na GitHub.com. Po spuštění příkazu: RAILS_ENV=production bundle exec rails assets:precompile systém zahlásil:

Compiling...
Compilation failed:

<--- Last few GCs --->

[1845:0x629ecc0] 30263 ms: Mark-sweep 461.6 (480.7) -> 458.4 (481.4) MB, 125.6 / 0.0 ms (average mu = 0.142, current mu = 0.027) allocation failure scavenge might not succeed
[1845:0x629ecc0] 30387 ms: Mark-sweep 462.3 (481.4) -> 459.2 (482.2) MB, 121.0 / 0.0 ms (average mu = 0.090, current mu = 0.030) allocation failure scavenge might not succeed

<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0xb08e80 node::Abort() [node]

Závěr: 1GB RAM na serveru v žádném případě nestačí!

Pojďme dál.

Nová EU legislativa a Mastodon

Jak je vidět, tak zprovoznit si vlastní Mastodon server není ani komplikované a ani finančně náročné (dám za jeden oběd víc, než za měsíc provozu), ale trochu se bojím právních aspektů provozu.

EU to s decentralizací myslí vážně. Doporučuji k přečtení alespoň tenhle článek od NGI iniciativy. A pokud se Vám povede najít nějakou zranitelnost v Mastodon, tak můžete dokonce získat od EU zajímavou finanční odměnu.

Ale o tom třeba někdy později.

Jeden tip na závěr

Jestli provozujete WordPress a chcete svoje nové příspěvky publikovat na Mastodon, určitě budete potřebovat plugin ActivityPub.

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *