This commit is contained in:
Халимов Рустам
2026-03-10 23:25:42 +03:00
parent 540ded7009
commit 1bb28c1ff7
2 changed files with 80 additions and 2 deletions

78
DOKPLOY.md Normal file
View File

@@ -0,0 +1,78 @@
# Развертывание Vortex в Dokploy
Dokploy — это мощная self-hosted PaaS платформа, которая упрощает деплой Docker-приложений. Есть два способа развернуть Vortex в Dokploy.
## Способ 1: С использованием Docker Compose (Самый простой)
Этот метод объединяет базу данных и приложения в один стек.
1. **Создайте проект**: В панели Dokploy создайте новый "Project".
2. **Добавьте Compose сервис**:
* Нажмите "Add Service" -> "Compose".
* Подключите ваш GitHub/GitLab репозиторий.
* Выберите нужную ветку (например, `main`).
3. **Настройте переменные окружения**:
* Во вкладке "Environment" добавьте следующие переменные:
* `JWT_SECRET`: Длинная случайная строка (ключ для авторизации).
* `CORS_ORIGINS`: `https://vortex.your-domain.com` (замените на ваш реальный домен).
* `ENCRYPTION_KEY`: 64-символьная HEX-строка (например, `0123...`).
4. **Укажите домен**:
* Перейдите во вкладку "Domains".
* Dokploy автоматически настроит Traefik для основного сервиса `web`, если вы укажете домен здесь.
5. **Деплой**: Нажмите кнопку "Deploy".
## Способ 2: Нативный метод Dokploy (Рекомендуется для Production)
Этот метод использует встроенные базы данных Dokploy для лучшего управления бэкапами и производительностью.
### 1. Создайте базу данных
* В Dokploy перейдите в "Databases" -> "PostgreSQL".
* Создайте новую базу данных.
* После создания перейдите во вкладку "Internal Connection", чтобы получить `DATABASE_URL`.
### 2. Создайте приложение для Сервера (Backend)
* Add Service -> "Application".
* Подключите репозиторий.
* **Настройки сборки (Build Settings)**:
* Docker Context: `.`
* Dockerfile Path: `Dockerfile.server`
* **Переменные окружения (Environment Variables)**:
* `DATABASE_URL`: (Вставьте URL из шага 1)
* `PORT`: `3001`
* `JWT_SECRET`: (Случайная строка)
* `ENCRYPTION_KEY`: (64 символа hex)
* `CORS_ORIGINS`: `https://vortex.your-domain.com`
* **Сеть (Networking)**:
* Port: `3001`
### 3. Создайте приложение для Веб-интерфейса (Frontend)
* Add Service -> "Application".
* Подключите репозиторий.
* **Настройки сборки (Build Settings)**:
* Docker Context: `.`
* Dockerfile Path: `Dockerfile.web`
* **Домены**:
* Добавьте ваш домен (например, `vortex.example.com`).
* **Сеть (Networking)**:
* Port: `80`
## Важные настройки
### 1. Постоянное хранение файлов (Persistence)
Если вы используете Способ 2, не забудьте настроить **Volumes** для приложения сервера, чтобы аватарки и файлы не удалялись при каждом обновлении кода:
* Путь в контейнере: `/app/apps/server/uploads`
* Путь на хосте: `/var/lib/dokploy/vortex/uploads`
## Запуск в локальной сети (без домена / по IP)
Если вы хотите пользоваться мессенджером прямо сейчас по IP-адресу или в локальной сети:
1. **Настройка CORS**: В переменных окружения `CORS_ORIGINS` укажите IP вашего сервера:
* Пример: `http://192.168.1.50,http://localhost`
2. **Домен в Dokploy**:
* При добавлении домена в Dokploy можно указать локальный IP или временное имя.
* Если Dokploy требует обязательный домен для SSL, а у вас его нет, вы можете обращаться к сервису по порту напрямую (по умолчанию 80-й порт веб-интерфейса проброшен на хост).
3. **Важное ограничение (WebRTC)**:
* **Звонки и микрофон** в браузерах работают только через `https://` или на `localhost`.
* При доступе по обычному IP (например, `http://192.168.1.50`) браузер **заблокирует** доступ к камере и микрофону из соображений безопасности.
* **Решение**: Для полноценной работы звонков в локальной сети рекомендуется использовать самоподписанный сертификат или настроить в браузере флаг `unsafely-treat-insecure-origin-as-secure`.

View File

@@ -19,10 +19,10 @@ services:
container_name: vortex-server
restart: always
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-vortex}:${POSTGRES_PASSWORD:-vortex_pass}@db:5432/${POSTGRES_DB:-vortex_db}
DATABASE_URL: ${DATABASE_URL:-postgresql://${POSTGRES_USER:-vortex}:${POSTGRES_PASSWORD:-vortex_pass}@db:5432/${POSTGRES_DB:-vortex_db}}
PORT: 3001
JWT_SECRET: ${JWT_SECRET:-your-secure-random-secret-key-here}
CORS_ORIGINS: http://localhost,http://localhost:80,http://localhost:5173
CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost,http://localhost:80,http://localhost:5173}
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef}
depends_on:
- db