Установка Mastodon на Debian 10
Введение

Mastodon — это open-source платформа для социальной сети, похожая по концепции на Twitter. Её серверная часть написана на Ruby on Rails, фронтенд — на JavaScript. Mastodon поддерживает федерированные сети (ActivityPub), хранит данные в PostgreSQL и использует Redis для очередей и реального времени. В этой инструкции показана установка на Debian 10 (Buster).
К кому адресована инструкция: системным администраторам и опытным пользователям, которые хотят самостоятльно хостить свою инстанцию Mastodon.
Важно: сохраняйте приватные ключи и пароли, следуйте политикам безопасности вашей организации.
Что вам потребуется
- Сервер с Debian 10 (root-доступ). 2+ vCPU и 4+ ГБ ОЗУ — минимальное практическое требование для небольшой инстанции.
- Доменное имя, указывающее на IP сервера (в примерах используется test.linuxbuz.com).
- Открытые порты 80 и 443 (для HTTP/HTTPS) и возможности установить пакеты из сети.
Быстрый контрольный список перед началом
- Обновлённый Debian 10
- root-пароль или sudo-права
- Привилегии для установки пакетов и добавления репозиториев
- Доступ для создания системного пользователя mastodon
- Резервные копии данных на случай отката
Обновление системы
Сначала обновите пакеты на сервере:
apt-get update -y
apt-get upgrade -yЗатем установите зависимости, которые потребуются для сборки и работы Mastodon:
apt-get install software-properties-common dirmngr apt-transport-https ca-certificates curl gcc g++ make imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core libprotobuf-dev protobuf-compiler pkg-config autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev libidn11-dev libicu-dev libjemalloc-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev -yУстановка Node.js и Yarn
Mastodon в данной версии требует Node.js 8.x и менеджер пакетов Yarn. Добавьте репозиторий NodeSource:
curl -sL https://deb.nodesource.com/setup_8.x | bash -
apt-get install nodejs -yДобавьте GPG-ключ Yarn и репозиторий, затем установите Yarn:
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt-get update -y
apt-get install yarn -yПримечание: Node.js 8.x устарел. При возможности используйте документированную версию Mastodon и совместимую версию Node.js для вашей релизной ветки.
Установка и настройка PostgreSQL
Mastodon использует PostgreSQL для хранения данных.
apt-get install postgresql postgresql-contrib -yПереключитесь на пользователя postgres и создайте роль для Mastodon:
su - postgres
postgres@debian:~$ psql
postgres=# CREATE USER mastodon CREATEDB;
postgres=# exitОставьте пароль и права ролей в соответствии с политиками безопасности вашего окружения.
Установка Ruby и окружения rbenv
Создайте системного пользователя для запуска Mastodon:
adduser --disabled-login --gecos 'Mastodon Server' mastodon
su - mastodonУстановите rbenv и ruby-build:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-buildУстановите рекомендованную версию Ruby (в примере 2.6.1):
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.1
rbenv global 2.6.1Обновите RubyGems и установите bundler:
gem update --system
gem install bundler --no-documentПроверьте установленную версию Ruby:
ruby --versionСкачивание кода Mastodon и установка зависимостей
Оставаясь под пользователем mastodon, клонируйте репозиторий и переключитесь на релизную ветку:
su - mastodon
git clone https://github.com/tootsuite/mastodon.git ~/live
cd ~/live
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)Установите Ruby- и Node-зависимости:
bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test
yarn install --pure-lockfileЗапустите первоначальную настройку (интерактивный мастера):
RAILS_ENV=production bundle exec rake mastodon:setupПример ответов при настройке (используется домен test.linuxbuz.com):
Domain name: test.linuxbuz.com
Do you want to enable single user mode? No
Are you using Docker to run Mastodon? no
PostgreSQL host: /var/run/postgresql
PostgreSQL port: 5432
Name of PostgreSQL database: mastodon_production
Name of PostgreSQL user: mastodon
Password of PostgreSQL user:
Redis host: localhost
Redis port: 6379
Do you want to store uploaded files on the cloud? No
Do you want to send e-mails from localhost? yes
E-mail address to send e-mails "from": Mastodon <[email protected]>
Save configuration? Yes
Prepare the database now? Yes
Do you want to create an admin user straight away? YesПосле завершения выйдите из пользователя mastodon:
exitУстановка и настройка Nginx и Certbot
Добавьте репозиторий Certbot, установите Nginx и Certbot-плагин для Nginx:
add-apt-repository ppa:certbot/certbot
apt-get update -y
apt-get install nginx python-certbot-nginx -yСкопируйте пример конфигурации из дистрибутива Mastodon и активируйте виртуальный хост:
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon.conf
ln -s /etc/nginx/sites-available/mastodon.conf /etc/nginx/sites-enabled/
sed -i 's/example.com/test.linuxbuz.com/g' /etc/nginx/sites-enabled/mastodon.conf
systemctl restart nginxПолучите бесплатный сертификат Let’s Encrypt и настройте Nginx автоматически:
certbot --nginx -d test.linuxbuz.comВ примере конфигурации Nginx используются прокси на порты 3000 (web) и 4000 (streaming). Фрагмент конфигурации и параметры кэширования остаются как в шаблоне Mastodon.
Конфигурация systemd сервисов
Скопируйте системные юниты и запустите сервисы:
cp /home/mastodon/live/dist/mastodon-web.service /etc/systemd/system/
cp /home/mastodon/live/dist/mastodon-sidekiq.service /etc/systemd/system/
cp /home/mastodon/live/dist/mastodon-streaming.service /etc/systemd/system/
systemctl daemon-reload
systemctl start mastodon-web
systemctl start mastodon-sidekiq
systemctl start mastodon-streaming
systemctl enable mastodon-web
systemctl enable mastodon-sidekiq
systemctl enable mastodon-streamingПроверьте статусы сервисов:
systemctl status mastodon-web
systemctl status mastodon-sidekiq
systemctl status mastodon-streamingДоступ к веб-интерфейсу
Откройте в браузере
https://test.linuxbuz.com
Войдите, используя данные администратора, созданного в процессе настройки. Далее пройдите начальный туториал и завершите настройку:




Поздравляем — инстанция запущена и доступна по HTTPS.
Критерии приёмки
- Веб-интерфейс доступен по HTTPS и корректно возвращает страницу входа.
- Сервисы mastodon-web, mastodon-sidekiq и mastodon-streaming активны и не падают в течение 5 минут после старта.
- Можно создать и аутентифицировать администратора, отправить и получить пост.
- Обмен медиафайлами работает: загрузка и отображение изображений.
Режимы отказа и когда установка может не подойти
- Нехватка ресурсов: на слабых VPS с 1 ГБ ОЗУ Mastodon может работать очень медленно или падать. Решение — увеличить RAM/CPU.
- Сетевые ограничения: если хостинг запрещает исходящие подключения (Let’s Encrypt, внешние сервисы), автоматическая настройка сертификата и некоторые федерированные функции не будут работать.
- Устаревшие зависимости: текущая инструкция ориентирована на версии, указанные в репозитории на момент релиза; при обновлении Mastodon могут измениться требования к Ruby/Node.
Альтернативные подходы
- Использовать Docker-контейнеры или docker-compose — упрощает деплой и обновления на многих хостингах.
- PaaS/Managed Mastodon — если не хотите управлять сервером, есть провайдеры, предлагающие инстанции «под ключ».
- Лёгкие альтернативы для федерированных соцсетей: Pleroma, Misskey — потребляют меньше ресурсов и имеют другие требования.
Рекомендации по безопасности и резервному копированию
- Делайте регулярные бэкапы PostgreSQL и директории public/system (где хранятся медиа). Минимальный план бэкапов: ежедневный дамп базы + репликация на удалённый сервер.
- Храните файлы сертификатов и секреты (файл .env.production) в безопасном хранилище, ограничьте доступ по файловым правам.
- Настройте автоматическое обновление системы и периодически применяйте исправления безопасности.
Пример простого бэкап-скрипта (crontab) — делать dump базы и тянуть директорию uploads:
# пример: в root crontab
0 3 * * * pg_dump -U mastodon mastodon_production > /var/backups/mastodon_$(date +\%F).sql
0 3 * * * tar -czf /var/backups/mastodon_uploads_$(date +\%F).tar.gz /home/mastodon/live/public/systemПроцесс обновления Mastodon — мини-методология
- Создайте полную резервную копию базы и файлов.
- Переведите инстанцию в режим обслуживания (single-user или остановите systemd-сервисы).
- Обновите код из репозитория: git fetch && git checkout <релиз>
- Обновите зависимости: bundle install и yarn install.
- Запустите миграции: RAILS_ENV=production bundle exec rails db:migrate
- Соберите ассеты: RAILS_ENV=production bundle exec rails assets:precompile
- Перезапустите сервисы и проверьте логи.
Роль-ориентированные контрольные списки
Системный администратор:
- Настроить брандмауэр и обновления.
- Настроить Certbot и автоматическое продление сертификата.
- Следить за загрузкой CPU/RAM и диска.
Администратор Mastodon (инстанции):
- Управлять регистрациями, местной политикой модерации.
- Создавать аккаунты модераторов, отслеживать очереди sidekiq.
DevOps/разработчик:
- Настроить CI для сборки релизов и тестирования миграций.
- Автоматизировать процедуры бэкапа и восстановления.
Критические команды для отладки
- Логи системных юнитов:
journalctl -u mastodon-web -f
journalctl -u mastodon-sidekiq -f
journalctl -u mastodon-streaming -f- Проверка статуса сервиса
systemctl status mastodon-web- Проверка очередей Sidekiq (в каталоге live):
RAILS_ENV=production bundle exec sidekiqctl status tmp/pids/sidekiq.pidОднострочный глоссарий
- ActivityPub — протокол федерации для взаимодействия между инстанциями.
- Sidekiq — фоновая очередь для задач (Redis).
- rbenv — управление версиями Ruby.
Короткий шаблон объявления (100–200 слов)
Запустили собственную инстанцию Mastodon на Debian 10. Теперь у нас есть приватная, федеративная платформа для обмена сообщениями и медиа, управляемая нами. Сервер настроен с HTTPS через Let’s Encrypt, база данных — PostgreSQL, фоновые задачи — Sidekiq/Redis. Для участия — зарегистрируйтесь или получите приглашение от администратора. Мы будем следить за безопасностью, регулярно делать бэкапы и обновления. Готовы помочь с вопросами о миграции и настройках.
Когда обращаться за помощью
- Если после старта сервисы падают — проверяйте логи systemd и Sidekiq.
- При проблемах с SSL — смотрите вывод certbot.
- Если федерированные подписки не приходят — проверьте исходящие соединения и DNS-записи (SPF, DKIM для почты).
Итог
Вы установили и настроили Mastodon на Debian 10: подготовили систему, установили Node.js/Yarn, PostgreSQL, Ruby через rbenv, настроили Nginx и Certbot, зарегистрировали администратора и запустили systemd-сервисы. Дополнительно — получили рекомендации по бэкапам, обновлениям и ролям для поддержки инстанции.
Ключевые шаги проверки: веб-интерфейс по HTTPS, активные systemd-сервисы, рабочая база данных, обработка фоновых задач. Если нужны примеры конфигураций, автоматизация обновлений или помощь с миграцией на Docker — спросите, и я помогу с конкретным сценарием.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента