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

Как развернуть собственный 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
Автор
Редакция

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

Настройка почты Bluehost — создать, подключить к Gmail
Хостинг

Настройка почты Bluehost — создать, подключить к Gmail

Как начать писать на Medium — руководство
Письмо

Как начать писать на Medium — руководство

Безопасная гибридная работа: практические рекомендации
Кибербезопасность

Безопасная гибридная работа: практические рекомендации

Как контролировать личные сообщения в Instagram
Социальные сети

Как контролировать личные сообщения в Instagram

Возврат по делу FTC против Epic Games (Fortnite)
Потребительские права

Возврат по делу FTC против Epic Games (Fortnite)

Как сделать профиль Twitter заметным
Социальные сети

Как сделать профиль Twitter заметным