Files
TenerifeProp/DEPLOY_PLAN.md
APAW Agent Sync 3bcc705e3b docs: add deployment guides, audit reports, and production sync scripts
- 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
2026-05-13 23:44:38 +01:00

181 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План деплоя TenerifeProp на BrainyCP (v2)
## Условия на сервере
- Панель: **BrainyCP**
- Папка проекта: **уже создана** панелью (например, `/var/www/{user}/data/www/{domain}/`)
- Выделен порт: **3003**
- Runtime: **Bun**
- БД: **SQLite** (WAL mode)
- Web-сервер: **Nginx** (управляется BrainyCP)
- SSL: настраивается через BrainyCP (Let's Encrypt)
## Архитектура деплоя
```
Интернет → Nginx (BrainyCP: 80/443) → Reverse Proxy → Bun (localhost:3003)
↑ ↑
SSL от BrainyCP PM2 / Systemd
```
Bun работает как standalone backend на `localhost:3003`. Nginx терминирует SSL и проксирует HTTP-запросы.
## Пошаговая инструкция
### 1. SSH на сервер
```bash
ssh user@your_server_ip
```
### 2. Установка Bun
```bash
curl -fsSL https://bun.sh/install | bash
source ~/.bashrc
bun --version
```
### 3. Загрузка проекта в папку BrainyCP
Если папка уже создана панелью (например, `/var/www/user/data/www/tenerifeprop.ru`):
- Загрузи туда файлы проекта (через FTP, SCP или Git).
- Убедись, что папка `data/` существует и доступна для записи.
```bash
cd /var/www/user/data/www/tenerifeprop.ru
# Если через git:
git clone https://git.softuniq.eu/UniqueSoft/TenerifeProp.git .
# Установка зависимостей:
bun install --production
```
### 4. Создание .env (PORT = 3003)
```bash
cat > .env <<'EOF'
NODE_ENV=production
PORT=3003
RESEND_API_KEY=your_key_here
TELEGRAM_BOT_TOKEN=your_token_here
TELEGRAM_CHAT_ID=your_chat_id_here
GITEA_API_URL=https://git.softuniq.eu/api/v1
GITEA_TOKEN=your_gitea_token_here
EOF
chmod 600 .env
```
### 5. Инициализация базы данных (если нужно)
```bash
# Создание БД и сидов
bun run src/db/init.ts
bun run src/db/seed.ts
# Убедись, что файл появился:
ls -la data/tenerifeprop.db
```
### 6. Запуск через PM2
```bash
bun add -g pm2
pm2 start "bun run src/server/index.ts" --name tenerifeprop
pm2 save
pm2 startup systemd
# Выполни команду, которую предложит pm2 (обычно sudo systemctl ...)
```
Проверка:
```bash
curl http://localhost:3003/api/settings
```
### 7. Настройка Nginx в BrainyCP
Зайди в панель BrainyCP:
- **WWW-домены** → твой домен → **Редактировать конфиг Nginx** (или "Дополнительные настройки / Пользовательский конфиг").
Добавь внутрь секции `server` (перед закрывающей скобкой или в начале):
```nginx
location / {
proxy_pass http://127.0.0.1:3003;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400;
}
```
> **Важно:** не редактируй `/etc/nginx/nginx.conf` напрямую — BrainyCP может перезаписать его.
### 8. Перезапуск Nginx
Через BrainyCP:
- **Сервисы** → **Nginx****Перезапустить**
Или по SSH:
```bash
sudo nginx -t && sudo systemctl reload nginx
```
### 9. Проверка
- Открой домен в браузере: `https://твой-домен.ru`
- Проверь API: `https://твой-домен.ru/api/settings`
- Проверь админку: `https://твой-домен.ru/admin/login`
- Войди с демо-данными: `admin@clinic.ru` / `admin123`
## Автоматизация обновлений
Скрипт `deploy.sh` в корне проекта:
```bash
#!/bin/bash
set -e
cd /var/www/user/data/www/tenerifeprop.ru
git pull origin dev
bun install --production
pm2 restart tenerifeprop
```
```bash
chmod +x deploy.sh
```
## Риски и нюансы
| Проблема | Решение |
|----------|---------|
| BrainyCP перезаписывает Nginx-конфиг | Редактировать только через панель (WWW-домены) |
| Порт 3003 занят | `lsof -i :3003` → найди и убей процесс, или укажи другой порт |
| Нет root-прав | Установка Bun в `$HOME/.bun`, PM2 глобально через `bun add -g` |
| SQLite не переживает перенос | Копируй `data/tenerifeprop.db` через `rsync` или `scp` |
| SSL | BrainyCP → SSL → Let's Encrypt. Nginx терминирует SSL, Bun работает по HTTP |
## Альтернатива без PM2 (systemd unit)
Если PM2 недоступен, создай systemd-сервис:
```bash
sudo tee /etc/systemd/system/tenerifeprop.service <<'EOF'
[Unit]
Description=TenerifeProp Bun Server
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/user/data/www/tenerifeprop.ru
Environment=NODE_ENV=production
Environment=PORT=3003
ExecStart=/home/user/.bun/bin/bun run src/server/index.ts
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable tenerifeprop
sudo systemctl start tenerifeprop
```
> Адаптируй пути `User`, `WorkingDirectory` и `ExecStart` под реальные на сервере.