Как установить Mastodon на Ubuntu и запустить собственный инстанс
Важно: перед началом убедитесь, что у вас есть доступ к DNS у регистратора домена и возможность добавлять записи; без этого почтовая доставка и доступ к сайту не будут работать.
Краткое описание и цель
Mastodon — это децентрализованная социальная сеть с открытым исходным кодом. Она использует федеративную модель: инстансы могут общаться друг с другом, но администратор контролирует настройки своего сервера и правила модерации. Этот материал рассчитан на системных администраторов и опытных пользователей, которые хотят запустить собственный инстанс Mastodon под управлением Ubuntu Server.
- Что такое «тооты» — короткие сообщения до 500 символов.
- Почему self-hosting — контроль данных и правила модерации.
- Что понадобится: VPS на Ubuntu, домен, Mailgun (или другой SMTP), SSH-доступ.
Содержание
- Что нужно для установки
- Шаг 1: SSH и Docker
- Шаг 2: Клонирование Mastodon и запуск мастера установки
- Шаг 3: Nginx как reverse proxy
- Шаг 4: SSL с Let’s Encrypt и запуск контейнеров
- Автоматизация задач (cron)
- Обслуживание и администрирование
- Безопасность и приватность
- Резервные копии и откат
- Когда это не подходит и альтернативы
- Чек-листы для ролей
- Критерии приёмки
- Сводка

Что нужно для установки Mastodon
Коротко: VPS с Ubuntu Server, домен, учетная запись Mailgun (или другой SMTP), SSH-доступ и базовые навыки работы в терминале.
Подробно:
- Сервер: Ubuntu Server (LTS рекомендуется). Подойдёт VPS с 2+ vCPU и 4+ ГБ ОЗУ для небольшого инстанса; для большого трафика потребуется больше ресурсов.
- Домен: свободное доменное имя, указывающее на IP сервера. Обновите A-запись у регистратора.
- Почта: Mailgun используется для подтверждения регистраций; можно использовать любой SMTP-провайдер, но настройка и верификация домена обязательны.
- SSH: доступ через терминал (Linux/macOS) или PuTTY (Windows).
- Софт: Docker, Docker Compose, Nginx, Certbot (Let’s Encrypt).
Шаг 1: Установите SSH-подключение и Docker
Подключитесь по SSH и создайте пользователя для Mastodon. Это снижает риск работы от root.
adduser mastodon
usermod -aG sudo mastodon
su - mastodonОбновите пакетную базу и установите нужные утилиты:
sudo apt-get update
sudo apt-get install apt-transport-https software-properties-commonУстановите Docker:
sudo apt install docker.ioДобавьте пользователя в группу docker, чтобы запускать контейнеры без sudo:
sudo usermod -aG docker $(whoami) Затем выйдите и войдите снова под mastodon:
exit
su - mastodon Запустите и включите Docker при старте:
sudo systemctl start docker
sudo systemctl enable docker Установите Docker Compose:
sudo apt install docker-composeСовет: после установки проверьте версии команд: docker –version и docker-compose –version.
Шаг 2: Установка Mastodon на сервер
Перейдите в домашнюю папку mastodon и клонируйте репозиторий:
cd /home/mastodon
git clone https://github.com/tootsuite/mastodon.git Перейдите в каталог проекта и откройте docker-compose.yml для редактирования:
cd mastodon
nano docker-compose.ymlНайдите секции, начинающиеся с “build” и закомментируйте их. Это необходимо для использования предсобранных образов вместо сборки образов локально.

Сохраните и выйдите: Ctrl + O, затем Ctrl + X.
Запустите мастер настройки Mastodon, который создаст .env.production и другие ключевые файлы:
docker-compose run --rm web bundle exec rake mastodon:setupМастер задаст вопросы про домен, почтовые настройки и другие параметры. Используйте ваш домен и данные SMTP (например, Mailgun). Отдельно потребуется создать администратора — запомните или сохраните сгенерированный пароль.
Если вы используете Mailgun, найдите логин и пароль SMTP в панели Mailgun: app.mailgun.com/app/domains — скопируйте значения Default SMTP Login и Default Password в .env.production как SMTP_LOGIN и SMTP_PASSWORD.
Проверьте, что тестовое письмо отправляется и доставляется.

Содержимое .env.production следует проверить вручную: домен, SMTP, база данных (если не используете контейнеры для БД), тарифы и ограничения.
Шаг 3: Настройка Nginx как reverse proxy
Nginx будет принимать HTTPS-запросы и проксировать их в Docker-контейнеры.
Установите 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 и перезапустите службу после получения SSL:
sudo nginx -tЕсли ошибок нет, перезапустите позже, когда SSL установлен.
Шаг 4: SSL с Let’s Encrypt и запуск Mastodon
SSL необходим для доверия и работы Web Push.
Установите Certbot:
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update && sudo apt-get install certbotОстановите Nginx, чтобы Certbot мог запустить временный веб-сервер для проверки:
sudo systemctl stop nginx.serviceЗапросите сертификат, подставив ваш домен вместо example.com:
sudo letsencrypt certonly --standalone -d example.comЕсли сертификат получен успешно, вернитесь в директорию с Mastodon и остановите Docker-контейнеры перед сборкой и миграциями:
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Откройте в браузере ваш домен — вы должны увидеть страницу входа/регистрации Mastodon. Если есть проблемы, проверьте .env.production, логи Docker и статус служб.
Автоматизация рутинных задач (cron)
Создайте скрипт для периодической очистки медиакэша и обновления push-подписок:
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Добавьте строчку в crontab для ежедневного выполнения:
0 0 * * * /home/mastodon/mastodon_cron > /home/mastodon/mastodon_logСохраните и выйдите.
Автоматическое продление SSL
Сертификаты Let’s Encrypt действуют 90 дней. Настройте задачу для регулярного обновления:
sudo crontab -eДобавьте:
0 1 * * 1 /usr/bin/letsencrypt renew >> /home/mastodon/letsencrypt.log
5 1 * * 1 /bin/systemctl reload nginxЗадача будет пытаться обновить сертификаты по понедельникам в 1:00 и перезагружать Nginx.
Администрирование Mastodon
После регистрации администратора повысите пользователя до роли admin:
cd /home/mastodon/mastodon
docker-compose run --rm web rails mastodon:make_admin USERNAME=yourusernameВ интерфейсе Mastodon зайдите в Preferences → Administration для управления пользователями и настройками сайта: заголовок, описание, правила модерации и т.д.

Резервное копирование и откат
Регулярно делайте резервные копии базы данных и медиа-файлов.
Простейший план бэкапа:
- Дамп базы PostgreSQL: pg_dump -> tar.gz
- Копия папки с медиа (storage) -> rsync на удалённый хранилище
- Конфигурационные файлы (.env.production, nginx) — версионируйте в приватном репозитории или храните зашифрованными.
Пример команды для PG:
sudo docker-compose exec db pg_dump -U mastodon mastodon_production > /home/mastodon/db_backup.sqlОткат: остановить контейнеры, восстановить дамп, вернуть файлы медиа, затем поднять контейнеры.
Безопасность и защита приватности
Ключевые практики безопасности:
- Регулярные обновления системных пакетов и образов Docker.
- Минимизация прав: запускайте процессы не как root.
- Ограничьте доступ к администрированию через VPN или IP-фильтры, если нужно.
- Настройте fail2ban для защиты SSH и публичных сервисов.
- Включите Content Security Policy (CSP) в Nginx при необходимости.
- Шифруйте бэкапы и храните их в безопасном месте.
Конфиденциальность и GDPR:
- Уведомляйте пользователей о том, какие данные вы храните.
- Реализуйте процедуру удаления аккаунта и данных по запросу.
- Документируйте политику хранения логов и бэкапов.
Когда self-hosting не подходит: ограничения и альтернативы
Counterexamples/когда это не годится:
- Если у вас нет времени поддерживать сервер и следить за безопасностью — self-hosting может быть рискован.
- Для инстанса с высокой нагрузкой потребуется значительное аппаратное обеспечение и инженерное время.
- Если пользователи ожидают полной анонимности и распределённого хранения, Mastodon сам по себе хранит данные на сервере, и это не безопаснее, чем другие сервисы, если администратор не настроил шифрование и политики удаления.
Альтернативы:
- Использовать управляемый (managed) Mastodon-хостинг — провайдеры предлагают деплой и поддержку за плату.
- Pleroma — более лёгкая альтернатива с меньшими требованиями по ресурсам.
- Misskey — другая федеративная платформа с отличиями в UX и функциях.
Модель принятия решений: стоит ли запускать инстанс
- Если нужно контролировать модерацию, правила и данные — self-hosting оправдан.
- Если приоритет — простота и минимум поддержки, рассмотрите managed hosting.
- Если важна экономия ресурсов — Pleroma потребляет меньше.
flowchart TD
A[Есть домен и VPS?] -->|нет| B[Купить VPS и домен]
A -->|да| C[Есть время на поддержку?]
C -->|да| D[Установка Mastodon по этому руководству]
C -->|нет| E[Рассмотреть managed Mastodon]
D --> F{Есть опыт с Docker?}
F -->|да| G[Следовать шагам]
F -->|нет| H[Изучить Docker или выбрать managed]Чек-листы по ролям
Чек-лист для администратора (DevOps):
- Создать пользователя mastodon и настроить sudo.
- Установить Docker, Docker Compose и Nginx.
- Клонировать репозиторий Mastodon.
- Настроить .env.production и SMTP.
- Получить SSL и настроить автоматическое продление.
- Настроить cron-скрипты и резервные копии.
- Настроить мониторинг и логи.
Чек-лист для модератора:
- Изучить правила инстанса и политику блокировок.
- Ознакомиться с панелью Administration в Mastodon.
- Настроить шаблоны предупреждений.
- Настроить процесс апелляции для пользователей.
Чек-лист для пользователя:
- Создать аккаунт и подтвердить почту.
- Настроить профиль и уведомления.
- Изучить локальные правила инстанса.
Критерии приёмки
Инстанс считается успешно развернутым, когда выполнены все пункты:
- Домен указывает на сервер (A-запись верна).
- Сертификат SSL выдан и активен.
- Страница Mastodon открывается в браузере по HTTPS.
- Администратор может войти и управлять пользователями.
- Тестовая регистрация и подтверждение email проходят корректно.
- Cron-скрипты выполняются (проверить mastodon_log).
Полезные шаблоны и команды (шпаргалка)
Быстрая проверка статуса Docker:
docker ps -aПросмотр логов контейнера web:
docker-compose logs -f webСоздать дамп БД:
sudo docker-compose exec db pg_dump -U mastodon mastodon_production > /home/mastodon/db_backup.sqlДать админу права:
docker-compose run --rm web rails mastodon:make_admin USERNAME=yourusernameРиски и меры смягчения
- Риск: потеря доступа к почте → мера: провайдер резервной почты или сохранение SMTP-кредитов.
- Риск: компрометация сервера → мера: регулярные обновления, ограничение SSH по IP, fail2ban.
- Риск: заполнение диска медиа-файлами → мера: лимиты загрузки, регулярная очистка медиакэша, внешнее хранилище.
Локальные особенности и советы для русскоязычной аудитории
- Проверьте настройки локали сервера, если планируете хранить данные и логи с русскими метками.
- Если почтовый провайдер блокирует отправку из определённых регионов, рассмотрите международные SMTP-провайдеры или relay.
- Учитывайте законы о хранении данных в вашей стране при публикации политического контента.
Краткая методология развёртывания (минималистично)
- Подготовить VPS и домен.
- Установить Docker и Docker Compose.
- Клонировать Mastodon и настроить .env.production.
- Настроить Nginx и временно остановить его.
- Получить SSL через Certbot standalone.
- Собрать контейнеры, выполнить миграции, поднять сервисы.
- Настроить cron и бэкапы.
Когда что делать: краткое дерево решений
- Ошибка отправки почты: проверить SMTP в .env.production → проверить DNS (SPF, DKIM) → проверить логи Mailgun.
- Проблемы с SSL: проверить, что порт 80/443 не занят → остановить Nginx → повторно запустить letsencrypt.
- Низкая производительность: проверить использование CPU/RAM → масштабировать VPS или использовать CDN для статики.
Сводка
- Вы можете развернуть Mastodon на Ubuntu с помощью Docker и Nginx.
- Ключевые шаги: подготовка сервера, конфигурация .env.production, настройка Nginx, получение SSL, запуск контейнеров и автоматизация.
- Не забывайте про безопасность, резервные копии и политику модерации.

Если хотите, могу подготовить сокращённый чек-лист в формате файла README.md для быстрого запуска, или помочь адаптировать конфигурацию Nginx под ваш домен и особенности хостинга.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента