Да притежавате социалния си акаунт звучи добре, докато не осъзнаете, че акаунтът живее на чужд сървър, по чужди правила и с чуждо време на работа. Собственият Mastodon сървър решава това: адресът ви е @you@your-domain и никой освен вас не може да го спре. Уловката е, че Mastodon не е малко приложение. Добре е да знаете с какво се захващате.
За кого е
- Сървър за един потребител — за вас или за официалния акаунт на фирмата ви.
- Малка общност от приятели или проектен екип — десетки хора, не хиляди.
За нещо по-голямо вече управлявате услуга със задължения по модерация, сигнали за злоупотреби и истинска инфраструктура. Това е друг разговор.
Какво наистина му трябва
Mastodon пуска няколко процеса наведнъж: уеб приложението на Rails, фонови работници на Sidekiq, стрийминг сървър, PostgreSQL и Redis. Заради федерацията сървърът ви продължава да тегли публикации и медия от други сървъри дори докато спите.
| Сървър | План |
|---|---|
| Един потребител, малко следвани | Small-IP — 2 vCPU, 4 GB, $16/мес. |
| Малка общност, активна федерация | Medium-IP — 4 vCPU, 6 GB, $20/мес. |
4 GB работят, но на ръба; опашките на Sidekiq се задръстват, когато популярна публикация, която следвате, получи хиляди отговори. 6 GB дават въздух. Другото ограничение е дискът — вижте частта за медията по-долу.
Трябват ви и домейн, и dedicated IP: другите сървъри доставят до вашия на порт 443.
Инсталиране с Docker
Официалното хранилище съдържа docker-compose.yml. На чист сървър с Ubuntu 24.04 и инсталиран Docker:
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
Задачата за настройка пита за домейна, настройките на базата и Redis (стойностите по подразбиране съвпадат с compose файла), настройките за поща и първия администраторски акаунт. Записва всичко в .env.production. Прочетете бележките към версията на избрания таг — стъпките понякога се променят между основните версии.
Mastodon включва шаблон за nginx в dist/nginx.conf. Копирайте го в /etc/nginx/sites-available/, сменете домейна и вземете сертификат с certbot. Нашите ръководства за reverse proxy и за домейн покриват и двете.
Поща: ползвайте релей
Mastodon изпраща писма за потвърждение и смяна на парола. Портове 25 и 465 са затворени на нашите сървъри, затова насочете Mastodon към външен доставчик на транзакционна поща през порт 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
Честно казано, релей бихте искали така или иначе. Поща от чисто нов сървърен IP често отива в спама; релеят има репутацията, която вие още нямате.
Медия: лакомникът за диск
Всяка снимка и видео от акаунтите, които сървърът ви вижда, се кешира локално. На активен сървър това са гигабайти седмично. Чистете старата отдалечена медия по график:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
Сложете ги в ежедневна cron задача. Ако сървърът порасне, преместете медията в S3-съвместимо обектно хранилище чрез настройките S3_* в .env.production — тогава дискът на VPS държи само базата.
Поддръжка
- Обновявания: изтеглете новия таг,
docker compose pull, пуснете миграциите според бележките към версията, рестартирайте. Не прескачайте основни версии. - Резервни копия: правете дъмп на PostgreSQL и пазете
.env.production— без тайните в него възстановяването няма да проработи. Нашето ръководство за restic описва копията извън сървъра, а Managed Backups добавят ежедневни точки за възстановяване на целия сървър. - Домейнът е завинаги. Той е вграден в адреса на всеки акаунт в целия fediverse. Изберете го, преди да създадете първия акаунт.
Търсите нещо по-леко за чат на екип? Matrix сървър може да пасне по-добре.
Коментари
Още няма коментари. Бъди първият.