Установка
Установите на новый сервер Linux с помощью пошагового установщика или подготовьте развертывание релиза вручную.
На этой странице
1. Скачайте установщик
После подготовки нового сервера Linux скачайте установщик install.sh одной командой:
wget https://meeting.janickiy.com/downloads/install.sh2. Запустите сборку из исходного кода с подсказками
Сборка выполняется на этом сервере и может занять много времени. Для публичного репозитория не требуется токен GitHub или SSH-ключ. При обнаружении уязвимостей с высоким или критическим уровнем опасности сборка не выполняется; установщик не предлагает пропустить эту проверку.
Чтобы намеренно выбрать другую проверенную ревизию, выполните команду sudo bash install.sh --ref, а затем укажите её ветку, тег или полный идентификатор коммита. Старые параметры --channel и --bundle не поддерживаются этим установщиком на основе исходного кода.
- Подтвердите установку отсутствующих зависимостей, если это необходимо. Установка Docker предлагается отдельно, если она не установлена.
- Просмотрите репозиторий, выбранный коммит и целевую архитектуру, а затем подтвердите загрузку и сборку исходного кода.
- Дождитесь завершения сборки бэкенда, фронтенда и вспомогательных образов. Рабочий процесс проверяет происхождение исходного кода, идентификационные данные образов, контрольные суммы, отчёты об уязвимостях и спецификации программного обеспечения.
- Если проверка не пройдена, прочтите сообщение об ошибке и устраните причину. Установщик сохраняет каталог source-build и выводит команду для возобновления выполнения завершённых этапов.
sudo bash install.sh3. Настройте экземпляр
Текущие подсказки в командной строке отображаются на русском языке. Каталог установки по умолчанию — /opt/meetspace, проект Compose — meetspace, а сеть — 172.30.240.0/24. Используйте выбранные вами значения во всех последующих командах.
Мастер использует жесткую схему: S3-совместимое объектное хранилище предоставляется SeaweedFS под именем сервиса minio; Prometheus включен, а Grafana не используется. Не подключайте существующий том данных MinIO к SeaweedFS, так как у них разные форматы хранения на диске.
- Введите имя хоста и непосредственно назначенный публичный IPv4-адрес сервера. DNS должен разрешать запросы именно к этому адресу, без использования прокси-сервера CDN или записи AAAA.
- Выберите новый каталог для установки, например /opt/meetspace, новое имя проекта Compose и непересекающуюся частную сеть /24.
- Выберите Let’s Encrypt или существующий каталог с сертификатами. Ознакомьтесь с условиями использования сертификатов и портами, которые предлагает мастер.
- Ознакомьтесь с полным списком настроек. Подтверждение в терминале — это слово на русском «УСТАНОВИТЬ». Введите его, когда будете готовы завершить установку.
- Дождитесь, пока мастер сохранит независимые секреты, загрузит проверенные образы, запустит зависимости, выполнит миграцию базы данных и запустит приложение.
- После прохождения проверки 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 | Параметры установки, коммит исходного кода и состояние завершения. |
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 и брандмауэру остаются прежними. Это метод установки с нуля, а не обновления.
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, если это целевая архитектура для развертывания.
В примере используется классическая схема и упаковка в реестр. Настройка и развертывание сервера не выполняются. Показан дайджест сканирования, выбранный установщиком из проверенного источника. Оцените его и полученные отчеты о сканировании для своего релиза. Упаковка останавливается при обнаружении критических ошибок, поэтому успешная сборка сама по себе не означает, что пакет готов к развертыванию.
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 на просканированный образ, закрепленный по дайджесту.
- Подготовьте отдельный проект для стейкинга и независимые серверы PostgreSQL, объектное хранилище, брокер и хранилище секретов. Храните каталоги с конфигурацией и артефактами за пределами исходного репозитория.
- Скопируйте .env.production.example в выбранный защищенный путь к конфигурации и установите для него режим доступа 0600. Замените все пустые секреты и значения example.invalid; не используйте пароли из .env.example для разработки.
- Установите PUBLIC_FRONTEND_URL, MINIO_PUBLIC_ENDPOINT и WS_ALLOWED_ORIGINS на реальный HTTPS-адрес. Установите MEDIA_NAT_IPS, TURN_PUBLIC_IP, TURN_REALM и TURN_URLS для настроенной вами сети. Доверяйте только своим реальным прокси-адресам в HTTP_TRUSTED_PROXIES.
- Сгенерируйте JWT_SECRET, MEDIA_TICKET_SECRET, MEDIA_INTERNAL_SECRET, WORKER_INTERNAL_SECRET, METRICS_SECRET и TURN_SHARED_SECRET независимо друг от друга. Последовательно настройте учетные данные базы данных, Redis, брокера и хранилища объектов в своих сервисах и клиентах.
- Создайте RECORDER_STORAGE_DIR с владельцем 1000:1000 и правами 0750. В TLS_CERT_DIR и TURN_TLS_CERT_DIR укажите каталоги с fullchain.pem и privkey.pem, доступными контейнерам для чтения. Подготовьте METRICS_TOKEN_FILE, а для классической конфигурации — также GRAFANA_PASSWORD_FILE.
- Создайте и упакуйте проверенный исходный код или получите надежный неизменяемый пакет. Перенесите его манифест, архив изображений, если применимо, проверьте отчеты и контрольные суммы, не изменяя их.
- Проверьте среду, загрузите или извлеките ее образы, примените миграции в явном виде и выполните развертывание. Значение AUTO_MIGRATE остается равным false в рабочей конфигурации.
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"