−25%

на річну оплату Windows, до 31.10. До тарифів

EQVPS

VPS для Mastodon: свій невеликий інстанс

Розміщуємо невеликий інстанс Mastodon на VPS: чесні вимоги до пам'яті й диска, встановлення в Docker, пошта через SMTP-релей і чистка медіа, щоб диск не забився.

Володіти своїм соцакаунтом — чудова ідея, доки не згадаєш, що акаунт живе на чужому сервері, за чужими правилами й із чужим аптаймом. Свій інстанс Mastodon це розв'язує: ваша адреса — @you@your-domain, і вимкнути її можете лише ви. Підступ у тому, що Mastodon — зовсім не маленький застосунок. Краще заздалегідь розуміти, у що вплутуєшся.

Для кого це

Для більшого ви вже запускаєте сервіс з обов'язками модерації, скаргами й справжньою інфраструктурою. Це окрема розмова.

Що справді потрібно

Mastodon тримає кілька процесів одразу: вебзастосунок на Rails, фонові воркери Sidekiq, сервер стримінгу, PostgreSQL і Redis. Через федерацію сервер і далі забирає дописи й медіа з інших серверів, навіть поки ви спите.

ІнстансТариф
Один користувач, небагато підписокSmall-IP — 2 vCPU, 4 ГБ, $16/міс
Невелика спільнота, активна федераціяMedium-IP — 4 vCPU, 6 ГБ, $20/міс

На 4 ГБ працювати можна, але впритул: черги Sidekiq накопичуються, коли популярний допис із вашої стрічки збирає тисячі відповідей. 6 ГБ дають запас. Друге обмеження — диск, про нього в розділі про медіа.

Ще потрібні домен і виділений 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. Прочитайте release notes обраної версії: між мажорними версіями кроки іноді змінюються.

У Mastodon є шаблон nginx — dist/nginx.conf. Скопіюйте його в /etc/nginx/sites-available/, замініть домен і отримайте сертифікат через certbot. Обидва кроки описані в наших інструкціях зі зворотного проксі та прив'язки домену.

Пошта: через релей

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 лишиться тільки база.

Супровід

Потрібно щось легше для командного чату? Можливо, краще підійде сервер Matrix.

Готові розгорнути? Оплата криптою, без KYC — сервер за хвилину.

Розгорнути →

Часті питання

Скільки пам'яті потрібно інстансу Mastodon?

Для однокористувацького чи невеликого інстансу реальний мінімум — 4 ГБ, комфортно — 6 ГБ. Mastodon одночасно тримає вебпроцес, воркери Sidekiq, PostgreSQL і Redis, а федерація навантажує Sidekiq навіть коли ніхто не пише.

Навіщо Mastodon виділений IP?

Інші сервери доставляють дописи на ваш через HTTPS на порт 443, а люди відкривають інстанс у браузері. Для цього потрібен вхідний 443 на своїй IP-адресі, якого в NAT-тарифів немає.

Як надсилати пошту з Mastodon?

Через зовнішній сервіс транзакційної пошти за SMTP на порт 587. Порти 25 і 465 на наших серверах закриті, а релей до того ж дає значно кращу доставлюваність, ніж свіжа IP-адреса.

Чому диск так швидко заповнюється?

Сервер кешує медіа всіх акаунтів, які бачить. Запускайте 'tootctl media remove --days 7' за розкладом або винесіть медіа в S3-сумісне сховище.

Чи можна згодом змінити домен?

Ні. Домен — частина ідентичності кожного акаунта в усьому федиверсі. Оберіть його уважно до створення першого акаунта.

Коментарі

Поки немає коментарів. Будьте першим.

Залишити коментар

Коментарі проходять модерацію перед публікацією.