Гид по технологиям

Как развернуть собственный Mastodon на Ubuntu с Docker и Nginx

7 min read Самохостинг Обновлено 29 Dec 2025
Как развернуть Mastodon на Ubuntu — пошагово
Как развернуть Mastodon на Ubuntu — пошагово

Установка Mastodon на Linux — схематичное изображение

Коротко о Mastodon и зачем это нужно

Mastodon — это свободная федеративная социальная сеть, похожая по идее на Twitter, где «тооты» ограничены 500 символами. Самохостинг Mastodon даёт вам полный контроль над политикой модерации, конфиденциальностью и доступом. Этот гайд ориентирован на Ubuntu Server и предполагает минимальный уровень навыков системного администратора: работа в SSH, базовые команды Linux и редактирование конфигураций.

Важно: перед началом убедитесь, что у вас есть:

  • VPS с Ubuntu Server (можно арендовать у провайдеров вроде Vultr, DigitalOcean и т. п.),
  • выделенный домен, указывающий на IP сервера,
  • почтовый сервис для исходящей почты (например, Mailgun) для подтверждений и уведомлений.

Что понадобится (краткий список)

  • Ubuntu Server (LTS предпочительно)
  • SSH-доступ с правами администратора
  • Docker и Docker Compose
  • Git
  • Nginx (в роли обратного прокси)
  • Mailgun или другой SMTP для регистрации пользователей
  • Let’s Encrypt для SSL

Роль элементов и одно предложение-определение

  • Docker — контейнеризация сервисов; упрощает запуск зависимостей Mastodon.
  • Mastodon — программа самой социальной сети (включает веб, Sidekiq, streaming и т. д.).
  • Nginx — обратный прокси и TLS-терминатор.

Шаг 0 — предварительные замечания

Важно: резервные копии базы данных и папки хранения медиа необходимы до любой обновляющей операции. Прежде чем менять .env.production, сохраняйте копию: /home/mastodon/mastodon/.env.production.backup.

Шаг 1: подключение по SSH и установка Docker

Подключитесь к вашему серверу по SSH и выполните команды от имени администратора. Создайте пользователя mastodon, добавьте в sudo и переключитесь на него:

adduser mastodon
usermod -aG sudo mastodon
su - mastodon

Обновите индекс пакетов и установите вспомогательные утилиты:

sudo apt-get update
sudo apt-get install apt-transport-https software-properties-common git nano curl

Установите Docker и Docker Compose:

sudo apt install docker.io
sudo usermod -aG docker $(whoami)
# Выйдите и зайдите снова для вступления в силу группы docker
exit
su - mastodon

Запустите и включите Docker при старте системы:

sudo systemctl start docker
sudo systemctl enable docker

Установите Docker Compose (пакет из репозитория) или скачайте официальный бинарный файл при необходимости:

sudo apt install docker-compose

Важно: если вы планируете использовать отдельный каталог для томов Docker, убедитесь, что на диске достаточно места и включено резервное копирование этих томов.

Шаг 2: загрузка Mastodon и запуск мастера установки

Перейдите в домашнюю папку mastodon и клонируйте репозиторий:

cd /home/mastodon
git clone https://github.com/tootsuite/mastodon.git
cd mastodon
nano docker-compose.yml

В файле docker-compose.yml найдите секции с ключом build: и закомментируйте их (в Docker Compose local build может конфликтовать с уже собранными образами). Сохраните Ctrl+O, затем Ctrl+X.

Фрагмент docker-compose.yml с настройками сборки образов

Запустите мастер установки, который подготовит .env.production и предложит базовые настройки:

docker-compose run --rm web bundle exec rake mastodon:setup

Мастер задаст вопросы про домен, почту и т. п. Используйте ваш домен и параметры Mailgun (Default SMTP Login и Default Password) для полей SMTP_LOGIN и SMTP_PASSWORD в .env.production. Отправьте тестовое письмо через мастер — убедитесь, что вы получаете его.

Сохраните сгенерированные учетные данные администратора (имя пользователя и временный пароль).

Мастер установки Mastodon в терминале

Если вы используете Mailgun, зайдите в app.mailgun.com/app/domains → ваша домен-запись → Default SMTP Login и Default Password.

