diff --git a/application/src/main/data/json/system/widget_bundles/cards.json b/application/src/main/data/json/system/widget_bundles/cards.json index 1ccfdc9071..f48ef37160 100644 --- a/application/src/main/data/json/system/widget_bundles/cards.json +++ b/application/src/main/data/json/system/widget_bundles/cards.json @@ -27,7 +27,7 @@ "descriptor": { "type": "latest", "sizeX": 7.5, - "sizeY": 4.5, + "sizeY": 6.5, "resources": [], "templateHtml": "\n", "templateCss": "", diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 6d22046291..37c5cf2629 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -134,9 +134,6 @@ services: image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" - environment: - TB_HOST: tb1 - TB_PORT: 8080 env_file: - tb-web-ui.env tb-web-ui2: @@ -144,12 +141,9 @@ services: image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" - environment: - TB_HOST: tb2 - TB_PORT: 8080 env_file: - tb-web-ui.env - web: + haproxy: restart: always container_name: haproxy-certbot image: nmarus/haproxy-certbot @@ -159,6 +153,7 @@ services: - ./haproxy/certs.d:/usr/local/etc/haproxy/certs.d ports: - "80:80" + - "8080" - "443:443" - "1883:1883" - "9999:9999" @@ -168,8 +163,11 @@ services: HTTP_PORT: 80 HTTPS_PORT: 443 MQTT_PORT: 1883 + TB_API_PORT: 8080 FORCE_HTTPS_REDIRECT: "false" links: + - tb1 + - tb2 - tb-web-ui1 - tb-web-ui2 - tb-mqtt-transport1 diff --git a/docker/haproxy/config/haproxy.cfg b/docker/haproxy/config/haproxy.cfg index bb1062f2a2..29de26680b 100644 --- a/docker/haproxy/config/haproxy.cfg +++ b/docker/haproxy/config/haproxy.cfg @@ -69,6 +69,11 @@ frontend https_in default_backend tb-web-backend +frontend http-api-in + bind *:${TB_API_PORT} + + default_backend tb-api-backend + backend letsencrypt_http server letsencrypt_http_srv 127.0.0.1:8080 @@ -86,3 +91,10 @@ backend tb-http-backend option log-health-checks server tbHttp1 tb-http-transport1:8081 check server tbHttp2 tb-http-transport2:8081 check + +backend tb-api-backend + balance leastconn + option tcp-check + option log-health-checks + server tbApi1 tb1:8080 check + server tbApi2 tb2:8080 check diff --git a/docker/tb-web-ui.env b/docker/tb-web-ui.env index 5c52681798..dbf8120cbf 100644 --- a/docker/tb-web-ui.env +++ b/docker/tb-web-ui.env @@ -1,7 +1,7 @@ HTTP_BIND_ADDRESS=0.0.0.0 HTTP_BIND_PORT=8080 -TB_HOST=localhost +TB_HOST=haproxy TB_PORT=8080 LOGGER_LEVEL=info LOG_FOLDER=logs diff --git a/ui/src/app/app.js b/ui/src/app/app.js index a3a179eb12..824dbb0f69 100644 --- a/ui/src/app/app.js +++ b/ui/src/app/app.js @@ -51,6 +51,20 @@ import react from 'ngreact'; import '@flowjs/ng-flow/dist/ng-flow-standalone.min'; import 'ngFlowchart/dist/ngFlowchart'; +import 'typeface-roboto'; +import 'font-awesome/css/font-awesome.min.css'; +import 'angular-material/angular-material.min.css'; +import 'angular-material-icons/angular-material-icons.css'; +import 'angular-gridster/dist/angular-gridster.min.css'; +import 'v-accordion/dist/v-accordion.min.css'; +import 'md-color-picker/dist/mdColorPicker.min.css'; +import 'mdPickers/dist/mdPickers.min.css'; +import 'angular-hotkeys/build/hotkeys.min.css'; +import 'angular-carousel/dist/angular-carousel.min.css'; +import 'angular-material-expansion-panel/dist/md-expansion-panel.min.css'; +import 'ngFlowchart/dist/flowchart.css'; +import '../scss/main.scss'; + import thingsboardTranslateHandler from './locale/translate-handler'; import thingsboardLogin from './login'; import thingsboardDialogs from './components/datakey-config-dialog.controller'; @@ -78,20 +92,6 @@ import thingsboardApiAuditLog from './api/audit-log.service'; import thingsboardApiComponentDescriptor from './api/component-descriptor.service'; import thingsboardApiRuleChain from './api/rule-chain.service'; -import 'typeface-roboto'; -import 'font-awesome/css/font-awesome.min.css'; -import 'angular-material/angular-material.min.css'; -import 'angular-material-icons/angular-material-icons.css'; -import 'angular-gridster/dist/angular-gridster.min.css'; -import 'v-accordion/dist/v-accordion.min.css'; -import 'md-color-picker/dist/mdColorPicker.min.css'; -import 'mdPickers/dist/mdPickers.min.css'; -import 'angular-hotkeys/build/hotkeys.min.css'; -import 'angular-carousel/dist/angular-carousel.min.css'; -import 'angular-material-expansion-panel/dist/md-expansion-panel.min.css'; -import 'ngFlowchart/dist/flowchart.css'; -import '../scss/main.scss'; - import AppConfig from './app.config'; import GlobalInterceptor from './global-interceptor.service'; import AppRun from './app.run';