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

Как установить Mastodon на Ubuntu 18.04 с помощью Docker

5 min read Самохостинг Обновлено 22 Nov 2025
Установка Mastodon на Ubuntu 18.04 через Docker
Установка 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.

Добавление пользователя Mastodon

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

Первое знакомство с Mastodon

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

Как работает Mastodon

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

Ответ, буст, избранное

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

Панель Mastodon

ALT: Основная панель Mastodon с лентой и меню.

Шаг 9 — обслуживание и мониторинг

Административные панели по умолчанию:

Mastodon maintenance

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

pghero

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: установка на
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Исправить ошибку d3d9.dll в Windows
Windows

Исправить ошибку d3d9.dll в Windows

Отключить всплывающие объявления на Samsung
Мобильные советы

Отключить всплывающие объявления на Samsung

Как смотреть и чего ждать от мартовского Apple
Технологии

Как смотреть и чего ждать от мартовского Apple

Как сохранить маршрут Google Maps на ПК
Руководство

Как сохранить маршрут Google Maps на ПК

Голосовой ввод на Chromebook — как включить
Chromebook

Голосовой ввод на Chromebook — как включить

Как создать и управлять рабочим пространством Slack
Производительность

Как создать и управлять рабочим пространством Slack