Пример подтверждающего email от Mastodon

Шаг 3: настройка Nginx как обратного прокси

Установите Nginx:

sudo apt-get install nginx

Удалите профиль по умолчанию и создайте конфигурацию для вашего домена:

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default
sudo touch /etc/nginx/sites-available/mastodon
sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
sudo nano /etc/nginx/sites-available/mastodon

Скопируйте пример конфигурации с официального репозитория Mastodon (или с шаблона, который вы используете). Во всех местах example.com замените на ваш домен (без www). Сохраните и выйдите.

Важно: проверьте синтаксис nginx перед перезапуском:

sudo nginx -t

Шаг 4: получение SSL и запуск сервисов

Установите Certbot и временно остановите Nginx, чтобы Certbot мог использовать standalone-режим:

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update && sudo apt-get install certbot
sudo systemctl stop nginx.service

Генерация сертификата (замените example.com на ваш домен):

sudo certbot certonly --standalone -d example.com

После успешного получения сертификата вернитесь в каталог Mastodon и выключите контейнеры перед сборкой и миграциями:

cd /home/mastodon/mastodon
docker-compose down

Соберите образы, скомпилируйте ассеты и примените миграции, затем запустите контейнеры в фоне:

docker-compose build
docker-compose run --rm web rails assets:precompile
docker-compose run --rm web rails db:migrate
docker-compose up -d

Запустите Nginx снова:

sudo systemctl restart nginx.service

Если всё прошло успешно, откройте https://your-domain и завершите создание администратора, подтвердив почту.

Если при запуске появились ошибки, проверьте .env.production, логи Docker и настройки Mailgun, а также DNS-записи домена.

Шаг 5: автоматизация задач и плановое обслуживание

Создайте скрипт для периодической очистки медиа-кэша и очередей (cron):

cd /home/mastodon
nano mastodon_cron

Вставьте в файл:

cd /home/mastodon/mastodon
docker-compose run --rm web rake mastodon:media:clear
docker-compose run --rm web rake mastodon:push:refresh
docker-compose run --rm web rake mastodon:push:clear
docker-compose run --rm web rake mastodon:feeds:clear

Сделайте файл исполняемым и откройте crontab:

sudo chmod +x mastodon_cron && sudo crontab -e

Добавьте строку, чтобы запуск происходил ежедневно в полночь:

0 0 * * * /home/mastodon/mastodon_cron > /home/mastodon/mastodon_log 2>&1

Автоматическое продление SSL

Добавьте в crontab задачи на понедельник для проверки и продления сертификата и перезагрузки Nginx:

sudo crontab -e

Добавьте в конец:

0 1 * * 1 /usr/bin/certbot renew >> /home/mastodon/letsencrypt.log 2>&1
5 1 * * 1 /bin/systemctl reload nginx

Эти строки будут пробовать обновлять сертификаты раз в неделю и перезагружать Nginx при необходимости.

Администрирование Mastodon

Создайте свою учётную запись, подтвердите почту, затем выполните из каталога mastodon команду для повышения прав:

cd /home/mastodon/mastodon
docker-compose run --rm web rails mastodon:make_admin USERNAME=yourusername

В веб-интерфейсе перейдите в Preferences → Administration, чтобы управлять пользователями, настройками сайта и модерацией.

Подтверждение аккаунта в Mastodon

Рекомендации по безопасности и стабильности

Важно: самохостинг накладывает на вас ответственность за безопасность и приватность данных. Ключевые шаги:

  • Резервное копирование: делайте регулярные бэкапы базы данных PostgreSQL и тома с медиа (S3 или локальные копии).
  • Фаервол: откройте только нужные порты (22 для SSH, 80/443 для HTTP/HTTPS). Используйте ufw:
sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
  • Fail2ban: защитит от перебора паролей и брутфорс-атак.
  • Мониторинг: настраивайте систему оповещений для дискового пространства, нагрузок и ошибок контейнеров.
  • Обновления: регулярно обновляйте Docker-образы Mastodon и систему Ubuntu. Перед крупным обновлением делайте бэкап.
  • Ограничьте доступ к .env.production: храните файл с правами 600 и владельцем mastodon.

