Добавлена связь с фронтом админки
This commit is contained in:
8
Makefile
8
Makefile
@@ -238,7 +238,10 @@ docker-build-debug: ## Собрать Docker образ
|
|||||||
docker-run: ## Запустить Docker контейнер (одиночный)
|
docker-run: ## Запустить Docker контейнер (одиночный)
|
||||||
@echo "Запуск Docker контейнера..."
|
@echo "Запуск Docker контейнера..."
|
||||||
@docker run -d \
|
@docker run -d \
|
||||||
|
--hostname eventhub.local \
|
||||||
|
--env-file docker/.env \
|
||||||
--name eventhub \
|
--name eventhub \
|
||||||
|
-e NODE_NAME=eventhub@eventhub.local \
|
||||||
-p 8080:8080 \
|
-p 8080:8080 \
|
||||||
-p 8081:8081 \
|
-p 8081:8081 \
|
||||||
-p 8445:8445 \
|
-p 8445:8445 \
|
||||||
@@ -259,6 +262,11 @@ docker-logs: ## Показать логи Docker контейнера
|
|||||||
docker-shell: ## Зайти в Docker контейнер
|
docker-shell: ## Зайти в Docker контейнер
|
||||||
@docker exec -it eventhub sh
|
@docker exec -it eventhub sh
|
||||||
|
|
||||||
|
docker-compose-build-app: ## Собрать Docker образ
|
||||||
|
@echo "Сборка Docker образа..."
|
||||||
|
@docker-compose -f docker/docker-compose.yml build --no-cache eventhub-node1 eventhub-node2 eventhub-node3
|
||||||
|
@echo "✅ Docker образ собран"
|
||||||
|
|
||||||
docker-compose-up: ## Запустить кластер (3 ноды)
|
docker-compose-up: ## Запустить кластер (3 ноды)
|
||||||
@echo "Запуск кластера EventHub (3 ноды)..."
|
@echo "Запуск кластера EventHub (3 ноды)..."
|
||||||
@docker-compose -f docker/docker-compose.yml --env-file docker/.env up -d
|
@docker-compose -f docker/docker-compose.yml --env-file docker/.env up -d
|
||||||
|
|||||||
@@ -101,6 +101,16 @@ services:
|
|||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# ================== Admin ui ==================
|
||||||
|
admin-ui:
|
||||||
|
build:
|
||||||
|
context: ../../EventHubFrontAdmin # путь к проекту админки
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
networks:
|
||||||
|
- eventhub-net
|
||||||
|
restart: unless-stopped
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
# ================== Мониторинг ==================
|
# ================== Мониторинг ==================
|
||||||
prometheus:
|
prometheus:
|
||||||
image: prom/prometheus:latest
|
image: prom/prometheus:latest
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ http:
|
|||||||
plugin:
|
plugin:
|
||||||
coraza:
|
coraza:
|
||||||
directives:
|
directives:
|
||||||
# - "SecRuleEngine DetectionOnly"
|
# - "SecRuleEngine DetectionOnly" # можно раскомментировать для тестирования
|
||||||
- "SecRuleEngine On"
|
- "SecRuleEngine On"
|
||||||
- "SecDebugLog /dev/stdout"
|
- "SecDebugLog /dev/stdout"
|
||||||
- "SecDebugLogLevel 2"
|
- "SecDebugLogLevel 2"
|
||||||
# - "SecRule REQUEST_URI \"@rx /admin\" \"id:101,phase:1,log,deny,status:403\""
|
# - "SecRule REQUEST_URI \"@rx /admin\" \"id:101,phase:1,log,deny,status:403\""
|
||||||
- "SecRule ARGS \"@rx (union|select|insert|drop|alter)\" \"id:102,phase:2,log,deny,status:403\""
|
- "SecRule ARGS \"@rx (union|select|insert|drop|alter)\" \"id:102,phase:2,log,deny,status:403\""
|
||||||
|
|
||||||
api-ratelimit:
|
api-ratelimit:
|
||||||
@@ -39,7 +39,7 @@ http:
|
|||||||
burst: 5
|
burst: 5
|
||||||
|
|
||||||
routers:
|
routers:
|
||||||
# REST API пользователей
|
# --- REST API пользователей ---
|
||||||
api:
|
api:
|
||||||
rule: "Host(`api.eventhub.local`)"
|
rule: "Host(`api.eventhub.local`)"
|
||||||
entryPoints: ["web"]
|
entryPoints: ["web"]
|
||||||
@@ -52,7 +52,7 @@ http:
|
|||||||
middlewares: ["api-ratelimit", "waf"]
|
middlewares: ["api-ratelimit", "waf"]
|
||||||
service: "api"
|
service: "api"
|
||||||
|
|
||||||
# WebSocket пользователей (без WAF)
|
# --- WebSocket пользователей (без WAF) ---
|
||||||
ws:
|
ws:
|
||||||
rule: "Host(`ws.eventhub.local`)"
|
rule: "Host(`ws.eventhub.local`)"
|
||||||
entryPoints: ["web"]
|
entryPoints: ["web"]
|
||||||
@@ -64,33 +64,45 @@ http:
|
|||||||
tls: true
|
tls: true
|
||||||
service: "ws"
|
service: "ws"
|
||||||
|
|
||||||
# Админский REST
|
# --- Админ-панель (SPA) ---
|
||||||
admin-api:
|
admin-ui:
|
||||||
rule: "Host(`admin.eventhub.local`)"
|
rule: "Host(`admin.eventhub.local`) && !PathPrefix(`/api/`) && !PathPrefix(`/ws/`)"
|
||||||
|
entryPoints: ["web"]
|
||||||
|
middlewares: ["redirect-to-https"]
|
||||||
|
service: "admin-ui-service"
|
||||||
|
admin-ui-secure:
|
||||||
|
rule: "Host(`admin.eventhub.local`) && !PathPrefix(`/api/`) && !PathPrefix(`/ws/`)"
|
||||||
|
entryPoints: ["websecure"]
|
||||||
|
tls: true
|
||||||
|
service: "admin-ui-service"
|
||||||
|
|
||||||
|
# --- Проксирование /api/ на админский REST ---
|
||||||
|
admin-api-proxy:
|
||||||
|
rule: "Host(`admin.eventhub.local`) && PathPrefix(`/api/`)"
|
||||||
entryPoints: ["web"]
|
entryPoints: ["web"]
|
||||||
middlewares: ["redirect-to-https", "admin-ratelimit", "waf"]
|
middlewares: ["redirect-to-https", "admin-ratelimit", "waf"]
|
||||||
service: "admin-api"
|
service: "admin-api"
|
||||||
admin-api-secure:
|
admin-api-proxy-secure:
|
||||||
rule: "Host(`admin.eventhub.local`)"
|
rule: "Host(`admin.eventhub.local`) && PathPrefix(`/api/`)"
|
||||||
entryPoints: ["websecure"]
|
entryPoints: ["websecure"]
|
||||||
tls: true
|
tls: true
|
||||||
middlewares: ["admin-ratelimit", "waf"]
|
middlewares: ["admin-ratelimit", "waf"]
|
||||||
service: "admin-api"
|
service: "admin-api"
|
||||||
|
|
||||||
# Админский WebSocket (без WAF)
|
# --- Проксирование /ws/ на админский WebSocket ---
|
||||||
admin-ws:
|
admin-ws-proxy:
|
||||||
rule: "Host(`admin-ws.eventhub.local`)"
|
rule: "Host(`admin.eventhub.local`) && PathPrefix(`/ws/`)"
|
||||||
entryPoints: ["web"]
|
entryPoints: ["web"]
|
||||||
middlewares: ["redirect-to-https"]
|
middlewares: ["redirect-to-https"]
|
||||||
service: "admin-ws"
|
service: "admin-ws"
|
||||||
admin-ws-secure:
|
admin-ws-proxy-secure:
|
||||||
rule: "Host(`admin-ws.eventhub.local`)"
|
rule: "Host(`admin.eventhub.local`) && PathPrefix(`/ws/`)"
|
||||||
entryPoints: ["websecure"]
|
entryPoints: ["websecure"]
|
||||||
tls: true
|
tls: true
|
||||||
service: "admin-ws"
|
service: "admin-ws"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# Пользовательский REST API (failover)
|
# --- Пользовательский REST API (failover) ---
|
||||||
api:
|
api:
|
||||||
failover:
|
failover:
|
||||||
service: api-live
|
service: api-live
|
||||||
@@ -110,7 +122,7 @@ http:
|
|||||||
servers:
|
servers:
|
||||||
- url: "http://fallback:80"
|
- url: "http://fallback:80"
|
||||||
|
|
||||||
# Пользовательский WebSocket
|
# --- Пользовательский WebSocket ---
|
||||||
ws:
|
ws:
|
||||||
loadbalancer:
|
loadbalancer:
|
||||||
servers:
|
servers:
|
||||||
@@ -118,7 +130,7 @@ http:
|
|||||||
- url: "http://eventhub-node2:8081"
|
- url: "http://eventhub-node2:8081"
|
||||||
- url: "http://eventhub-node3:8081"
|
- url: "http://eventhub-node3:8081"
|
||||||
|
|
||||||
# Админский REST (failover)
|
# --- Админский REST (failover) ---
|
||||||
admin-api:
|
admin-api:
|
||||||
failover:
|
failover:
|
||||||
service: admin-api-live
|
service: admin-api-live
|
||||||
@@ -138,10 +150,16 @@ http:
|
|||||||
servers:
|
servers:
|
||||||
- url: "http://fallback:80"
|
- url: "http://fallback:80"
|
||||||
|
|
||||||
# Админский WebSocket
|
# --- Админский WebSocket ---
|
||||||
admin-ws:
|
admin-ws:
|
||||||
loadbalancer:
|
loadbalancer:
|
||||||
servers:
|
servers:
|
||||||
- url: "http://eventhub-node1:8446"
|
- url: "http://eventhub-node1:8446"
|
||||||
- url: "http://eventhub-node2:8446"
|
- url: "http://eventhub-node2:8446"
|
||||||
- url: "http://eventhub-node3:8446"
|
- url: "http://eventhub-node3:8446"
|
||||||
|
|
||||||
|
# --- SPA (админ‑панель) ---
|
||||||
|
admin-ui-service:
|
||||||
|
loadbalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://admin-ui:80"
|
||||||
3
src/config/local.vm.args
Normal file
3
src/config/local.vm.args
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
-sname ${NODE_NAME}
|
||||||
|
-setcookie ${RELEASE_COOKIE}
|
||||||
|
-kernel inet_dist_use_interface {0,0,0,0}
|
||||||
Reference in New Issue
Block a user