Posiadanie własnego konta społecznościowego brzmi świetnie, dopóki nie zdasz sobie sprawy, że konto żyje na cudzym serwerze, według cudzych zasad i cudzej dostępności. Własna instancja Mastodona to naprawia: twój identyfikator to @you@your-domain i nikt poza tobą nie może go wyłączyć. Haczyk polega na tym, że Mastodon nie jest małą aplikacją. Warto wiedzieć, na co się piszesz.
Dla kogo to jest
- Instancja jednoosobowa dla ciebie albo dla oficjalnego konta twojej firmy.
- Mała społeczność znajomych lub zespół projektowy — dziesiątki osób, nie tysiące.
Przy czymś większym prowadzisz już usługę z obowiązkami moderacji, zgłoszeniami nadużyć i prawdziwą infrastrukturą. To zupełnie inna rozmowa.
Czego naprawdę potrzebuje
Mastodon uruchamia kilka procesów naraz: aplikację webową w Rails, workery Sidekiq w tle, serwer streamingu, PostgreSQL i Redis. Przez federację twój serwer pobiera posty i media z innych serwerów nawet wtedy, gdy śpisz.
| Instancja | Plan |
|---|---|
| Jedna osoba, mało obserwowanych | Small-IP — 2 vCPU, 4 GB, $16/mies. |
| Mała społeczność, aktywna federacja | Medium-IP — 4 vCPU, 6 GB, $20/mies. |
4 GB działają, ale na styk; kolejki Sidekiq się zapychają, gdy popularny post, który obserwujesz, dostaje tysiące odpowiedzi. 6 GB daje oddech. Drugim ograniczeniem jest dysk — patrz sekcja o mediach niżej.
Potrzebujesz też domeny i dedykowanego IP: inne serwery dostarczają do twojego na porcie 443.
Instalacja w Dockerze
Oficjalne repozytorium zawiera docker-compose.yml. Na świeżym serwerze z Ubuntu 24.04 i zainstalowanym Dockerem:
git clone https://github.com/mastodon/mastodon.git
cd mastodon
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
touch .env.production
docker compose run --rm -v $(pwd)/.env.production:/opt/mastodon/.env.production \
web bundle exec rake mastodon:setup
docker compose up -d
Zadanie konfiguracyjne pyta o domenę, ustawienia bazy danych i Redisa (domyślne wartości pasują do pliku compose), ustawienia poczty i pierwsze konto administratora. Wszystko zapisuje w .env.production. Przeczytaj informacje o wydaniu dla wybranego tagu — kroki czasem zmieniają się między głównymi wersjami.
Mastodon zawiera szablon nginx w dist/nginx.conf. Skopiuj go do /etc/nginx/sites-available/, podmień domenę i zdobądź certyfikat przez certbota. Nasze poradniki o reverse proxy i o domenie opisują oba kroki.
Poczta: użyj przekaźnika
Mastodon wysyła maile z potwierdzeniem i resetem hasła. Porty 25 i 465 są na naszych serwerach zamknięte, więc skieruj Mastodona do zewnętrznego dostawcy poczty transakcyjnej przez port 587:
SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=notifications@your-domain.example
Szczerze mówiąc, przekaźnika i tak byś chciał. Poczta z zupełnie nowego adresu IP serwera często ląduje w spamie; przekaźnik ma reputację, której ty jeszcze nie masz.
Media: pożeracz dysku
Każdy obraz i film z kont, które widzi twój serwer, trafia do lokalnego cache. Na aktywnej instancji to gigabajty tygodniowo. Regularnie czyść stare zdalne media:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
Wrzuć to do codziennego crona. Jeśli instancja urośnie, przenieś media do storage obiektowego zgodnego z S3 za pomocą ustawień S3_* w .env.production — wtedy dysk VPS trzyma tylko bazę danych.
Utrzymanie
- Aktualizacje: pobierz nowy tag,
docker compose pull, uruchom migracje zgodnie z informacjami o wydaniu, zrestartuj. Nie przeskakuj głównych wersji. - Kopie zapasowe: zrzucaj PostgreSQL i pilnuj
.env.production— bez jego sekretów przywrócenie nie zadziała. Nasz poradnik restic opisuje kopie poza serwerem, a Managed Backups dodają codzienne punkty przywracania całego serwera. - Domena jest na zawsze. Jest wpisana w adres każdego konta w całym fediwersum. Wybierz ją przed utworzeniem pierwszego konta.
Szukasz czegoś lżejszego na czat zespołu? Serwer Matrix może pasować lepiej.
Komentarze
Brak komentarzy. Bądź pierwszy.