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

Отримати VPS arrow_forward
eco Початковий Туторіал

Розгортання Mastodon на VPS

calendar_month Jul 17, 2026 schedule 20 хв. читання visibility 19 переглядів
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 завершено о $(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 для конкретних інструкцій щодо оновлення до нової версії.

Вирішення проблем + 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.