6.3 KiB
Развертывание Vortex в Dokploy
Dokploy — это мощная self-hosted PaaS платформа, которая упрощает деплой Docker-приложений. Есть два способа развернуть Vortex в Dokploy.
Способ 1: С использованием Docker Compose (Самый простой)
Этот метод объединяет базу данных и приложения в один стек.
- Создайте проект: В панели Dokploy создайте новый "Project".
- Добавьте Compose сервис:
- Нажмите "Add Service" -> "Compose".
- Подключите ваш GitHub/GitLab репозиторий.
- Выберите нужную ветку (например,
main).
- Настройте переменные окружения:
- Во вкладке "Environment" добавьте следующие переменные:
JWT_SECRET: Длинная случайная строка (ключ для авторизации).CORS_ORIGINS:https://vortex.your-domain.com(замените на ваш реальный домен).ENCRYPTION_KEY: 64-символьная HEX-строка (например,0123...).
- Во вкладке "Environment" добавьте следующие переменные:
- Укажите домен:
- Перейдите во вкладку "Domains".
- Dokploy автоматически настроит Traefik для основного сервиса
web, если вы укажете домен здесь.
- Деплой: Нажмите кнопку "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
- Docker Context:
- Переменные окружения (Environment Variables):
DATABASE_URL: (Вставьте URL из шага 1)PORT:3001JWT_SECRET: (Случайная строка)ENCRYPTION_KEY: (64 символа hex)CORS_ORIGINS:https://vortex.your-domain.com
- Сеть (Networking):
- Port:
3001
- Port:
3. Создайте приложение для Веб-интерфейса (Frontend)
- Add Service -> "Application".
- Подключите репозиторий.
- Настройки сборки (Build Settings):
- Docker Context:
. - Dockerfile Path:
Dockerfile.web
- Docker Context:
- Домены:
- Добавьте ваш домен (например,
vortex.example.com).
- Добавьте ваш домен (например,
- Сеть (Networking):
- Port:
80
- Port:
Важные настройки
1. Постоянное хранение файлов (Persistence)
Если вы используете Способ 2, не забудьте настроить Volumes для приложения сервера, чтобы аватарки и файлы не удалялись при каждом обновлении кода:
- Путь в контейнере:
/app/apps/server/uploads - Путь на хосте:
/var/lib/dokploy/vortex/uploads
Настройка звонков (TURN сервер)
Для того чтобы звонки работали через интернет (вне локальной сети), обязателен TURN-сервер. Я добавил его в docker-compose.yml.
Важно: Чтобы звонки заработали, вам НУЖНО открыть следующие порты на вашем сервере/роутере:
3478(TCP и UDP) — основной порт TURN.49152-49170(UDP) — диапазон портов для передачи медиа-трафика.
В Dokploy убедитесь, что в переменных окружения прописан ваш домен:
DOMAIN:mess.khomegeneric.keenetic.proTURN_SECRET:dcf1c1827c0c520d45130e282ea26991
Запуск в локальной сети (без домена / по IP)
Если вы хотите пользоваться мессенджером прямо сейчас по IP-адресу или в локальной сети:
- Настройка CORS: В переменных окружения
CORS_ORIGINSукажите IP вашего сервера:- Пример:
http://192.168.1.50,http://localhost
- Пример:
- Домен в Dokploy:
- При добавлении домена в Dokploy можно указать локальный IP или временное имя.
- Если Dokploy требует обязательный домен для SSL, а у вас его нет, вы можете обращаться к сервису по порту напрямую (по умолчанию 80-й порт веб-интерфейса проброшен на хост).
- Важное ограничение (WebRTC):
- Звонки и микрофон в браузерах работают только через
https://или наlocalhost. - При доступе по обычному IP (например,
http://192.168.1.50) браузер заблокирует доступ к камере и микрофону из соображений безопасности. - Решение: Для полноценной работы звонков в локальной сети рекомендуется использовать самоподписанный сертификат или настроить в браузере флаг
unsafely-treat-insecure-origin-as-secure.
- Звонки и микрофон в браузерах работают только через