2.3 KiB
2.3 KiB
Деплой на VPS (инкрементальный)
Скрипт scripts/deploy-vps.mjs загружает содержимое public/ на VPS, передавая только изменённые файлы.
Принцип работы
- Манифест (
.deploy-manifest.json) хранитmtimeиsizeкаждого файла с прошлого деплоя. - При запуске скрипт сканирует
public/, сравнивает с манифестом:- Файлы с изменившимся
mtimeилиsize— загружаются. - Файлы, которых нет локально, но есть в манифесте — удаляются с сервера.
- Файлы с изменившимся
- Изменённые файлы пакуются в
tarи передаются одним SSH-соединением (без сжатия, чтобы не тратить CPU на уже сжатые медиа). - Манифест обновляется после успешного деплоя.
При первом запуске (манифест пуст) заливаются все файлы — ~3 минуты на ~400 файлов. Повторный деплой (1–10 изменившихся файлов) — 2–5 секунд.
Запуск
npm run deploy:vps
# или напрямую
node scripts/deploy-vps.mjs [sourceDir]
По умолчанию sourceDir = public.
Рецепты
Только в Coolify
Запрос пользователя: «задеплой в Coolify», «задеплой на VPS».
npm run deploy:vps
Нужны разрешения: all (SSH-ключ ~/.ssh/beget, доступ к файлам public/).
Везде (VPS + GitVerse)
npm run deploy
Выполняет deploy:vps, затем sync-gitverse.
Конфигурация
- SSH-ключ:
~/.ssh/beget - Хост:
root@155.212.186.39 - Целевая папка:
/data/static-site - Манифест:
.deploy-manifest.jsonв корне проекта (не коммитится)
Сброс манифеста
Если нужно залить всё с нуля — удалить .deploy-manifest.json:
rm .deploy-manifest.json