Развертывание Repovio
Стек Compose Repovio запускает PostgreSQL, один раз применяет миграцию Prisma, а затем запускает API и веб-приложения. Он не завершает TLS. Поместите веб-службы и службы API за обратным прокси-сервером, которому принадлежат общедоступное имя хоста и сертификаты.
Предварительные условия
- Docker Engine с Docker Compose v2. — DNS-запись для общедоступного имени хоста. — Обратный прокси-сервер, который получает и обновляет сертификаты TLS. — Каталог частного сервера, доступный для чтения только администраторам развертывания.
Стек Compose сохраняет данные PostgreSQL, включая нормализованные изображения профиля пользователя, в томе с именем
repovio-postgres. Не удаляйте этот том, если вы намеренно не хотите удалить все данные 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. Привяжите порты контейнера к петле, когда обратный прокси-сервер работает на том же хосте:
REPOVIO_API_PORT=127.0.0.1:3001
REPOVIO_WEB_PORT=127.0.0.1:3000
В противном случае ограничьте доступ к портам 3000 и 3001 с помощью брандмауэра хоста. Никогда не открывайте контейнер PostgreSQL.
Шаг 5. Установите REPOVIO_VERSION в .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_POSTGRES_VOLUME точное имя существующего тома. Сохраните учетные данные базы данных и ключ шифрования; для
брендинга не требуется копирование или сброс базы данных.
Шаг 1. Создайте и проверьте резервную копию базы данных перед изменением изображений.
Шаг 2. Установите для REPOVIO_VERSION точную версию выпуска в .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. Установите для REPOVIO_VERSION в .env последнюю заведомо исправную версию образа.
Шаг 3: Запустите docker compose pull и docker compose up --detach --wait.
Шаг 4. Если новая версия перенесла базу данных несовместимо, остановите API и Интернет, восстановите совместимую резервную копию, а затем
снова запустите предыдущую версию образа.
Никогда не используйте docker compose down --volumes в качестве команды обновления или отката: он удаляет указанный
том PostgreSQL.