Dokploy
This commit is contained in:
+78
@@ -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`.
|
||||||
+2
-2
@@ -19,10 +19,10 @@ services:
|
|||||||
container_name: vortex-server
|
container_name: vortex-server
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
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
|
PORT: 3001
|
||||||
JWT_SECRET: ${JWT_SECRET:-your-secure-random-secret-key-here}
|
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}
|
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef}
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
|
|||||||
Reference in New Issue
Block a user