bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Развёртывание Mastodon на VPS: Полный Гайд по Установке и Конфигурации

calendar_month Jul 17, 2026 schedule 20 мин. чтения visibility 13 просмотров
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Развёртывание Mastodon на VPS: Полный Гайд по Установке и Конфигурации

TL;DR

В этом подробном руководстве мы шаг за шагом настроим и развернём собственный экземпляр децентрализованной социальной сети Mastodon версии 4.4.0 на виртуальном приватном сервере (VPS) под управлением Ubuntu 24.04 LTS. Мы рассмотрим все этапы, от выбора подходящего сервера и базовой подготовки операционной системы до установки необходимых компонентов, конфигурации веб-сервера Caddy с автоматическим HTTPS, настройки базы данных PostgreSQL 17 и Redis 8, а также создания системы резервного копирования и мониторинга для обеспечения стабильной работы.

  • Установка Mastodon 4.4.0 на Ubuntu 24.04 LTS с использованием Ruby 3.4 и Node.js 22 LTS.
  • Настройка базы данных PostgreSQL 17 и кэширования с Redis 8.
  • Автоматическая выдача и обновление SSL-сертификатов с помощью Caddy.
  • Создание надёжной системы резервного копирования данных Mastodon.
  • Рекомендации по выбору VPS-конфигурации и обслуживанию сервера.

Что мы настраиваем и зачем

Мы будем развёртывать Mastodon — одну из самых популярных и функциональных децентрализованных социальных сетей в мире. Mastodon представляет собой свободное программное обеспечение с открытым исходным кодом, которое позволяет пользователям создавать собственные федеративные микроблогинговые платформы, известные как "инстансы". Эти инстансы могут взаимодействовать друг с другом, образуя единую, но при этом распределённую сеть, известную как Fediverse.

В отличие от традиционных централизованных социальных сетей, таких как X (бывший Twitter) или Facebook, Mastodon даёт вам полный контроль над вашими данными, правилами сообщества и функциональностью платформы. Развёртывая собственный инстанс Mastodon на VPS, вы получаете независимость от корпоративных решений, возможность формировать уникальное сообщество по своим правилам и обеспечивать высокий уровень приватности для ваших пользователей.

В итоге, вы получите полностью функционирующий инстанс Mastodon, доступный по вашему доменному имени, готовый к регистрации пользователей и интеграции с другими инстансами Fediverse. Это идеальное решение для небольших команд, сообществ по интересам, личных блогов или даже для запуска публичной платформы с тысячами пользователей, если вы готовы к масштабированию.

Существуют альтернативы в виде облачных решений или управляемых хостингов для Mastodon, которые могут показаться проще на первый взгляд. Однако, self-hosted вариант на VPS предлагает максимальную гибкость, контроль над ресурсами и данными, а также долгосрочную экономию средств, особенно если вы планируете масштабировать свой инстанс или интегрировать его с другими сервисами. Вы избегаете ограничений, накладываемых провайдерами управляемых сервисов, и получаете полный root-доступ для тонкой настройки и оптимизации.

Какой VPS-конфиг нужен под эту задачу

Выбор подходящего VPS для Mastodon зависит от предполагаемой нагрузки. Mastodon — это ресурсоёмкое приложение, требующее значительных объёмов оперативной памяти и быстрой дисковой подсистемы, особенно при активном использовании. Приведённые ниже требования актуальны для 2026 года, учитывая тенденции роста потребления ресурсов.

Минимальные требования для небольшого инстанса (до 50 активных пользователей)

  • CPU: 2 ядра (современные Intel Xeon E5/E7 или AMD EPYC).
  • RAM: 4 ГБ DDR4. Большая часть памяти будет использоваться PostgreSQL, Redis и самим приложением Ruby on Rails.
  • Диск: 80 ГБ NVMe SSD. Быстрый диск критически важен для производительности базы данных и хранения медиафайлов. HDD не рекомендуется.
  • Сеть: 100 Мбит/с симметричный канал. Для небольшого инстанса этого будет достаточно.

Рекомендуемый конфиг для среднего инстанса (50-500 активных пользователей)

  • CPU: 4 ядра (высокопроизводительные Intel Xeon Scalable или AMD EPYC).
  • RAM: 8-16 ГБ DDR4. Это позволит комфортно обрабатывать пиковые нагрузки и кэшировать больше данных.
  • Диск: 200-400 ГБ NVMe SSD. Значительное увеличение объёма для медиафайлов и потенциального роста базы данных.
  • Сеть: 1 Гбит/с симметричный канал. Необходим для быстрой загрузки медиафайлов и обработки большого количества запросов.

