Развертывание Repovio
Архивный исходный снимок. Этикетки продуктов нормализованы до Repovio. Для этого исторического выпуска используйте без изменений идентификаторы конфигурации и ссылки на контейнеры из файлов развертывания с тегами.
Стек Compose Repovio запускает PostgreSQL, один раз применяет миграцию Prisma, а затем запускает API и веб-приложения. Он не завершает TLS. Поместите веб-службы и службы API за обратным прокси-сервером, которому принадлежат общедоступное имя хоста и сертификаты.
Предварительные условия
- Docker Engine с Docker Compose v2. — DNS-запись для общедоступного имени хоста. — Обратный прокси-сервер, который получает и обновляет сертификаты TLS. — Каталог частного сервера, доступный для чтения только администраторам развертывания.
Стек Compose сохраняет данные PostgreSQL, включая нормализованные изображения профиля пользователя, в томе с именем PostgreSQL, настроенном в файле Compose с тегами. Не удаляйте этот том, если вы намеренно не хотите удалить все данные Repovio.
Первое развертывание
Шаг 1. Ознакомьтесь с выпущенной версией Repovio и создайте файл частной среды:
cp .env.example .env
chmod 600 .env
Шаг 2. Замените все заполнители в .env, особенно POSTGRES_PASSWORD, оба URL-адреса базы данных, AUTH_JWT_SECRET и
TOKEN_ENCRYPTION_KEY. Сгенерируйте ключ шифрования с помощью:
openssl rand -base64 32
Шаг 3. Установите URL-адреса, видимые извне. Для развертывания по адресу https://repovio.example.com используйте:
PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback
CORS_ORIGIN=https://repovio.example.com
NUXT_PUBLIC_API_BASE_URL=https://repovio.example.com/api/v1
OAUTH_CALLBACK_URL=https://repovio.example.com/api/v1/provider-accounts/oauth/callback
Шаг 4. Привяжите порты контейнера к петле, когда обратный прокси-сервер работает на том же хосте:
Используйте переменные API и веб-порта в выпуске .env.example со значениями 127.0.0.1:3001 и 127.0.0.1:3000
соответственно. Имена исторических переменных отличаются от текущих выпусков Repovio.
В противном случае ограничьте доступ к портам 3000 и 3001 с помощью брандмауэра хоста. Никогда не открывайте контейнер PostgreSQL.
Шаг 5. Установите переменную выбора выпуска из тега .env.example в .env на точную пару выпущенных изображений, затем запустите стек:
docker compose pull
docker compose up --detach --wait
Сохраните это значение в .env, чтобы каждая последующая команда Compose использовала тот же API и ту же веб-версию.
Шаг 6. Подтвердите конечную точку работоспособности API локально:
curl --fail http://127.0.0.1:3001/api/health
Шаг 7. Откройте общедоступный URL-адрес Repovio и заполните однократная настройка при первом запуске, чтобы создать первый
системный администратор.
Обратный прокси и TLS
Проксируйте общедоступный веб-источник на порт 3000, а пути API и Socket.IO — на порт 3001. Например, блок сайта Caddy может использовать:
repovio.example.com {
reverse_proxy /api/* 127.0.0.1:3001
reverse_proxy /socket.io/* 127.0.0.1:3001
reverse_proxy /mcp 127.0.0.1:3001
reverse_proxy 127.0.0.1:3000
}
Прокси-сервер должен перенаправлять HTTP на HTTPS, проверять восходящие соединения в соответствии со своей локальной
политикой и сохранять общедоступное имя хоста. Настройте поставщиков OAuth с тем же URL-адресом обратного вызова HTTPS,
который установлен в OAUTH_CALLBACK_URL.
Обновление
Используйте точную конфигурацию и ссылки на изображения, поставляемые с этим историческим выпуском. Текущие инструкции по обновлению торговой марки применимы только при переходе на более новую версию Repovio; никогда не копируйте переименованные идентификаторы конфигурации в более старый файл Compose.
Шаг 1. Создайте и проверьте резервную копию базы данных перед изменением изображений.
Шаг 2: Установите переменную выбора версии из тега .env.example в точную версию выпуска в .env.
Шаг 3: Потяните и примените фиксатор:
docker compose pull
docker compose up --detach --wait
Служба migrate применяет ожидающие миграции Prisma до запуска API. Проверяйте его после каждого обновления:
docker compose logs migrate
Шаг 4. Прежде чем считать обновление завершенным, проверьте конечную точку работоспособности и панель мониторинга, обслуживаемую прокси-сервером.
Резервное копирование базы данных
Запускайте резервные копии из каталога развертывания. При этом на хост будет записан дамп специального формата PostgreSQL без вывода учетных данных и ввода их в командную строку:
mkdir -p backups
backup_file="backups/repovio-$(date +%F-%H%M%S).dump"
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -Fc "$POSTGRES_DB"' \
> "$backup_file"
pg_restore --list "$backup_file"
Храните зашифрованные копии вне хоста и периодически проверяйте восстановление на отдельной системе.
Восстановление базы данных
При восстановлении заменяются текущие объекты базы данных. Сначала создайте новую резервную копию и запланируйте время простоя.
docker compose stop api web
docker compose exec -T postgres sh -c 'pg_restore -U "$POSTGRES_USER" --clean --if-exists --no-owner -d "$POSTGRES_DB"' \
< backups/repovio-YYYY-MM-DD-HHMMSS.dump
docker compose up --detach --wait
После этого проверьте docker compose logs migrate и конечную точку работоспособности API. Восстановите дамп, сделанный
совместимой версией Repovio, при откате изменений схемы.
Откат
Шаг 1. Сохраните резервную копию, сделанную непосредственно перед неудачным обновлением.
Шаг 2. Установите для переменной выбора версии из тега .env.example в .env последнюю заведомо исправную версию образа.
Шаг 3: Запустите docker compose pull и docker compose up --detach --wait.
Шаг 4. Если новая версия перенесла базу данных несовместимо, остановите API и Интернет, восстановите совместимую резервную копию, а затем
снова запустите предыдущую версию образа.
Никогда не используйте docker compose down --volumes в качестве команды обновления или отката: он удаляет указанный
том PostgreSQL.