# 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 Хост: @ Значение: ``` > Может потребоваться до 24 часов для распространения DNS (обычно 5–15 минут). --- ## 2. Загрузка проекта на сервер С вашего ПК (из папки с проектом): ```bash # Создать папку на сервере ssh root@ "mkdir -p /var/www/vortex" # Скопировать файлы проекта scp -r ./* root@:/var/www/vortex/ ``` > Замените `` на IP вашего VPS. При первом подключении подтвердите fingerprint (`yes`) и введите root-пароль. --- ## 3. Запуск автоматического деплоя ```bash # Подключиться к серверу ssh root@ # Дать права на запуск 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@ # ─── Логи приложения ─── 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@ /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@:/root/ # На сервере: запустить обновление ssh root@ /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` |