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

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

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

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется наличие прав суперпользователя (root) для установки программного обеспечения и настройки сети.

Необходимы следующие сетевые ресурсы: - Доменное имя в формате {{ prefix }}{{ server_id }}.{{ zone }}. - Открытые порты 80 и 443 для веб-трафика и SSL-сертификатов. - Доступ к интернету для загрузки образов Docker и компонентов системы.

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

Все файлы приложения и конфигурации размещаются в директории /opt/mastodon. Структура каталогов включает: - /opt/mastodon — корневая директория приложения. - /opt/mastodon/postgres14 — хранилище данных базы данных PostgreSQL. - /opt/mastodon/redis — хранилище данных кэша Redis. - /opt/mastodon/public/system — директория для хранения загружаемых пользователем файлов. - /opt/mastodon/.env.db — файл конфигурации для базы данных. - /opt/mastodon/.env.production — основной файл конфигурации приложения. - /opt/mastodon/docker-compose.yml — файл описания контейнеров.

Файлы конфигурации веб-сервера Nginx размещаются в /data/nginx/user_conf.d/. Сертификаты SSL хранятся в /etc/letsencrypt/.

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

Установка выполняется через развертывание контейнеров Docker. Версия приложения определяется переменной mastodon_version в конфигурации.

Процесс включает следующие этапы: 1. Установка Docker и Docker Compose на сервер. 2. Создание пользователя mastodon и группы для запуска сервисов. 3. Создание необходимых директорий с правами доступа. 4. Генерация секретных ключей для безопасности: - SECRET_KEY_BASE - OTP_SECRET - VAPID_PRIVATE_KEY и VAPID_PUBLIC_KEY - Ключи шифрования записей базы данных (ACTIVE_RECORD_ENCRYPTION_*). 5. Наполнение файла .env.production сгенерированными секретами. 6. Запуск миграций базы данных перед и после развертывания. 7. Создание начального административного пользователя.

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

Приложение состоит из нескольких контейнеров, описанных в файле docker-compose.yml.

Список контейнеров: - db — база данных PostgreSQL версии 14 (образ postgres:14-alpine). - redis — кэш Redis версии 7 (образ redis:7-alpine). - web — основной веб-сервер приложения (образ ghcr.io/mastodon/mastodon). - streaming — сервис потоковой передачи данных (образ ghcr.io/mastodon/mastodon-streaming). - sidekiq — фоновый обработчик задач (образ ghcr.io/mastodon/mastodon). - nginx — веб-сервер и прокси (образ jonasal/nginx-certbot:latest).

Контейнеры запускаются в двух сетях: - external_network — для доступа извне. - internal_network — для внутренней связи между сервисами.

Команда для запуска всех сервисов:

docker-compose -f /opt/mastodon/docker-compose.yml up -d

Базы данных

В качестве базы данных используется PostgreSQL. Конфигурация подключения хранится в файле .env.db и .env.production.

Параметры подключения: - Хост: db - Порт: 5432 - Пользователь: postgres - Имя базы данных: postgres - Пароль: задается через переменную окружения ansible_ssh_pass.

Данные базы данных сохраняются в том postgres14 внутри директории /opt/mastodon.

Прокси серверы

Для обработки входящего трафика и управления SSL-сертификатами используется контейнер Nginx с поддержкой Certbot.

Конфигурация Nginx включает: - Перенаправление трафика с порта 80 на порт 443 (HTTPS). - Настройка SSL-сертификатов для домена {{ prefix }}{{ server_id }}.{{ zone }}. - Проксирование запросов к веб-серверу на порт 3000. - Проксирование запросов к API потоковой передачи на порт 4000.

Файл конфигурации Nginx размещается по пути /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.{{ zone }}.conf.

Сертификаты автоматически генерируются и обновляются через Certbot, используя email hkadm@hostkey.com.

Настройки прав

Права доступа к файлам и директориям настроены следующим образом: - Директория /opt/mastodon и все поддиректории принадлежат пользователю mastodon и группе mastodon. - Режим доступа к директориям: 0755. - Файлы конфигурации .env.db и .env.production имеют режим доступа 0600 (доступно только владельцу). - Файл docker-compose.yml имеет режим доступа 0644. - Файл конфигурации Nginx имеет владельца root и режим доступа 0644.

Запуск, остановка и обновление

Управление сервисами осуществляется через команды Docker Compose в директории /opt/mastodon.

Запуск всех сервисов:

docker-compose -f /opt/mastodon/docker-compose.yml up -d

Остановка всех сервисов:

docker-compose -f /opt/mastodon/docker-compose.yml down

Перезапуск всех сервисов:

docker-compose -f /opt/mastodon/docker-compose.yml restart

Выполнение миграций базы данных:

docker-compose run --rm web bundle exec rails db:migrate

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

docker-compose -f /opt/mastodon/docker-compose.yml exec -T web bin/rails db:seed

Проверка готовности базы данных:

docker-compose -f /opt/mastodon/docker-compose.yml exec -T db pg_isready -U postgres

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