Перейти к содержимому
RU
Установка и обновление6 мин на чтение

Установка

Установите на новый сервер Linux с помощью пошагового установщика или подготовьте развертывание релиза вручную.

На этой странице

1. Скачайте установщик

После подготовки нового сервера Linux скачайте установщик install.sh одной командой:

bash
wget https://meeting.janickiy.com/downloads/install.sh

2. Запустите сборку из исходного кода с подсказками

Сборка выполняется на этом сервере и может занять много времени. Для публичного репозитория не требуется токен GitHub или SSH-ключ. При обнаружении уязвимостей с высоким или критическим уровнем опасности сборка не выполняется; установщик не предлагает пропустить эту проверку.

Чтобы намеренно выбрать другую проверенную ревизию, выполните команду sudo bash install.sh --ref, а затем укажите её ветку, тег или полный идентификатор коммита. Старые параметры --channel и --bundle не поддерживаются этим установщиком на основе исходного кода.

  1. Подтвердите установку отсутствующих зависимостей, если это необходимо. Установка Docker предлагается отдельно, если она не установлена.
  2. Просмотрите репозиторий, выбранный коммит и целевую архитектуру, а затем подтвердите загрузку и сборку исходного кода.
  3. Дождитесь завершения сборки бэкенда, фронтенда и вспомогательных образов. Рабочий процесс проверяет происхождение исходного кода, идентификационные данные образов, контрольные суммы, отчёты об уязвимостях и спецификации программного обеспечения.
  4. Если проверка не пройдена, прочтите сообщение об ошибке и устраните причину. Установщик сохраняет каталог source-build и выводит команду для возобновления выполнения завершённых этапов.
bash
sudo bash install.sh

3. Настройте экземпляр

Текущие подсказки в командной строке отображаются на русском языке. Каталог установки по умолчанию — /opt/meetspace, проект Compose — meetspace, а сеть — 172.30.240.0/24. Используйте выбранные вами значения во всех последующих командах.

Мастер использует жесткую схему: S3-совместимое объектное хранилище предоставляется SeaweedFS под именем сервиса minio; Prometheus включен, а Grafana не используется. Не подключайте существующий том данных MinIO к SeaweedFS, так как у них разные форматы хранения на диске.

  1. Введите имя хоста и непосредственно назначенный публичный IPv4-адрес сервера. DNS должен разрешать запросы именно к этому адресу, без использования прокси-сервера CDN или записи AAAA.
  2. Выберите новый каталог для установки, например /opt/meetspace, новое имя проекта Compose и непересекающуюся частную сеть /24.
  3. Выберите Let’s Encrypt или существующий каталог с сертификатами. Ознакомьтесь с условиями использования сертификатов и портами, которые предлагает мастер.
  4. Ознакомьтесь с полным списком настроек. Подтверждение в терминале — это слово на русском «УСТАНОВИТЬ». Введите его, когда будете готовы завершить установку.
  5. Дождитесь, пока мастер сохранит независимые секреты, загрузит проверенные образы, запустит зависимости, выполнит миграцию базы данных и запустит приложение.
  6. После прохождения проверки HTTPS и версии при необходимости создайте первую учетную запись пользователя. Это обычная учетная запись пользователя, а не администратора.

4. Проверка и управление установкой

Команда logs выводит 100 последних строк. Чтобы просмотреть данные по всем сервисам, не указывайте имя сервиса. При создании учетной записи используется проверенный HTTPS и скрытое вводе данных для входа. Если создать учетную запись не удалось, это не приведет к отмене завершенной установки сервера.

Войдите на сайт и выполните функциональные проверки, описанные в разделе «Перед началом работы», в том числе с помощью вызова из внешней сети. Сохраните вывод команды status и идентификаторы общедоступных версий вместе с записью о развертывании.

Путь по умолчаниюСодержимое
/opt/meetspace/config/meetspace.envНастройки среды выполнения и секретные данные; доступны только для чтения пользователю root.
/opt/meetspace/config/Сгенерированные переопределения Compose и конфигурация прокси-сервера HTTPS.
/opt/meetspace/certs/Сертификат и закрытый ключ.
/opt/meetspace/secrets/Учетные данные для мониторинга.
/opt/meetspace/storage/Рабочие файлы для записи; принадлежат UID/GID 1000:1000.
/opt/meetspace/bundle/Проверенный архив образов, манифесты, отчеты, инструменты развертывания и исходный код.
/opt/meetspace/installation.jsonПараметры установки, коммит исходного кода и состояние завершения.
bash
sudo /opt/meetspace/manage.sh status
sudo /opt/meetspace/manage.sh logs api
sudo /opt/meetspace/manage.sh logs worker
sudo /opt/meetspace/manage.sh create-account

Извлечение исходного кода вручную с помощью пошаговой настройки

Если вы предпочитаете самостоятельно проверять и получать исходный код, а не использовать загруженный файл bootstrap, извлеките проверенную коммитующую версию и запустите вспомогательную программу для сборки исходного кода. В этом методе по-прежнему используется тот же интерактивный мастер сборки и настройки. Сначала установите Git и Python 3 и проверьте извлеченные скрипты перед выполнением последней команды.

Извлечение должно быть выполнено без ошибок, а вспомогательная программа для сборки исходного кода проверяет выбранную ревизию. Требования к Linux, Docker, ресурсам, DNS, TLS и брандмауэру остаются прежними. Это метод установки с нуля, а не обновления.

bash
git clone https://github.com/janickiy/meet-space.git meetspace-source
cd meetspace-source
git checkout --detach 12ba606bb98c10638fa6512d970f57c4ebe70de0
git status --short
git rev-parse HEAD
sudo python3 -I scripts/install/from-source.py "$PWD"

Сборка пакета для развертывания вручную

Используйте этот способ только в том случае, если вы сами управляете артефактами релизов. Начните с чистого проверенного извлечения, подготовьте доступ к реестру Docker и выберите новый каталог для артефактов за пределами репозитория. Замените приведенные ниже значения версии и префикс реестра на свои. Используйте linux/arm64 вместо linux/amd64, если это целевая архитектура для развертывания.

В примере используется классическая схема и упаковка в реестр. Настройка и развертывание сервера не выполняются. Показан дайджест сканирования, выбранный установщиком из проверенного источника. Оцените его и полученные отчеты о сканировании для своего релиза. Упаковка останавливается при обнаружении критических ошибок, поэтому успешная сборка сама по себе не означает, что пакет готов к развертыванию.

bash
RELEASE_VERSION=v0.0.0-example
RELEASE_COMMIT="$(git rev-parse HEAD)"
ARTIFACT_DIRECTORY=/srv/meet-artifacts/new-release
IMAGE_PREFIX=registry.example.com/team/meetspace
export TRIVY_IMAGE=aquasec/trivy@sha256:af6acf9a6b85dfe389a1941505c0ce9efef52a4719635e1a962f022a3d855daa
bash scripts/release/build.sh \
  --version "$RELEASE_VERSION" --commit "$RELEASE_COMMIT" \
  --registry "$IMAGE_PREFIX" --output "$ARTIFACT_DIRECTORY/build" \
  --layout classic --platform linux/amd64
bash scripts/release/package.sh \
  --build "$ARTIFACT_DIRECTORY/build/build.json" \
  --output "$ARTIFACT_DIRECTORY/package" --mode registry

Полностью ручное развертывание с помощью инструментов для релизов

Для среды, управляемой оператором, используйте чистую проверку, проверенный пакет релиза и соответствующий макет Compose. Приведенные ниже команды иллюстрируют классический рабочий процесс подготовки репозитория, а не проект meetspace для автономного установщика. Замените все пути, имена хостов и версии в примерах на утвержденные вами значения.

Сначала подготовьте сервер и артефакты релиза. scripts/release/build.sh создает неизменяемые образы приложений для выбранной версии, полного коммита, префикса реестра и платформы. scripts/release/package.sh сканирует и упаковывает эти образы в режиме реестра, архива или локального режима. Для стейкинга и продакшена требуется просканированный реестр или архивный пакет из чистого исходного кода; локальный режим предназначен только для репетиций. Перед упаковкой установите TRIVY_IMAGE на просканированный образ, закрепленный по дайджесту.

  1. Подготовьте отдельный проект для стейкинга и независимые серверы PostgreSQL, объектное хранилище, брокер и хранилище секретов. Храните каталоги с конфигурацией и артефактами за пределами исходного репозитория.
  2. Скопируйте .env.production.example в выбранный защищенный путь к конфигурации и установите для него режим доступа 0600. Замените все пустые секреты и значения example.invalid; не используйте пароли из .env.example для разработки.
  3. Установите PUBLIC_FRONTEND_URL, MINIO_PUBLIC_ENDPOINT и WS_ALLOWED_ORIGINS на реальный HTTPS-адрес. Установите MEDIA_NAT_IPS, TURN_PUBLIC_IP, TURN_REALM и TURN_URLS для настроенной вами сети. Доверяйте только своим реальным прокси-адресам в HTTP_TRUSTED_PROXIES.
  4. Сгенерируйте JWT_SECRET, MEDIA_TICKET_SECRET, MEDIA_INTERNAL_SECRET, WORKER_INTERNAL_SECRET, METRICS_SECRET и TURN_SHARED_SECRET независимо друг от друга. Последовательно настройте учетные данные базы данных, Redis, брокера и хранилища объектов в своих сервисах и клиентах.
  5. Создайте RECORDER_STORAGE_DIR с владельцем 1000:1000 и правами 0750. В TLS_CERT_DIR и TURN_TLS_CERT_DIR укажите каталоги с fullchain.pem и privkey.pem, доступными контейнерам для чтения. Подготовьте METRICS_TOKEN_FILE, а для классической конфигурации — также GRAFANA_PASSWORD_FILE.
  6. Создайте и упакуйте проверенный исходный код или получите надежный неизменяемый пакет. Перенесите его манифест, архив изображений, если применимо, проверьте отчеты и контрольные суммы, не изменяя их.
  7. Проверьте среду, загрузите или извлеките ее образы, примените миграции в явном виде и выполните развертывание. Значение AUTO_MIGRATE остается равным false в рабочей конфигурации.
bash
STAGING_CONFIG=/srv/meet/config/staging.env
RELEASE_MANIFEST=/srv/meet/releases/REVIEWED_VERSION/release.json
bash scripts/release/release.sh validate \
  --environment staging --project recorder-staging \
  --env-file "$STAGING_CONFIG" --manifest "$RELEASE_MANIFEST"
bash scripts/release/release.sh pull \
  --environment staging --project recorder-staging \
  --env-file "$STAGING_CONFIG" --manifest "$RELEASE_MANIFEST"
bash scripts/release/release.sh migrate \
  --environment staging --project recorder-staging \
  --env-file "$STAGING_CONFIG" --manifest "$RELEASE_MANIFEST"
bash scripts/release/release.sh deploy \
  --environment staging --project recorder-staging \
  --env-file "$STAGING_CONFIG" --manifest "$RELEASE_MANIFEST"