Dokploy
This commit is contained in:
78
DOKPLOY.md
Normal file
78
DOKPLOY.md
Normal 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`.
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user