Приватность и соответствие требованиям (GDPR и другие)

  • Храните минимальные личные данные пользователей.
  • Обеспечьте возможность удаления аккаунтов и всех связанных данных по запросу; Mastodon имеет механизмы удаления учётных записей и контента, но вам нужно документировать процесс.
  • Логи SMTP/почты и бэкапы могут содержать персональные данные: ограничьте доступ и храните их зашифрованными при долгосрочном хранении.
  • Если вы ожидаете пользователей из ЕС, подготовьте политику конфиденциальности с описанием типов собираемых данных и контактной точки для запросов на удаление.

Чек-листы по ролям

Администратор (контент и модерация):

  • Проверить регистрацию и подтверждение почты.
  • Настроить правила модерации и автоматические проверки.
  • Управлять блокировками федерации и фильтрами контента.

Системный администратор (инфраструктура):

  • Настроить бэкапы PostgreSQL и томов медиа.
  • Обновлять Docker-образы и систему.
  • Контролировать диск, память и использование CPU.
  • Проверять логи Nginx и контейнеров.

Security engineer (безопасность):

  • Настроить Fail2ban и ufw.
  • Проверять права на файлы и секреты.
  • Периодически проводить аудит уязвимостей и обновлений.

Когда самохостинг не подходит

  • Если нужны гарантии высокой доступности и SLA — лучше использовать коммерческий хостинг или платформу.
  • Если вы не готовы поддерживать безопасность и обновления — будьте готовы к риску взлома и утечки данных.
  • Если ожидается очень высокая нагрузка (тысячи активных пользователей) — потребуются ресурсные кластеры и масштабирование за пределы одного VPS.

Альтернативные подходы

  • Использовать управляемые Mastodon-хостинги (платные сервисы), если не хочется заниматься поддержкой.
  • Запуск в Kubernetes для лучшей масштабируемости и управления контейнерами.
  • Использование S3-совместимого хранилища для медиа вместо локальных томов.

Быстрые проверки при неполадках (troubleshooting)

  1. 403/502 на nginx — проверьте синтаксис, права на сокеты и наличие контейнеров.
  2. Не приходят письма — проверьте .env.production и параметры Mailgun; есть ли блокировка по DNS/спискам.
  3. Ошибки миграций — откатите изменения и проверьте логи rails и базы.
  4. Полный диск — очистите старые образы Docker: docker system prune и проверьте тома.

Критерии приёмки

  • Сайт открывается по HTTPS и не даёт ошибок сертификата.
  • Регистрация пользователей работает, подтверждение по почте приходит.
  • Администратор может зайти в панель и управлять настройками.
  • Cron-задачи выполняются и логируются.

Мини-методология резервного восстановления

  1. Остановите контейнеры: docker-compose down.
  2. Восстановите бэкап базы PostgreSQL в отдельную базу и проверьте целостность.
  3. Восстановите том с медиа в том же пути /var/lib/docker/volumes или в S3.
  4. Запустите миграцию, затем docker-compose up -d.
  5. Проверьте веб-интерфейс и логи.

Краткий справочник терминов

  • Toot — сообщение в Mastodon.
  • Instance — отдельный сервер Mastodon с собственным доменом и политикой.
  • Federation — взаимодействие между инстансами Mastodon через ActivityPub.

Последние советы и вывод

Самостоятельный запуск Mastodon даёт гибкость и контроль, но требует регулярного обслуживания: обновлений, бэкапов и мониторинга. Если вы готовы инвестировать время в администрирование, самохостинг — отличный способ создать сообщество с собственными правилами. В противном случае рассмотрите управляемые решения или альтернативные платформы.

Краткое резюме:

  • Установите Docker и Docker Compose.
  • Клонируйте Mastodon, настройте .env.production через мастер.
  • Настройте Nginx, получите SSL через Certbot.
  • Автоматизируйте cron-задачи и продление сертификатов.
  • Настройте резервное копирование и безопасность.

Важно: перед публичным запуском проведите тестовую регистрацию и несколько сценариев восстановления, чтобы убедиться в надёжности сервиса.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство