Как установить Mastodon на Ubuntu 18.04 с помощью Docker
Краткое описание
Mastodon — это бесплатная, децентрализованная и открытая социальная сеть. Как и в Twitter, пользователи могут подписываться друг на друга, публиковать тексты, изображения и видео. В отличие от централизованных платформ, Mastodon работает через множество отдельных серверов (инстансов), управляемых сообществом. Аккаунты одного инстанса могут взаимодействовать с аккаунтами других инстансов.
Эта инструкция научит вас установить собственный инстанс Mastodon на сервере с Ubuntu 18.04 с использованием Docker и Docker Compose. Руководство предполагает базовые навыки работы с Linux и SSH.
Важно: команды и конфигурации остаются те же, что и в оригинальном руководстве — кодовые фрагменты сохранены. Замените example.com и пути на ваши реальные значения.
Сопутствующие термины
- Инстанс — отдельный сервер Mastodon с собственным доменом и базой данных.
- SMTP — протокол отправки электронной почты.
- VAPID — ключи для push-уведомлений в web push.
Предварительные требования
- Сервер с Ubuntu 18.04 и учетной записью с правами sudo (не root).
- Доменное имя, указывающее на сервер (в примерах — example.com).
- Доступ к SMTP-провайдеру для отправки писем (рекомендуется Mailgun, SendGrid, Amazon SES и т. п.).
- Понимание основ HTTPS и DNS (A/AAAA-записи).
Важно: настройка собственного почтового сервера выходит за рамки этого руководства. Используйте сторонний сервис, если хотите избежать сложностей с доставкой писем.
Шаг 1 — установка зависимостей
Обновите пакеты и установите базовые инструменты:
$ sudo apt update
$ sudo apt upgrade
Установите дополнительные пакеты, которые понадобятся при установке:
$ sudo apt update
$ sudo apt install ca-certificates curl ufw apt-transport-https software-properties-common git -y
Некоторые пакеты могут быть уже установлены. После установки Git задайте глобальные параметры (замените на свои данные):
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Шаг 2 — настройка брандмауэра (ufw)
Мы используем ufw (Uncomplicated Firewall). Откройте доступ по SSH, HTTP и HTTPS, затем активируйте ufw:
$ sudo ufw allow OpenSSH
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw enable
$ sudo ufw status
Пример ожидаемого вывода показан в оригинальном руководстве. Проверьте, что правила применены и SSH открыт — иначе вы рискуете потерять доступ.
Важно: если вы настраиваете нестандартный SSH-порт, разрешите именно его.
Шаг 3 — установка Docker
Добавьте GPG-ключ Docker и репозиторий, затем установите Docker CE:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt update
$ sudo apt install docker-ce -y
$ sudo systemctl status docker
Добавьте своего пользователя в группу docker, чтобы запускать контейнеры без sudo:
sudo usermod -aG docker $USER
$ su - ${USER}
$ docker run hello-world
Если контейнер hello-world запускается и выводится приветствие, Docker установлен и функционирует.
Шаг 4 — установка Docker Compose
Docker Compose сильно упрощает запуск многоконтейнерных приложений. Скачайте бинарник и сделайте его исполняемым:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
$ docker-compose --version
Примечание: проверьте актуальную версию на странице релизов Docker Compose и при необходимости замените 1.24.1.
Шаг 5 — установка Mastodon
Клонируйте репозиторий Mastodon и перейдите в каталог проекта:
$ git clone https://github.com/tootsuite/mastodon
$ cd mastodon
$ cp .env.production.sample .env.production
Постройте образы Docker и сгенерируйте секреты. Сначала сборка:
$ docker-compose build
Сгенерируйте SECRET_KEY_BASE и другие секреты, вставьте их в .env.production:
$ SECRET_KEY_BASE=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/SECRET_KEY_BASE=/&${SECRET_KEY_BASE}/" .env.production
$ OTP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/OTP_SECRET=/&${OTP_SECRET}/" .env.production
$ PAPERCLIP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/PAPERCLIP_SECRET=/&${PAPERCLIP_SECRET}/" .env.production
$ docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key
Откройте файл .env.production и вставьте VAPID_PRIVATE_KEY и VAPID_PUBLIC_KEY, а также настройте LOCAL_DOMAIN и параметры SMTP от вашего провайдера. Пример блока SMTP:
SMTP_SERVER = smtp.mailgun.org
SMTP_PORT = 587
SMTP_LOGIN = username
SMTP_PASSWORD = password
SMTP_FROM_ADDRESS = [email protected]
Сохраните изменения и пересоберите образы:
$ docker-compose build
$ docker-compose run --rm web rails db:migrate
$ docker-compose run --rm web rails assets:precompile
$ docker-compose up -d
После запуска контейнеров Mastodon должен быть доступен на порту 80/443 через ваш веб-сервер.
Шаг 6 — установка и настройка Nginx
Установите Nginx и замените конфигурацию по умолчанию на конфигурацию для Mastodon:
$ sudo apt install nginx -y
$ 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
Вставьте в файл конфигурацию Nginx из оригинального руководства (она включает поддержку HTTP/2, gzip, проксирование потоков и статических ресурсов). Обратите внимание на пути: root /home/user/mastodon/public; замените user и example.com на ваши значения.
Конфигурация предполагает использование Let’s Encrypt для SSL. Если вы используете другой поставщик сертификатов, укажите пути к сертификатам и закомментируйте раздел с Certbot при необходимости.
Шаг 7 — настройка SSL через Let’s Encrypt
Остановите Nginx, установите Certbot, создайте сертификат сначала через standalone, затем через webroot (для корректной проверки файлов):
$ sudo systemctl stop nginx
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
$ sudo apt install certbot
$ sudo certbot certonly --standalone -d example.com
$ sudo systemctl start nginx
$ sudo certbot certonly --webroot -d example.com -w /home/user/mastodon/public/
Настройте автоматическое обновление сертификатов. Создайте скрипт:
$ sudo nano /etc/cron.daily/letsencrypt-renewВставьте:
#!/usr/bin/env bash
certbot renew
systemctl reload nginx
Сделайте скрипт исполняемым и перезапустите cron:
$ sudo chmod +x /etc/cron.daily/letsencrypt-renew
$ sudo systemctl restart cron
Примечание: сертификаты Let’s Encrypt действуют 90 дней. Certbot обычно предлагает автоматическую настройку renew через systemd timer — используйте тот метод, который предпочитаете.
Шаг 8 — создание пользователя Mastodon и подтверждение учётной записи
Откройте сайт в браузере: https://example.com. На странице регистрации создайте администратора.
Если вы не получили письмо подтверждения, можно подтвердить аккаунт вручную через shell в контейнере streaming:
$ docker ps
$ docker exec -it mastodon_streaming_1 /bin/bash
mastodon@container:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --confirm
mastodon@container:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --role admin
mastodon@container:~$ exit
После этого войдите на сайт и пройдите первоначальный тур по интерфейсу Mastodon.

ALT: Скриншот формы создания пользователя на инстансе Mastodon — поле логина, почты и пароля.

ALT: Скриншот приветственного экрана Mastodon с кнопкой “Let’s Go”.

ALT: Информационные карточки с объяснением основных действий: ответ, буст, избранное.

ALT: Иконки управления постами Mastodon — ответ, ретвит/boost, избранное.

ALT: Основная панель Mastodon с лентой и меню.
Шаг 9 — обслуживание и мониторинг
Административные панели по умолчанию:
- Sidekiq (задачи фоновой очереди): https://example.com/sidekiq/
- PgHero (здоровье PostgreSQL и запросы): https://example.com/pghero/

ALT: Экран Sidekiq с очередями задач и статистикой.

ALT: Интерфейс PgHero для анализа производительности PostgreSQL.
Просмотр логов при проблемах:
$ docker-compose down
$ docker-compose up
Запуск в прикреплённом режиме покажет логи всех контейнеров в реальном времени.
Шаг 10 — обновление Mastodon
Процедура обновления:
$ cd /home/user/mastodon
$ git fetch
$ git status
$ git stash # только если вы изменяли docker-compose.yml
$ git checkout
$ git stash pop # если вы делали stash
$ docker-compose build
$ docker-compose run --rm web rails db:migrate
$ docker-compose run --rm web rails assets:precompile
$ docker-compose up -d
Проверяйте релиз-ноты Mastodon перед обновлением — в них указаны возможные изменения миграций и совместимости.
Практические дополнения и рекомендации
Ниже собраны дополнительные разделы, которые помогут принять взвешенное решение при развёртывании, обезопасить инстанс и упростить администрирование.
Когда этот подход не подходит
- Если вам нужен полностью управляемый сервис без администрирования (используйте хостинг-провайдера или платный SaaS).
- Если у вас ограничены ресурсы сервера (Mastodon требует CPU, RAM и дискового пространства; для ростущей аудитории нужна горизонтальная масштабируемость).
- Если вы не готовы обеспечивать доставку почты и антиспам-настройки — тогда пользователи могут не получать подтверждения.
Альтернативные подходы
- Развёртывание без Docker: установка на
Похожие материалы
Исправить ошибку d3d9.dll в Windows
Отключить всплывающие объявления на Samsung
Как смотреть и чего ждать от мартовского Apple
Как сохранить маршрут Google Maps на ПК
Голосовой ввод на Chromebook — как включить