This commit is contained in:
Халимов Рустам
2026-03-10 21:11:59 +03:00
parent a3c0d35263
commit b4b4b8e0d3
80 changed files with 23310 additions and 0 deletions
+215
View File
@@ -0,0 +1,215 @@
# 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 (обычно 5–15 минут).
---
## 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` |