Files
forkmessager/DEPLOYMENT.md
Халимов Рустам b4b4b8e0d3 Original
2026-03-10 21:11:59 +03:00

216 lines
8.5 KiB
Markdown
Raw 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.
# Vortex Messenger — Руководство по развёртыванию
## Что понадобится
| Что | Детали |
|-----|--------|
| **VPS** | Ubuntu 22.04 / 24.04, от 1 ГБ RAM, публичный IP |
| **Домен** | С A-записью, направленной на IP вашего VPS |
| **Email** | Для получения SSL-сертификата (Let's Encrypt) |
| **ПК** | Windows / macOS / Linux с SSH-клиентом |
---
## 1. Подготовка сервера
### 1.1 Покупка VPS
Купите VPS у провайдера (Timeweb Cloud, Hetzner, DigitalOcean и т.д.).
Запишите **IP** и **root-пароль**.
### 1.2 Покупка домена
Купите домен и в DNS-настройках реестра создайте A-запись:
```
Тип: A
Хост: @
Значение: <IP вашего VPS>
```
> Может потребоваться до 24 часов для распространения DNS (обычно 515 минут).
---
## 2. Загрузка проекта на сервер
С вашего ПК (из папки с проектом):
```bash
# Создать папку на сервере
ssh root@<IP> "mkdir -p /var/www/vortex"
# Скопировать файлы проекта
scp -r ./* root@<IP>:/var/www/vortex/
```
> Замените `<IP>` на IP вашего VPS. При первом подключении подтвердите fingerprint (`yes`) и введите root-пароль.
---
## 3. Запуск автоматического деплоя
```bash
# Подключиться к серверу
ssh root@<IP>
# Дать права на запуск
chmod +x /var/www/vortex/deploy.sh
# Запустить деплой
/var/www/vortex/deploy.sh
```
Скрипт спросит:
- **Домен** — ваш домен (например `messenger.example.com`)
- **Email** — для SSL-сертификата
Всё остальное (Node.js, PostgreSQL, Nginx, Certbot, coturn, PM2) установится и настроится автоматически.
---
## 4. Что делает скрипт
| Шаг | Действие |
|-----|----------|
| 1/10 | Обновление системы, установка базовых утилит |
| 2/10 | Установка Node.js 20 и PM2 |
| 3/10 | Установка PostgreSQL, создание БД и пользователя |
| 4/10 | Установка Nginx |
| 5/10 | Установка Certbot для SSL |
| 6/10 | Установка coturn (TURN-сервер для звонков) |
| 7/10 | Создание `.env` с автогенерированными ключами |
| 8/10 | `npm install`, Prisma миграции, сборка бэкенда и фронтенда |
| 9/10 | Настройка Nginx (reverse proxy, SSL, блокировка доступа по IP) |
| 10/10 | Запуск сервера через PM2 с автозапуском |
По завершении:
- Кредитные данные сохраняются в `/var/www/vortex/CREDENTIALS.txt` (доступ только root)
- Скрипт обновления создаётся в `/var/www/vortex/update.sh`
---
## 5. Настройка конфигурации
Подробная инструкция по всем параметрам, которые нужно подставить под себя — в отдельном файле **[CONFIGURATION.md](CONFIGURATION.md)**.
> При использовании `deploy.sh` всё настраивается автоматически. `CONFIGURATION.md` нужен только для ручной настройки или понимания структуры.
---
## 6. После установки
Откройте в браузере:
```
https://ваш-домен.ru
```
---
## 7. Полезные команды на сервере
```bash
# ─── Подключение к серверу ───
ssh root@<IP>
# ─── Логи приложения ───
pm2 logs vortex-server # все логи
pm2 logs vortex-server --lines 50 # последние 50 строк
# ─── Управление сервером ───
pm2 restart vortex-server # перезапуск
pm2 stop vortex-server # остановка
pm2 start vortex-server # запуск
pm2 monit # мониторинг в реальном времени
# ─── Статус ───
pm2 status # список процессов
pm2 info vortex-server # детальная информация
# ─── Nginx ───
nginx -t # проверить конфигурацию
systemctl reload nginx # перезагрузить Nginx
systemctl status nginx # статус Nginx
# ─── Логи Nginx ───
tail -f /var/log/nginx/access.log # логи входящих запросов
tail -f /var/log/nginx/error.log # логи ошибок
# ─── PostgreSQL ───
sudo -u postgres psql -d vortex # подключиться к БД
\dt # список таблиц (внутри psql)
\q # выход из psql
# ─── coturn (TURN-сервер) ───
systemctl status coturn # статус TURN
systemctl restart coturn # перезапуск TURN
# ─── SSL сертификат ───
certbot renew --dry-run # проверка обновления сертификата
certbot certificates # список сертификатов
# ─── Файрвол ───
ufw status # статус файрвола
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw allow 3478/tcp # TURN TCP
ufw allow 3478/udp # TURN UDP
# ─── Файлы проекта ───
ls /var/www/vortex/ # корень проекта
cat /var/www/vortex/apps/server/.env # посмотреть env
cat /var/www/vortex/CREDENTIALS.txt # все сгенерированные пароли
```
---
## 8. Обновление проекта
### С Windows (update-local.bat)
1. Внесите изменения в код на ПК
2. Отредактируйте `update-local.bat` — впишите IP вашего сервера в переменную `SERVER_IP`
3. Запустите `update-local.bat` — он соберёт архив и загрузит на сервер
4. Подключитесь к серверу и запустите:
```bash
ssh root@<IP>
/var/www/vortex/update.sh
```
### Вручную
```bash
# На ПК: заархивировать проект (без node_modules, dist, .env)
tar -czf vortex-deploy.tar.gz --exclude='node_modules' --exclude='dist' --exclude='.env' --exclude='uploads/avatars/*' -C . .
# Загрузить на сервер
scp vortex-deploy.tar.gz root@<IP>:/root/
# На сервере: запустить обновление
ssh root@<IP>
/var/www/vortex/update.sh
```
Скрипт `update.sh` автоматически:
- Остановит сервер
- Сделает бэкап `.env` и аватаров
- Распакует обновление
- Восстановит `.env` и аватары
- Установит зависимости, применит миграции, пересоберёт
- Запустит сервер
---
## 9. Устранение проблем
| Проблема | Решение |
|----------|---------|
| Сайт не открывается | `pm2 logs vortex-server --lines 30` — проверить ошибки |
| 502 Bad Gateway | `pm2 restart vortex-server` — бэкенд упал |
| SSL не получен | Проверить DNS: `dig +short ваш-домен.ru` должен показать IP сервера. Повторить: `certbot --nginx -d ваш-домен.ru` |
| Звонки не работают | `systemctl status coturn` — проверить TURN-сервер. Порты 3478 TCP/UDP должны быть открыты |
| БД недоступна | `systemctl status postgresql``systemctl start postgresql` |
| Сервер не стартует после ребута | `pm2 startup` и `pm2 save` |
| Нет места на диске | `df -h` → очистить логи: `pm2 flush` |