Перейти к содержанию

Обзор развертывания Mastodon на сервере

Предварительные требования

Для корректной работы приложения требуются следующие параметры и компоненты:

  • Операционная система: Ubuntu.

  • Права доступа: Необходим доступ с правами sudo для установки системных пакетов и создания пользователя.

  • Доменное имя: Требуется настроенный домен в зоне hostkey.in.

  • Порты:

  • 3000/TCP — основной веб-интерфейс (Puma).

  • 4000/TCP — потоковая передача данных (Streaming API).

  • 80/TCP — HTTP (для перенаправления на HTTPS).

  • 443/TCP — HTTPS.

FDQN итоговой панели на домене hostkey.in

Параметр Значение
Префикс mastodon
Домен hostkey.in
Полный шаблон mastodon{Server_ID_from_Invapi}.hostkey.in

Структура файлов и каталогов

Все основные данные приложения сосредоточены в директории /opt/mastodon.

  • /opt/mastodon — корневая директория приложения.

  • /opt/mastodon/.env.db — конфигурация базы данных PostgreSQL.

  • /opt/mastodon/.env.production — основной файл переменных окружения приложения.

  • /opt/mastodon/docker-compose.yml — файл управления контейнерами Docker.

  • /opt/mastodon/postgres14 — данные базы данных PostgreSQL.

  • /opt/mastodon/redis — данные Redis.

  • /opt/mastodon/public/system — пользовательский контент (медиафайлы).

Процесс установки приложения

Развертывание выполняется путем автоматизированной настройки системы и запуска контейнеров:

  1. Подготовка среды: Устанавливается Docker и Docker Compose. Создается системный пользователь mastodon с домашним каталогом /opt/mastodon.

  2. Создание структуры: Создаются необходимые директории для данных PostgreSQL, Redis и медиафайлов с соответствующими правами доступа.

  3. Настройка конфигурации:

  4. Генерируются файлы переменных окружения .env.db и .env.production.

  5. Настраивается прокси-сервер Nginx для перенаправления трафика на соответствующие порты приложения.

  6. Генерация секретов: С помощью временного запуска контейнера генерируются уникальные ключи безопасности: SECRET_KEY_BASE, OTP_SECRET, а также ключи шифрования данных (ACTIVE_RECORD_ENCRYPTION) и VAPID-ключи для Web Push.

  7. Инициализация базы данных: Выполняется запуск контейнеров, выполнение миграций базы данных и создание начального администратора (seed data).

Права доступа и безопасность

  • Пользователь: Все файлы приложения в /opt/mastodon принадлежат пользователю mastodon.

  • Безопасность данных: Файлы конфигурации .env.db и .env.production имеют права доступа 0600, что ограничивает доступ к ним только владельцем.

  • Шифрование: Приложение использует механизмы шифрования ActiveRecord для защиты чувствительных данных в базе.

Базы данных

Приложение использует две системы хранения данных:

  1. PostgreSQL (версия 14): Используется как основная реляционная база данных. Данные хранятся в локальной директории ./postgres14.

  2. Redis: Используется для управления очередями и кэшированием. Данные хранятся в директории ./redis.

Контейнеры Docker и их запуск

Приложение разворачивается с использованием docker-compose и включает следующие сервисы:

Имя контейнера Образ Порты Тома (Volumes) Перезапуск
nginx jonasal/nginx-certbot:latest Host mode nginx_secrets:/etc/letsencrypt, /data/nginx/user_conf.d:/etc/nginx/user_conf.d unless-stopped
db postgres:14-alpine Внутренний (5432) ./postgres14:/var/lib/postgresql/data always
redis redis:7-alpine Внутренний (6379) ./redis:/data always
web ghcr.io/mastodon/mastodon:v4.3.1 3000:3000 ./public/system:/mastodon/public/system always
streaming ghcr.io/mastodon/mastodon-streaming:v4.3.1 4000:4000 — always
sidekiq ghcr.io/mastodon/mastodon:v4.3.1 — ./public/system:/mastodon/public/system always

Инструкция по обновлению приложения

Для обновления основного приложения необходимо выполнить следующие действия в директории /opt/mastodon:

docker compose pull && docker compose up -d

Это обновит образы до актуальных версий, указанных в конфигурации, и перезапустит контейнеры.

Расположение конфигурационных файлов и данных

  • Конфигурация приложения: /opt/mastodon/.env.production

  • Конфигурация базы данных: /opt/mastodon/.env.db

  • Данные пользователя (медиа): /opt/mastodon/public/system

Доступные порты для подключения

  • 3000 — Основной веб-интерфейс.

  • 4000 — API потоковой передачи данных.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×