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

5.7 KiB
Raw Permalink Blame History

План деплоя 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 на сервер

ssh user@your_server_ip

2. Установка Bun

curl -fsSL https://bun.sh/install | bash
source ~/.bashrc
bun --version

3. Загрузка проекта в папку BrainyCP

Если папка уже создана панелью (например, /var/www/user/data/www/tenerifeprop.ru):

  • Загрузи туда файлы проекта (через FTP, SCP или Git).
  • Убедись, что папка data/ существует и доступна для записи.
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)

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. Инициализация базы данных (если нужно)

# Создание БД и сидов
bun run src/db/init.ts
bun run src/db/seed.ts
# Убедись, что файл появился:
ls -la data/tenerifeprop.db

6. Запуск через PM2

bun add -g pm2
pm2 start "bun run src/server/index.ts" --name tenerifeprop
pm2 save
pm2 startup systemd
# Выполни команду, которую предложит pm2 (обычно sudo systemctl ...)

Проверка:

curl http://localhost:3003/api/settings

7. Настройка Nginx в BrainyCP

Зайди в панель BrainyCP:

  • WWW-домены → твой домен → Редактировать конфиг Nginx (или "Дополнительные настройки / Пользовательский конфиг").

Добавь внутрь секции server (перед закрывающей скобкой или в начале):

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:

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 в корне проекта:

#!/bin/bash
set -e
cd /var/www/user/data/www/tenerifeprop.ru
git pull origin dev
bun install --production
pm2 restart tenerifeprop
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-сервис:

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 под реальные на сервере.