Конкретный VPS-план под задачу (пример)

Для начала работы с Mastodon и поддержания инстанса до 100-200 активных пользователей, оптимальным выбором будет VPS со следующими характеристиками:

Параметр Значение
Процессор 4 vCPU (современный Intel Xeon или AMD EPYC)
Оперативная память 8 ГБ DDR4
Дисковое пространство 200 ГБ NVMe SSD
Сетевой канал 1 Гбит/с

Можно взять VPS с указанными характеристиками, чтобы обеспечить стабильную работу вашего Mastodon-инстанса с запасом на рост.

Когда нужен dedicated, а не VPS

Выделенный сервер (dedicated server) становится необходимым, когда ваш инстанс Mastodon начинает обслуживать тысячи активных пользователей, генерирует огромные объёмы медиафайлов, или если вы планируете запускать на нём дополнительные ресурсоёмкие сервисы. Dedicated сервер предоставляет эксклюзивный доступ ко всем физическим ресурсам (CPU, RAM, диск), что исключает "шумных соседей" и обеспечивает максимальную производительность и стабильность. Для Mastodon с более чем 1000 активных пользователей, особенно с большим количеством медиа-контента, dedicated сервер с 8+ ядрами, 32+ ГБ RAM и несколькими ТБ NVMe SSD будет оправданным выбором.

Локация: на что влияет

Выбор локации VPS имеет несколько важных аспектов:

  • Пинг (задержка): Чем ближе сервер к вашей основной аудитории, тем ниже будет пинг и быстрее будет загружаться контент. Это критически важно для комфортного взаимодействия пользователей с платформой.
  • Законодательство: Различные страны имеют разные законы о хранении данных и приватности. Убедитесь, что выбранная локация соответствует вашим требованиям и требованиям вашего сообщества.
  • Стоимость: Цены на VPS могут варьироваться в зависимости от региона.
  • Доступность CDN: Если вы планируете использовать CDN для медиафайлов, выбирайте локацию, где есть хорошие точки присутствия (PoP) выбранного CDN-провайдера.

Подготовка сервера

После получения доступа к вашему новому VPS с Ubuntu 24.04 LTS, первым делом необходимо провести базовую настройку безопасности и установить необходимые утилиты. Все команды выполняются от имени пользователя root или с использованием sudo.

Обновление системы

Всегда начинайте с обновления списка пакетов и самой системы, чтобы убедиться в актуальности всех компонентов и наличии последних исправлений безопасности.


sudo apt update             # Обновление списка доступных пакетов
sudo apt upgrade -y         # Обновление всех установленных пакетов до последних версий
sudo apt autoremove -y      # Удаление устаревших пакетов, которые больше не нужны
sudo apt clean              # Очистка кэша пакетов

Создание нового пользователя с правами sudo

Работа под пользователем root небезопасна. Создайте нового пользователя и предоставьте ему права sudo.


sudo adduser mastodonuser     # Создание нового пользователя, например, "mastodonuser"
sudo usermod -aG sudo mastodonuser # Добавление пользователя в группу sudo

Теперь выйдите из сессии root и войдите под новым пользователем:


exit                        # Выход из текущей сессии root
ssh mastodonuser@ваш_ip_сервера # Вход под новым пользователем

Настройка SSH-ключей (рекомендуется)

Для повышения безопасности рекомендуется использовать SSH-ключи вместо паролей. Если вы ещё не настроили их, сделайте это на вашей локальной машине, а затем скопируйте публичный ключ на сервер.


# На вашей локальной машине:
ssh-keygen -t ed25519 -C "[email protected]" # Создание нового SSH-ключа (если нет)
ssh-copy-id mastodonuser@ваш_ip_сервера      # Копирование публичного ключа на сервер

После успешного копирования ключа, отключите аутентификацию по паролю в /etc/ssh/sshd_config для пользователя root и разрешите только SSH-ключи для всех пользователей:


sudo nano /etc/ssh/sshd_config

Найдите и измените следующие строки:


#PasswordAuthentication yes
PasswordAuthentication no
PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM yes

Сохраните изменения (Ctrl+X, Y, Enter) и перезапустите службу SSH:


sudo systemctl restart sshd

Настройка брандмауэра (UFW)

Включите брандмауэр UFW и разрешите только необходимые порты: SSH (22), HTTP (80) и HTTPS (443).


sudo apt install ufw -y     # Установка UFW, если не установлен
sudo ufw default deny incoming # Запретить все входящие соединения по умолчанию
sudo ufw default allow outgoing # Разрешить все исходящие соединения по умолчанию
sudo ufw allow OpenSSH      # Разрешить SSH (порт 22)
sudo ufw allow http         # Разрешить HTTP (порт 80)
sudo ufw allow https        # Разрешить HTTPS (порт 443)
sudo ufw enable             # Включить брандмауэр (подтвердите 'y')
sudo ufw status verbose     # Проверка статуса брандмауэра

Установка Fail2Ban

Fail2Ban помогает защитить сервер от атак методом подбора пароля, блокируя IP-адреса, с которых происходят неудачные попытки входа.


sudo apt install fail2ban -y # Установка Fail2Ban
sudo systemctl enable fail2ban # Включение автозапуска службы
sudo systemctl start fail2ban  # Запуск службы
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Создание локального конфига
sudo nano /etc/fail2ban/jail.local # Редактирование конфига для настройки

В файле jail.local можно настроить параметры, например, увеличить время блокировки или изменить количество попыток. Для начала достаточно стандартных настроек.


# В [DEFAULT] секции
bantime = 1h        # Время блокировки (1 час)
findtime = 10m      # Период, за который учитываются попытки (10 минут)
maxretry = 5        # Максимальное количество попыток до блокировки

Сохраните изменения и перезапустите Fail2Ban:


sudo systemctl restart fail2ban

Установка базовых утилит

Установим несколько полезных утилит, которые могут понадобиться в процессе настройки и дальнейшего обслуживания.


sudo apt install curl wget git htop unzip -y # Установка curl, wget, git, htop, unzip

Теперь ваш сервер готов к установке основного программного обеспечения для Mastodon.

Установка ПО — пошагово

Для работы Mastodon требуется несколько ключевых компонентов: база данных PostgreSQL, кэш-сервер Redis, среда выполнения Ruby, Node.js для фронтенда и веб-сервер Caddy. Мы будем использовать актуальные версии ПО, доступные в 2026 году.

1. Установка PostgreSQL 17

Mastodon использует PostgreSQL как основную базу данных. Установим версию 17, которая будет актуальной и стабильной в 2026 году.


# Добавление репозитория PostgreSQL 17
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Обновление списка пакетов и установка PostgreSQL 17
sudo apt update
sudo apt install postgresql-17 postgresql-client-17 -y

# Проверка статуса службы PostgreSQL
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

Создадим пользователя базы данных и саму базу для Mastodon. Замените ваш_пароль_бд на надёжный пароль.


sudo -u postgres psql -c "CREATE USER mastodon WITH PASSWORD 'ваш_пароль_бд';"
sudo -u postgres psql -c "CREATE DATABASE mastodon_production OWNER mastodon;"

2. Установка Redis 8

Redis используется Mastodon для кэширования, очередей и других задач, требующих быстрого доступа к данным в памяти. Установим версию 8.


# Установка Redis 8 из официального репозитория Ubuntu (или стороннего, если 8 не в LTS)
sudo apt install redis-server -y

# Проверка статуса службы Redis
sudo systemctl enable redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server

Убедитесь, что Redis настроен на прослушивание только локальных соединений (по умолчанию это так), и что постоянное хранение данных (persistence) включено (appendonly yes в /etc/redis/redis.conf). Это важно для предотвращения потери данных в случае перезапуска.

3. Установка Nginx (для некоторых конфигураций, но мы используем Caddy)

Хотя мы будем использовать Caddy в качестве основного веб-сервера, Nginx часто используется как прокси или для статики. Мы его установим на случай, если вы захотите использовать его в будущем, но для этого гайда он не обязателен.


sudo apt install nginx -y # Установка Nginx
sudo systemctl enable nginx # Включение автозапуска Nginx
sudo systemctl start nginx # Запуск Nginx
sudo ufw allow 'Nginx Full' # Разрешение HTTP/HTTPS через UFW для Nginx

4. Установка Ruby 3.4 и Bundler

Mastodon написан на Ruby on Rails. Для его работы потребуется актуальная версия Ruby, например, 3.4, и менеджер зависимостей Bundler. Мы будем использовать rbenv для управления версиями Ruby, что является хорошей практикой.


# Установка зависимостей для rbenv и Ruby
sudo apt install git curl autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev -y

# Установка rbenv
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# Установка Ruby 3.4.0
rbenv install 3.4.0
rbenv global 3.4.0
ruby -v # Проверка установленной версии Ruby

# Установка Bundler
gem install bundler --no-document

5. Установка Node.js 22 LTS и Yarn

Mastodon использует Node.js для компиляции фронтенд-активов и Yarn в качестве менеджера пакетов JavaScript.


# Установка Node.js 22 LTS (используем nvm для гибкости)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 22
nvm use 22
node -v # Проверка версии Node.js
npm -v  # Проверка версии npm

# Установка Yarn (классической версии 1.x)
npm install --global yarn
yarn -v # Проверка версии Yarn

6. Установка ImageMagick и FFmpeg

Эти утилиты необходимы Mastodon для обработки изображений, видео и аудио.


sudo apt install imagemagick ffmpeg libimage-exiftool-perl -y

7. Создание директории для Mastodon

Создадим директорию, куда будет установлен Mastodon, и назначим её владельцем нашего пользователя mastodonuser.


sudo mkdir -p /var/www/mastodon
sudo chown mastodonuser:mastodonuser /var/www/mastodon
cd /var/www/mastodon

8. Клонирование репозитория Mastodon

Загрузим исходный код Mastodon из официального репозитория GitHub. Мы установим версию 4.4.0.


git clone https://github.com/mastodon/mastodon.git .
git checkout v4.4.0 # Переключение на стабильную версию 4.4.0

9. Установка зависимостей Mastodon

Установим Ruby-гем и JavaScript-зависимости, необходимые для работы Mastodon.


bundle install --without development test # Установка Ruby-гемов
yarn install --pure-lockfile             # Установка JavaScript-зависимостей

10. Компиляция фронтенд-активов

Скомпилируем JavaScript и CSS файлы, необходимые для пользовательского интерфейса Mastodon.


RAILS_ENV=production bundle exec rails assets:precompile

На этом этапе основные компоненты установлены. Далее перейдём к конфигурации.

Конфигурация

После установки всех компонентов необходимо настроить Mastodon, базу данных, веб-сервер и обеспечить работу HTTPS.

1. Настройка файла окружения Mastodon (.env.production)

Mastodon использует переменные окружения для хранения конфигурации, особенно чувствительных данных, таких как пароли и ключи API. Создадим файл .env.production.


cp .env.production.sample .env.production
nano .env.production

Вот основные параметры, которые нужно настроить. Замените значения в угловых скобках на свои:


# Основные настройки
LOCAL_DOMAIN=<ваш_домен>             # Например, mastodon.example.com
PUBLIC_WEB_BASE_URL=https://<ваш_домен> # Полный URL вашего инстанса

# Настройки базы данных PostgreSQL
DB_HOST=localhost
DB_PORT=5432
DB_USER=mastodon
DB_NAME=mastodon_production
DB_PASS=<ваш_пароль_бд>

# Настройки Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# Настройки электронной почты (SMTP)
# Mastodon использует почту для регистрации, сброса паролей и уведомлений.
# Рекомендуется использовать внешний SMTP-сервис (SendGrid, Mailgun, Postmark и т.д.)
SMTP_SERVER=
SMTP_PORT=587
SMTP_LOGIN=<ваш_smtp_логин>
SMTP_PASSWORD=<ваш_smtp_пароль>
SMTP_FROM_ADDRESS=notifications@<ваш_домен>
# SMTP_AUTH_METHOD=plain
# SMTP_ENABLE_STARTTLS_AUTO=true

# Генерация секретных ключей (ВАЖНО!)
# Эти ключи должны быть уникальными и надёжными.
# Генерируйте их командой: bundle exec rake secret
SECRET_KEY_BASE=<сгенерированный_ключ_1>
OTP_SECRET=<сгенерированный_ключ_2>
DEVISE_SECRET=<сгенерированный_ключ_3>

# Ключи для подписи веб-пушей (VAPID)
# Генерируйте их командой: bundle exec rake mastodon:webpush:generate_vapid_key
VAPID_PRIVATE_KEY=<сгенерированный_приватный_ключ>
VAPID_PUBLIC_KEY=<сгенерированный_публичный_ключ>
VAPID_CONTACT_EMAIL=admin@<ваш_домен>

# S3-совместимое хранилище для медиафайлов (рекомендуется для масштабирования)
# Если не используете S3, Mastodon будет хранить файлы локально (по умолчанию).
# S3_ENABLED=true
# S3_BUCKET=<имя_вашего_бакета>
# AWS_ACCESS_KEY_ID=<ваш_access_key_id>
# AWS_SECRET_ACCESS_KEY=<ваш_secret_access_key>
# S3_REGION=<регион_бакета>
# S3_HOSTNAME= # Например, s3.eu-central-1.amazonaws.com
# S3_PROTOCOL=https
# S3_FORCE_PATH_STYLE=true # Для некоторых S3-совместимых хранилищ

Для генерации секретных ключей выполните следующие команды в директории Mastodon:


RAILS_ENV=production bundle exec rake secret
RAILS_ENV=production bundle exec rake secret
RAILS_ENV=production bundle exec rake secret
RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key

Каждый раз копируйте сгенерированный ключ в соответствующую переменную в .env.production.

2. Инициализация базы данных Mastodon

Примените миграции базы данных и создайте записи для по умолчанию.


RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake db:seed

3. Настройка веб-сервера Caddy с HTTPS

Caddy — современный веб-сервер, который автоматически выдаёт и продлевает SSL/TLS-сертификаты от Let's Encrypt. Это значительно упрощает настройку HTTPS.


# Установка Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y

# Создание конфигурационного файла Caddy
sudo nano /etc/caddy/Caddyfile

Добавьте следующую конфигурацию в /etc/caddy/Caddyfile, заменив ваш_домен на ваш реальный домен:


# Домен вашего Mastodon инстанса
<ваш_домен> {
  # Автоматический HTTPS
  tls admin@<ваш_домен> # Укажите свой административный email для Let's Encrypt

  # Проксирование запросов к приложению Mastodon
  reverse_proxy /api/ localhost:3000
  reverse_proxy /oauth/ localhost:3000
  reverse_proxy /authorize/ localhost:3000
  reverse_proxy /interact/ localhost:3000
  reverse_proxy /main/ localhost:3000
  reverse_proxy /auth/ localhost:3000
  reverse_proxy /admin/ localhost:3000
  reverse_proxy /settings/ localhost:3000
  reverse_proxy /web/ localhost:3000
  reverse_proxy /dist/ localhost:3000
  reverse_proxy /packs/ localhost:3000
  reverse_proxy /assets/ localhost:3000
  reverse_proxy /system/ localhost:3000
  reverse_proxy /api/v/streaming/ localhost:4000 {
    header_up Host {host}
    header_up X-Real-IP {remote_ip}
    header_up X-Forwarded-For {remote_ip}
    header_up X-Forwarded-Proto {scheme}
    websocket
  }
  reverse_proxy /api/v/pleroma/oauth/ localhost:3000
  reverse_proxy /api/v/pleroma/web/ localhost:3000
  reverse_proxy /api/v/activitypub/web/ localhost:3000
  reverse_proxy /api/v/activitypub/oauth/ localhost:3000

  # Отдача статических файлов напрямую
  root  /var/www/mastodon/public
  file_server

  # Заголовок HSTS для безопасности
  header {
    Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
  }

  # Логирование (опционально)
  log {
    output file /var/log/caddy/mastodon_access.log
    format console
  }
}

Создайте директорию для логов Caddy, если она не существует:


sudo mkdir -p /var/log/caddy
sudo chown caddy:caddy /var/log/caddy

Проверьте конфигурацию Caddy и перезапустите службу:


sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
sudo systemctl enable caddy
sudo systemctl start caddy
sudo systemctl status caddy

Убедитесь, что ваш домен указывает на IP-адрес вашего VPS в настройках DNS (A-запись).

4. Настройка Systemd для Mastodon

Mastodon состоит из нескольких процессов (веб, стриминг, воркеры), которые должны работать постоянно. Используем Systemd для управления ими.


sudo cp /var/www/mastodon/dist/mastodon-web.service /etc/systemd/system/
sudo cp /var/www/mastodon/dist/mastodon-sidekiq.service /etc/systemd/system/
sudo cp /var/www/mastodon/dist/mastodon-streaming.service /etc/systemd/system/

# Редактирование файлов служб для указания правильного пользователя
sudo sed -i 's/User=mastodon/User=mastodonuser/g' /etc/systemd/system/mastodon-web.service
sudo sed -i 's/Group=mastodon/Group=mastodonuser/g' /etc/systemd/system/mastodon-web.service
sudo sed -i 's/User=mastodon/User=mastodonuser/g' /etc/systemd/system/mastodon-sidekiq.service
sudo sed -i 's/Group=mastodon/Group=mastodonuser/g' /etc/systemd/system/mastodon-sidekiq.service
sudo sed -i 's/User=mastodon/User=mastodonuser/g' /etc/systemd/system/mastodon-streaming.service
sudo sed -i 's/Group=mastodon/Group=mastodonuser/g' /etc/systemd/system/mastodon-streaming.service

# Перезагрузка Systemd, включение и запуск служб
sudo systemctl daemon-reload
sudo systemctl enable mastodon-web mastodon-sidekiq mastodon-streaming
sudo systemctl start mastodon-web mastodon-sidekiq mastodon-streaming

# Проверка статуса служб
sudo systemctl status mastodon-web
sudo systemctl status mastodon-sidekiq
sudo systemctl status mastodon-streaming

5. Создание первого администратора

После запуска всех служб создайте первого администратора Mastodon.


RAILS_ENV=production bundle exec rake mastodon:setup

Следуйте инструкциям на экране, чтобы создать учётную запись администратора. Выберите "yes" для создания администратора.

6. Проверка работоспособности

Откройте ваш домен (например, https://ваш_домен) в браузере. Вы должны увидеть страницу регистрации/входа Mastodon. Проверьте, что HTTPS работает, и сертификат выдан Let's Encrypt.

Можно также проверить доступность через curl:


curl -I https://localhost:3000 # Проверка Mastodon Web
curl -I https://localhost:4000 # Проверка Mastodon Streaming
curl -I https://<ваш_домен>    # Проверка доступности через Caddy

Если всё настроено правильно, вы увидите HTTP-заголовки от Mastodon и Caddy.

Бэкапы и обслуживание

Регулярные бэкапы — это критически важный элемент любой работающей системы. Для Mastodon необходимо резервировать базу данных, медиафайлы и конфигурационные файлы.

Что бэкапить

  • База данных PostgreSQL: Содержит все записи пользователей, посты, уведомления, настройки и т.д. Это самая важная часть.
  • Медиафайлы: Изображения, видео и аудио, загруженные пользователями. По умолчанию они хранятся в /var/www/mastodon/public/system. Если вы используете S3-совместимое хранилище, вам не нужно бэкапить их локально, так как провайдер S3 уже обеспечивает их сохранность.
  • Конфигурационные файлы: .env.production и файлы конфигурации веб-сервера (/etc/caddy/Caddyfile).

Простой скрипт автобэкапа (cron + restic)

Restic — отличный инструмент для создания зашифрованных, дедуплицированных бэкапов. Он может хранить бэкапы локально, на S3, SFTP и других хранилищах. Установим его:


sudo apt install restic -y

Создадим директорию для бэкапов и скрипт:


mkdir ~/backups
nano ~/backups/mastodon_backup.sh

Содержимое ~/backups/mastodon_backup.sh (замените <ваш_пароль_рестик> и <путь_к_репозиторию_рестик>):


#!/bin/bash

# Путь к репозиторию Restic (например, локальная папка или S3-совместимый endpoint)
# Пример для локальной папки: RESTIC_REPOSITORY="/mnt/backup_drive/mastodon_restic"
# Пример для S3: RESTIC_REPOSITORY="s3:https://s3.your-region.amazonaws.com/your-bucket-name"
# Не забудьте настроить переменные окружения для S3: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
export RESTIC_REPOSITORY="<путь_к_репозиторию_рестик>"
export RESTIC_PASSWORD="<ваш_пароль_рестик>" # Надёжный пароль для шифрования бэкапов

# Временная директория для дампа БД
BACKUP_DIR="/tmp/mastodon_backup_temp"
mkdir -p "$BACKUP_DIR"

# Дамп базы данных PostgreSQL
PGPASSWORD="<ваш_пароль_бд>" pg_dump -Fc -Z 9 -h localhost -U mastodon mastodon_production > "$BACKUP_DIR/mastodon_production.dump"

# Копирование конфига Mastodon
cp /var/www/mastodon/.env.production "$BACKUP_DIR/.env.production"
cp /etc/caddy/Caddyfile "$BACKUP_DIR/Caddyfile"

# Выполнение бэкапа с Restic
restic backup \
  --verbose \
  "$BACKUP_DIR" \
  /var/www/mastodon/public/system # Если медиафайлы хранятся локально, иначе пропустите

# Очистка старых бэкапов (хранить 7 ежедневных, 4 еженедельных, 12 ежемесячных, 1 ежегодный)
restic forget --prune \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 12 \
  --keep-yearly 1

# Удаление временных файлов
rm -rf "$BACKUP_DIR"

echo "Mastodon backup completed at $(date)"

Сделайте скрипт исполняемым:


chmod +x ~/backups/mastodon_backup.sh

Инициализируйте репозиторий Restic (выполните один раз):


restic init

Добавьте скрипт в Cron для ежедневного выполнения (например, в 3:00 ночи):


crontab -e

Добавьте строку:


0 3   * /home/mastodonuser/backups/mastodon_backup.sh >> /var/log/mastodon_backup.log 2>&1

Убедитесь, что пользователь mastodonuser имеет права на запись в /var/log/mastodon_backup.log.

Куда складывать

  • Внешний S3-совместимый объектный сторадж: Наиболее надёжный и масштабируемый вариант. Идеально подходит для хранения больших объёмов медиафайлов и бэкапов БД. Примеры: Amazon S3, DigitalOcean Spaces, Backblaze B2, MinIO.
  • Отдельный VPS: Можно использовать небольшой, дешёвый VPS с большим диском для хранения бэкапов по SFTP/SCP. Это обеспечивает географическое разделение.
  • Локальный диск: Если нет других вариантов, можно хранить бэкапы на том же VPS, но на отдельном логическом томе или в отдельной директории. Однако, это наименее надёжный вариант, так как при потере VPS вы потеряете и бэкапы.

Обновления: rolling vs maintenance window

Обновление Mastodon и базового ПО является важной частью обслуживания. Рекомендуется придерживаться следующей стратегии:

  • Обновления ОС и системного ПО (PostgreSQL, Redis, Caddy): Выполняйте их в течение запланированного "окна обслуживания" (maintenance window), когда активность пользователей минимальна. Перед крупными обновлениями всегда делайте бэкап.
  • Обновления Mastodon:
    • Минорные обновления (патчи): Обычно можно выполнять в "rolling" режиме, т.е. с минимальным простоем. Они часто не требуют миграции БД или изменения конфигурации.
    • Мажорные обновления (новые версии, например, с 4.3 на 4.4): Требуют более тщательной подготовки, включают миграции БД, перекомпиляцию ассетов и могут потребовать изменения конфигурации. Всегда планируйте для них окно обслуживания, делайте полный бэкап и внимательно читайте changelog.

Процесс обновления Mastodon обычно включает:


cd /var/www/mastodon
git pull origin main # Или git checkout vX.Y.Z для конкретной версии
bundle install --without development test
yarn install --pure-lockfile
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile
sudo systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming

Всегда проверяйте официальную документацию Mastodon для конкретных инструкций по обновлению до новой версии.

Troubleshooting + FAQ

В этом разделе собраны ответы на часто задаваемые вопросы и решения типичных проблем, которые могут возникнуть при развёртывании и эксплуатации Mastodon.

Какой VPS-конфиг минимально подойдёт?

Для запуска Mastodon с минимальным количеством пользователей (до 50) и без больших объёмов медиаконтента, минимальный конфиг должен включать 2 ядра CPU, 4 ГБ RAM и 80 ГБ NVMe SSD. Однако, рекомендуется иметь запас по ресурсам, особенно по оперативной памяти, чтобы обеспечить стабильную работу при пиковых нагрузках и будущий рост. Если вы планируете более активный инстанс, лучше сразу ориентироваться на 4 ядра CPU, 8 ГБ RAM и 200 ГБ NVMe SSD.

Что выбрать — VPS или dedicated для этой задачи?

Для большинства начинающих и средних инстансов Mastodon (до нескольких сотен активных пользователей) VPS будет оптимальным и экономически выгодным решением. Он обеспечивает достаточную производительность и гибкость. Dedicated сервер становится необходимым, когда ваш инстанс масштабируется до тысяч активных пользователей, генерирует терабайты медиаконтента или требует максимальной изолированности ресурсов и производительности. Переход на dedicated сервер — это логичный шаг при значительном росте сообщества.

Почему Mastodon не запускается после настройки?

Чаще всего это связано с неправильной конфигурацией в .env.production или проблемами с базой данных/Redis. Проверьте логи служб Systemd: sudo journalctl -u mastodon-web, sudo journalctl -u mastodon-sidekiq, sudo journalctl -u mastodon-streaming. Убедитесь, что все секретные ключи сгенерированы и корректно вставлены, а параметры подключения к PostgreSQL и Redis верны. Проверьте, что PostgreSQL и Redis запущены и доступны.

Не работает HTTPS или домен недоступен.

Убедитесь, что ваша DNS A-запись для домена указывает на IP-адрес вашего VPS. Проверьте, что Caddy запущен (sudo systemctl status caddy) и его конфигурация в /etc/caddy/Caddyfile не содержит ошибок (sudo caddy validate --config /etc/caddy/Caddyfile). Убедитесь, что порты 80 и 443 открыты в брандмауэре (sudo ufw status). Иногда Let's Encrypt может выдавать ошибки из-за неправильной DNS-записи или блокировки портов.

Медленная работа Mastodon или ошибки 502/503.

Это может указывать на недостаток ресурсов, особенно RAM. Проверьте использование памяти с помощью htop. Убедитесь, что mastodon-sidekiq работает, так как он обрабатывает фоновые задачи и очереди. Если Sidekiq перегружен, это может замедлить работу всего инстанса. Рассмотрите увеличение количества воркеров Sidekiq или обновление VPS до более мощного плана. Также проверьте логи приложения на наличие ошибок.

Как обновить Mastodon до новой версии?

Подробный процесс обновления описан в разделе "Бэкапы и обслуживание". Кратко: сделайте бэкап, остановите службы Mastodon, получите новую версию из Git, установите новые зависимости, примените миграции базы данных, скомпилируйте ассеты, затем запустите службы. Всегда читайте официальные release notes для конкретной версии, так как могут быть специфические шаги.

Как создать нового пользователя-администратора?

Если вы хотите создать дополнительного администратора или потеряли доступ к первому, вы можете сделать это, выполнив команду в директории Mastodon: RAILS_ENV=production bundle exec rake mastodon:create_account. Вам будет предложено ввести имя пользователя, email и пароль, а затем подтвердить, что это будет администраторская учётная запись.

Как настроить отправку электронной почты?

Настройки SMTP задаются в файле .env.production. Убедитесь, что вы указали корректные SMTP_SERVER, SMTP_PORT, SMTP_LOGIN, SMTP_PASSWORD и SMTP_FROM_ADDRESS. Протестировать отправку почты можно, попробовав зарегистрировать нового пользователя или сбросить пароль. Если почта не отправляется, проверьте логи почтового сервиса и логи Mastodon на предмет ошибок подключения к SMTP-серверу.

Выводы и следующие шаги

Поздравляем! Вы успешно развернули собственный инстанс Mastodon на VPS, настроили все необходимые компоненты и обеспечили его работу с автоматическим HTTPS и системой резервного копирования. Теперь вы являетесь владельцем независимой социальной платформы, готовой к приёму пользователей и взаимодействию с Fediverse.

Следующие шаги для развития вашего инстанса могут включать:

  • Масштабирование хранилища медиафайлов: Если ваш инстанс будет расти, рассмотрите перенос медиафайлов в S3-совместимое объектное хранилище, чтобы освободить место на VPS и повысить надёжность.
  • Мониторинг производительности: Настройте инструменты мониторинга (например, Prometheus + Grafana) для отслеживания загрузки CPU, RAM, диска, а также метрик Mastodon, чтобы своевременно реагировать на проблемы.
  • Тонкая настройка и оптимизация: Изучите дополнительные параметры конфигурации Mastodon, PostgreSQL и Redis для оптимизации производительности под вашу конкретную нагрузку.

Поделиться этой записью:

развёртывание mastodon на vps: полный гайд по установке и конфигурации
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.