# Обновление кода на Ubuntu из архива Этот архив предназначен для обновления кода проекта `meeting-assistant` поверх уже настроенного сервера. Архив не должен заменять серверные секреты, данные и runtime-артефакты: - `.env` - `data/` - `backend/.venv/` - `frontend/node_modules/` - `frontend/dist/` - `.git/` - модели Whisper/Gemma/Ollama - данные n8n - записи, аудио, транскрипты и отчёты ## 1. Перенести архив на сервер С Fedora или другой машины: ```bash scp meeting-assistant-code-update-*.zip deploy@UBUNTU_SERVER:/tmp/ ``` Если пользователь на сервере другой, замени `deploy`. ## 2. Зайти на сервер ```bash ssh deploy@UBUNTU_SERVER ``` ## 3. Сделать резервную копию текущего кода ```bash sudo cp -a /opt/ai_agent_bobik /opt/ai_agent_bobik.backup.$(date +%Y%m%d-%H%M%S) ``` Если проект лежит не в `/opt/ai_agent_bobik`, используй свой путь. ## 4. Распаковать архив во временную папку ```bash rm -rf /tmp/meeting-assistant-update mkdir -p /tmp/meeting-assistant-update unzip /tmp/meeting-assistant-code-update-*.zip -d /tmp/meeting-assistant-update ``` ## 5. Синхронизировать код поверх проекта ```bash rsync -avh --delete \ --exclude='.env' \ --exclude='.git/' \ --exclude='data/' \ --exclude='backend/.venv/' \ --exclude='frontend/node_modules/' \ --exclude='frontend/dist/' \ --exclude='*.log' \ /tmp/meeting-assistant-update/ \ /opt/ai_agent_bobik/ ``` Важно: слэш в конце `/tmp/meeting-assistant-update/` означает “скопировать содержимое папки”. ## 6. Проверить, что серверные настройки остались ```bash test -f /opt/ai_agent_bobik/.env && echo ".env на месте" ls -la /opt/ai_agent_bobik/data ``` ## 7. Применить миграции и пересобрать только сервисы приложения ```bash cd /opt/ai_agent_bobik docker compose -f infrastructure/docker-compose.yml run --rm migrator docker compose -f infrastructure/docker-compose.yml up -d --build backend frontend worker recording-cleanup ``` Если n8n, Ollama/Gemma, Whisper-модели и FFmpeg уже установлены отдельно, их не переустанавливай. Для n8n на другой машине достаточно, чтобы в серверном `.env` был правильный `N8N_WEBHOOK_URL`. ## 8. Проверить после обновления ```bash curl http://localhost:8000/health curl http://localhost:8000/health/db docker compose -f infrastructure/docker-compose.yml ps ``` ## 9. Если нужно откатиться ```bash sudo systemctl stop docker sudo rm -rf /opt/ai_agent_bobik sudo cp -a /opt/ai_agent_bobik.backup.YYYYMMDD-HHMMSS /opt/ai_agent_bobik sudo systemctl start docker cd /opt/ai_agent_bobik docker compose -f infrastructure/docker-compose.yml up -d ``` Подставь фактическое имя backup-папки.