- 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
4.9 KiB
4.9 KiB
Аудит сервера и план деплоя 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 создала:
- Vhost Nginx с
proxy_passна127.0.0.1:3003 - SSL-сертификат Let's Encrypt
- Systemd unit
nodejs@3003.service, запускающийindex.js - Заглушку
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-файл просто скопировать
Шаги:
- Установить Bun (в
$HOME/.bunили глобально). - Загрузить файлы проекта (
src/,public/,data/,package.json,bun.lock) в/home/nero/sites/tenerifeprop.es. - Создать
.envсPORT=3003,NODE_ENV=production. - Установить зависимости:
bun install --production. - Остановить
nodejs@3003.service. - Запустить проект через PM2.
- Проверить
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)
# С локальной машины
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/
Риски
- Обновление BrainyCP может перезаписать Nginx-конфиг — нужно проверять после обновлений.
- Bun не в репозиториях — обновляется вручную (
bun upgrade). - Systemd unit — BrainyCP управляет только
nodejs@3003.service. Если остановить его и запустить PM2 — всё нормально, но кнопка "Перезапустить хост" в BrainyCP перезапустит заглушку, а не ваш проект.
Итог
Рекомендация: Установить Bun и запустить проект на нём. Nginx-прокси уже настроена BrainyCP, SSL работает. Нужно только загрузить файлы проекта, установить зависимости и заменить заглушку на реальный процесс.
Если подтвердишь — выполню деплой.