- BRAINYCP_DEPLOY_GUIDE.md: complete human deployment guide - AI_DEPLOY_CONTEXT.md: machine-readable deploy instructions for AI agents - sync-production.sh: universal deployment script (full/quick/status/logs/backup) - DEPLOY_PLAN.md: step-by-step deployment plan - DEPLOY_AUDIT_REPORT.md: server audit results - MIGRATION_AUDIT_REPORT.md: MySQL migration complexity analysis - SERVER_AUDIT_REPORT.md: server environment audit - Update README.md with BrainyCP deploy workflow and Git sync instructions Refs: production server 46.175.149.131, domain tenerifeprop.es
91 lines
4.9 KiB
Markdown
91 lines
4.9 KiB
Markdown
# Аудит сервера и план деплоя TenerifeProp
|
||
|
||
## Общие данные
|
||
- **Сервер**: Ubuntu 22.04 (Jammy), IP `46.175.149.131`
|
||
- **Панель**: BrainyCP (пользователь `nero`)
|
||
- **Домен**: `tenerifeprop.es` (SSL Let's Encrypt активен)
|
||
- **Папка сайта**: `/home/nero/sites/tenerifeprop.es`
|
||
|
||
## Архитектура текущего сервера (BrainyCP)
|
||
|
||
```
|
||
Internet → Nginx (BrainyCP) → Proxy_pass → Node.js (stub на порту 3003)
|
||
↑
|
||
SSL (Let's Encrypt)
|
||
```
|
||
|
||
BrainyCP создала:
|
||
1. Vhost Nginx с `proxy_pass` на `127.0.0.1:3003`
|
||
2. SSL-сертификат Let's Encrypt
|
||
3. Systemd unit `nodejs@3003.service`, запускающий `index.js`
|
||
4. Заглушку `index.js` (заглушка BrainyCP)
|
||
|
||
## Ключевой конфликт стеков
|
||
|
||
| Компонент | Проект TenerifeProp | Что предоставляет BrainyCP |
|
||
|-----------|---------------------|---------------------------|
|
||
| **Runtime** | Bun (`bun run src/server/index.ts`) | Node.js v20.10.0 (только) |
|
||
| **БД** | `bun:sqlite` (SQLite) | Нет специфической поддержки |
|
||
| **Статика** | `serveStatic` из `hono/bun` | Nginx обрабатывает статику |
|
||
| **Фреймворк** | Hono | Работает под Node.js без `hono/bun` |
|
||
|
||
## Варианты решения
|
||
|
||
### Вариант 1: Установить Bun на сервере (РЕКОМЕНДУЕТСЯ)
|
||
|
||
BrainyCP устанавливает Node.js через `apt`, но на сервере есть root-доступ. Bun можно установить отдельно — он не конфликтует с системным Node.js.
|
||
|
||
**Преимущества:**
|
||
- Не требуется переписывать код
|
||
- `bun:sqlite` и `hono/bun` работают из коробки
|
||
- SQLite-файл просто скопировать
|
||
|
||
**Шаги:**
|
||
1. Установить Bun (в `$HOME/.bun` или глобально).
|
||
2. Загрузить файлы проекта (`src/`, `public/`, `data/`, `package.json`, `bun.lock`) в `/home/nero/sites/tenerifeprop.es`.
|
||
3. Создать `.env` с `PORT=3003`, `NODE_ENV=production`.
|
||
4. Установить зависимости: `bun install --production`.
|
||
5. Остановить `nodejs@3003.service`.
|
||
6. Запустить проект через PM2.
|
||
7. Проверить `curl http://localhost:3003/api/settings`.
|
||
|
||
### Вариант 2: Переписать проект под Node.js (НЕ РЕКОМЕНДУЕТСЯ)
|
||
|
||
Если категорически не ставить Bun, нужно:
|
||
- Заменить `import { Database } from 'bun:sqlite'` на `better-sqlite3`.
|
||
- Заменить `import { serveStatic } from 'hono/bun'` на `import { serveStatic } from 'hono/node-server'`.
|
||
- Пересоздать `bun.lock` в `package-lock.json`.
|
||
- Протестировать всё заново.
|
||
|
||
**Минусы:** высокий риск багов, новые зависимости, перетестировать всё.
|
||
|
||
## Что нужно от тебя для деплоя
|
||
|
||
| Данные | Пояснение |
|
||
|--------|-----------|
|
||
| **SSH логин/пароль** | Доступ к серверу (root) |
|
||
| **Домен** | `tenerifeprop.es` |
|
||
| **Порт** | `3003` (уже выделен BrainyCP) |
|
||
| **Env vars** | `RESEND_API_KEY`, `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` |
|
||
|
||
### Команды для копирования файлов (без SSH)
|
||
```bash
|
||
# С локальной машины
|
||
scp -r /home/swp/Projects/TenerifeProp/src nero@46.175.149.131:/home/nero/sites/tenerifeprop.es/
|
||
scp -r /home/swp/Projects/TenerifeProp/public nero@46.175.149.131:/home/nero/sites/tenerifeprop.es/
|
||
scp /home/swp/Projects/TenerifeProp/package.json nero@46.175.149.131:/home/nero/sites/tenerifeprop.es/
|
||
scp /home/swp/Projects/TenerifeProp/bun.lock nero@46.175.149.131:/home/nero/sites/tenerifeprop.es/
|
||
```
|
||
|
||
## Риски
|
||
|
||
1. **Обновление BrainyCP** может перезаписать Nginx-конфиг — нужно проверять после обновлений.
|
||
2. **Bun не в репозиториях** — обновляется вручную (`bun upgrade`).
|
||
3. **Systemd unit** — BrainyCP управляет только `nodejs@3003.service`. Если остановить его и запустить PM2 — всё нормально, но кнопка "Перезапустить хост" в BrainyCP перезапустит заглушку, а не ваш проект.
|
||
|
||
## Итог
|
||
|
||
**Рекомендация:** Установить Bun и запустить проект на нём. Nginx-прокси уже настроена BrainyCP, SSL работает. Нужно только загрузить файлы проекта, установить зависимости и заменить заглушку на реальный процесс.
|
||
|
||
Если подтвердишь — выполню деплой.
|