Требования к окружению
Серверный состав: Linux x86-64, Node.js 24, npm, MongoDB 8, приватное постоянное файловое хранилище и HTTPS reverse proxy. Для браузера нужны JavaScript и cookie.
В исходном снимке используются Nuxt 4.5.1, Vue 3.5.40 и Mongoose 9.9.1. Для установки требуются источники точных зависимостей из package-lock.json. Совместимость конкретных редакций ОС определяется испытаниями.
Подготовка конфигурации
- Получите исходный экземпляр через согласованный закрытый канал и проверьте контрольные суммы.
- Создайте отдельную MongoDB и пользователя с правами только на базу приложения.
- Подготовьте приватный .env по .env.example. Укажите MONGODB_URI, постоянный DOCUMENT_LOCAL_STORAGE_PATH и независимые ключи STORAGE_SETTINGS_ENCRYPTION_KEY и INTERNAL_TASK_CONFIDENTIAL_DATA_ENCRYPTION_KEY.
- Настройте HTTPS. Для обычной эксплуатации session cookie должна быть Secure.
- Заполняйте параметры внешних сервисов только при использовании соответствующих функций; не переносите демонстрационные ключи в рабочее окружение.
Сборка и запуск
ecosystem.config.cjs требует читаемый PEM-файл корневого CA в NODE_EXTRA_CA_CERTS. Сервис должен быть доступен через HTTPS reverse proxy. Production-артефакт самостоятельно не загружает .env; параметры передаются окружением и private runtimeConfig.
В пустой базе создайте первого администратора локальным POST /api/setup с JSON-полями name, email и password (8–128 символов). Используйте защищённый запрос без сохранения пароля в истории команд. При существующих пользователях setup возвращает 409.
npm ci --include=dev
npm run build
# Для запуска через PM2 после подготовки .env и корневого CA:
set -a
source .env
set +a
pm2 startOrReload ecosystem.config.cjs --env production --update-env
pm2 saveРезервирование и обновление
Перед обновлением сохраните согласованный снимок MongoDB, приватных файлов, ключей, конфигурации и текущего артефакта. Проверяйте восстановление на отдельной базе и в отдельном каталоге.
Штатный restart.sh выполняет fast-forward Git, установку зависимостей, сборку, PM2 reload и проверку /login. Миграции выполняются отдельно. Для распакованного архива без .git этот скрипт не используется.
При откате необходимо учитывать совместимость схемы данных. После запуска проверьте вход, целевой пользовательский сценарий, приватное скачивание файлов и отказ доступа к чужим объектам.