with drysense
BIN
deploy/sense/assets/fa-brands-400-D1LuMI3I.ttf
Normal file
BIN
deploy/sense/assets/fa-brands-400-D_cYUPeE.woff2
Normal file
BIN
deploy/sense/assets/fa-regular-400-BjRzuEpd.woff2
Normal file
BIN
deploy/sense/assets/fa-regular-400-DZaxPHgR.ttf
Normal file
BIN
deploy/sense/assets/fa-solid-900-CTAAxXor.woff2
Normal file
BIN
deploy/sense/assets/fa-solid-900-D0aA9rwL.ttf
Normal file
BIN
deploy/sense/assets/fa-v4compatibility-C9RhG_FT.woff2
Normal file
BIN
deploy/sense/assets/fa-v4compatibility-CCth-dXg.ttf
Normal file
9
deploy/sense/assets/index-Dk30-nFi.css
Normal file
146
deploy/sense/assets/index-DppBefZu.js
Normal file
BIN
deploy/sense/assets/loading-BrWpMAjh.gif
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
deploy/sense/assets/login-background-WnTOCdhv.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
deploy/sense/assets/nav-mWl-YMYM.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
deploy/sense/favicon.ico
Normal file
|
After Width: | Height: | Size: 70 KiB |
19
deploy/sense/index.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="icon" href="/sense/favicon.ico">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Turning Floods Into Fresh Starts">
|
||||||
|
<meta name="keywords" content="welldry, sense, manager, floods, prevention">
|
||||||
|
<title>WellDry Sense</title>
|
||||||
|
<script type="module" crossorigin src="/sense/assets/index-DppBefZu.js"></script>
|
||||||
|
<link rel="stylesheet" crossorigin href="/sense/assets/index-Dk30-nFi.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
12
deploy_draysense.sh
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
rm -rf ./well-dry-sense
|
||||||
|
|
||||||
|
TOKEN=715515426be5ce38d504aa1252fc8c9e9f789ddc
|
||||||
|
git clone https://$TOKEN@gitea.wellnua.com/pkresoja/well-dry-sense
|
||||||
|
cd ./well-dry-sense
|
||||||
|
|
||||||
|
echo "VITE_GIT_VERSION=$(git rev-parse --short HEAD)" >> .env
|
||||||
|
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
|
||||||
@ -35,7 +35,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- ./traefik/config:/etc/traefik
|
- ./traefik/config:/etc/traefik
|
||||||
- ./traefik/acme.json:/etc/traefik/acme.json
|
|
||||||
|
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
@ -48,35 +47,55 @@ services:
|
|||||||
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$mG0yHveI$$y2hSROLHtMbuWFK4F.p2c1"
|
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$mG0yHveI$$y2hSROLHtMbuWFK4F.p2c1"
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
build:
|
build:
|
||||||
context: ./nginx
|
context: ./nginx
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- traefik-public
|
- traefik-public
|
||||||
volumes:
|
volumes:
|
||||||
- /home/ubuntu/www:/usr/share/nginx/html
|
- /home/ubuntu/www:/usr/share/nginx/html
|
||||||
- /mnt/data/well_tests:/usr/share/nginx/html/well_tests
|
- /mnt/data/well_tests:/usr/share/nginx/html/well_tests
|
||||||
- /mnt/data/shared:/usr/share/nginx/html/shared
|
- /mnt/data/shared:/usr/share/nginx/html/shared
|
||||||
- /home/ubuntu/server-setup/well_mob_pwa/build:/usr/share/nginx/html/react
|
- /home/ubuntu/server-setup/well_mob_pwa/build:/usr/share/nginx/html/react
|
||||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
- /home/ubuntu/server-setup/new-portal/dist:/usr/share/nginx/html/portal
|
||||||
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
- /home/ubuntu/server-setup/well-dry-sense/dist:/usr/share/nginx/html/drysense
|
||||||
- ./nginx/.htpasswd:/etc/nginx/.htpasswd:ro
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
labels:
|
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
||||||
- "traefik.enable=true"
|
- ./nginx/.htpasswd:/etc/nginx/.htpasswd:ro
|
||||||
# Main website
|
labels:
|
||||||
- "traefik.http.routers.nginx-web.rule=Host(`eluxnetworks.net`)"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.nginx-web.entrypoints=websecure"
|
# Main website
|
||||||
- "traefik.http.routers.nginx-web.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.nginx-web.rule=Host(`eluxnetworks.net`)"
|
||||||
# React app
|
- "traefik.http.routers.nginx-web.entrypoints=websecure"
|
||||||
- "traefik.http.routers.nginx-react.rule=Host(`react.eluxnetworks.net`)"
|
- "traefik.http.routers.nginx-web.tls.certresolver=letsencrypt"
|
||||||
- "traefik.http.routers.nginx-react.entrypoints=websecure"
|
- "traefik.http.routers.nginx-web.service=nginx-web"
|
||||||
- "traefik.http.routers.nginx-react.tls.certresolver=letsencrypt"
|
- "traefik.http.services.nginx-web.loadbalancer.server.port=80"
|
||||||
- "traefik.http.middlewares.security-headers.headers.stsSeconds=31536000"
|
# React app
|
||||||
- "traefik.http.middlewares.security-headers.headers.forceSTSHeader=true"
|
- "traefik.http.routers.nginx-react.rule=Host(`react.eluxnetworks.net`)"
|
||||||
- "traefik.http.routers.nginx-web.middlewares=security-headers"
|
- "traefik.http.routers.nginx-react.entrypoints=websecure"
|
||||||
- "traefik.http.routers.nginx-react.middlewares=security-headers"
|
- "traefik.http.routers.nginx-react.tls.certresolver=letsencrypt"
|
||||||
- "traefik.http.services.nginx-react.loadbalancer.server.port=80"
|
- "traefik.http.routers.nginx-react.service=nginx-react"
|
||||||
|
- "traefik.http.services.nginx-react.loadbalancer.server.port=80"
|
||||||
|
# Portal app
|
||||||
|
- "traefik.http.routers.nginx-portal.rule=Host(`portal.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-portal.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-portal.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-portal.service=nginx-portal"
|
||||||
|
- "traefik.http.services.nginx-portal.loadbalancer.server.port=80"
|
||||||
|
# Drysense app
|
||||||
|
- "traefik.http.routers.nginx-drysense.rule=Host(`drysense.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-drysense.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-drysense.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-drysense.service=nginx-drysense"
|
||||||
|
- "traefik.http.services.nginx-drysense.loadbalancer.server.port=80"
|
||||||
|
# Security headers middleware
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.stsSeconds=31536000"
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.forceSTSHeader=true"
|
||||||
|
- "traefik.http.routers.nginx-web.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-react.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-portal.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-drysense.middlewares=security-headers"
|
||||||
|
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
184
docker-compose.yml.bak20251010.pre-drysense
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
networks:
|
||||||
|
traefik-public:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
|
||||||
|
image: traefik:latest
|
||||||
|
restart: always
|
||||||
|
command:
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=false"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
- "--providers.file.directory=/etc/traefik"
|
||||||
|
- "--providers.file.watch=true"
|
||||||
|
- "--entrypoints.web.address=:80"
|
||||||
|
- "--entrypoints.websecure.address=:443"
|
||||||
|
- "--entrypoints.websecure.http.tls=true"
|
||||||
|
- "--entrypoints.websecure.http.tls.certresolver=letsencrypt"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.email=robert@wellnuo.com"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=true"
|
||||||
|
- "--entrypoints.amqp.address=:5672"
|
||||||
|
- "--log.level=DEBUG"
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "8080:8080" # Add this line for dashboard internal access
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik/config:/etc/traefik
|
||||||
|
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Dashboard
|
||||||
|
- "traefik.http.routers.dashboard.rule=Host(`traefik.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
|
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.dashboard.middlewares=auth"
|
||||||
|
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$mG0yHveI$$y2hSROLHtMbuWFK4F.p2c1"
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
build:
|
||||||
|
context: ./nginx
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /home/ubuntu/www:/usr/share/nginx/html
|
||||||
|
- /mnt/data/well_tests:/usr/share/nginx/html/well_tests
|
||||||
|
- /mnt/data/shared:/usr/share/nginx/html/shared
|
||||||
|
- /home/ubuntu/server-setup/well_mob_pwa/build:/usr/share/nginx/html/react
|
||||||
|
- /home/ubuntu/server-setup/new-portal/dist:/usr/share/nginx/html/portal
|
||||||
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
||||||
|
- ./nginx/.htpasswd:/etc/nginx/.htpasswd:ro
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Main website
|
||||||
|
- "traefik.http.routers.nginx-web.rule=Host(`eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-web.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-web.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-web.service=nginx-web"
|
||||||
|
- "traefik.http.services.nginx-web.loadbalancer.server.port=80"
|
||||||
|
# React app
|
||||||
|
- "traefik.http.routers.nginx-react.rule=Host(`react.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-react.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-react.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-react.service=nginx-react"
|
||||||
|
- "traefik.http.services.nginx-react.loadbalancer.server.port=80"
|
||||||
|
# Portal app
|
||||||
|
- "traefik.http.routers.nginx-portal.rule=Host(`portal.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-portal.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-portal.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-portal.service=nginx-portal"
|
||||||
|
- "traefik.http.services.nginx-portal.loadbalancer.server.port=80"
|
||||||
|
# Security headers middleware
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.stsSeconds=31536000"
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.forceSTSHeader=true"
|
||||||
|
- "traefik.http.routers.nginx-web.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-react.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-portal.middlewares=security-headers"
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
user: "999:65534"
|
||||||
|
image: rabbitmq:3.13-management
|
||||||
|
restart: always
|
||||||
|
hostname: "rabbitmq" # Add this line
|
||||||
|
environment:
|
||||||
|
- RABBITMQ_DEFAULT_USER=admin
|
||||||
|
- RABBITMQ_DEFAULT_PASS=Cbx696969!
|
||||||
|
- RABBITMQ_NODENAME=rabbit@rabbitmq # Add this line
|
||||||
|
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbit log_levels [{connection,error}]
|
||||||
|
- RABBITMQ_MNESIA_DIR=/var/lib/rabbitmq/mnesia
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/rabbitmq:/var/lib/rabbitmq
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- "5672:5672" # AMQP port
|
||||||
|
- "15672:15672" # Management UI
|
||||||
|
expose:
|
||||||
|
- 5672
|
||||||
|
- 15672
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.rabbitmq.rule=Host(`rabbitmq.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.rabbitmq.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.rabbitmq.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.rabbitmq.loadbalancer.server.port=15672"
|
||||||
|
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: minio/minio:latest
|
||||||
|
restart: always
|
||||||
|
command: server /data --console-address ":9001" --address ":9000"
|
||||||
|
environment:
|
||||||
|
# Admin credentials for console login
|
||||||
|
- MINIO_ROOT_USER=admin
|
||||||
|
- MINIO_ROOT_PASSWORD=Cbx696969!
|
||||||
|
# Access keys for API access
|
||||||
|
- MINIO_ACCESS_KEY=well_pipe
|
||||||
|
- MINIO_SECRET_KEY=WellNuo_2024
|
||||||
|
# Optional: Force all credentials to be set before starting
|
||||||
|
- MINIO_SITE_REGION=us-east-1
|
||||||
|
- MINIO_BROWSER_REDIRECT_URL=https://minio-console.eluxnetworks.net
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9001:9001" # Adding explicit port mapping for debugging
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/minio:/data
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# API Service
|
||||||
|
- "traefik.http.routers.minio-api.rule=Host(`minio.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-api.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-api.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-api-service.loadbalancer.server.port=9000"
|
||||||
|
- "traefik.http.routers.minio-api.service=minio-api-service"
|
||||||
|
|
||||||
|
# Console Service
|
||||||
|
- "traefik.http.routers.minio-console.rule=Host(`minio-console.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-console.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-console.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-console-service.loadbalancer.server.port=9001"
|
||||||
|
- "traefik.http.routers.minio-console.service=minio-console-service"
|
||||||
|
|
||||||
|
registry:
|
||||||
|
image: registry:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.registry.rule=Host(`repo.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.registry.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.registry.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.registry.loadbalancer.server.port=5000"
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:alpine
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/redis:/data
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
command: redis-server --appendonly yes
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=false" # No need to expose Redis to the internet
|
||||||
188
docker-compose.yml.bak20251025
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
networks:
|
||||||
|
traefik-public:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
|
||||||
|
image: traefik:latest
|
||||||
|
restart: always
|
||||||
|
command:
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=false"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
- "--providers.file.directory=/etc/traefik"
|
||||||
|
- "--providers.file.watch=true"
|
||||||
|
- "--entrypoints.web.address=:80"
|
||||||
|
- "--entrypoints.websecure.address=:443"
|
||||||
|
- "--entrypoints.websecure.http.tls=true"
|
||||||
|
- "--entrypoints.websecure.http.tls.certresolver=letsencrypt"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.email=robert@wellnuo.com"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=true"
|
||||||
|
- "--entrypoints.amqp.address=:5672"
|
||||||
|
- "--log.level=DEBUG"
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "8080:8080" # Add this line for dashboard internal access
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik/config:/etc/traefik
|
||||||
|
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Dashboard
|
||||||
|
- "traefik.http.routers.dashboard.rule=Host(`traefik.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
|
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.dashboard.middlewares=auth"
|
||||||
|
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$mG0yHveI$$y2hSROLHtMbuWFK4F.p2c1"
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
build:
|
||||||
|
context: ./nginx
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /home/ubuntu/www:/usr/share/nginx/html
|
||||||
|
- /mnt/data/well_tests:/usr/share/nginx/html/well_tests
|
||||||
|
- /mnt/data/shared:/usr/share/nginx/html/shared
|
||||||
|
- /home/ubuntu/server-setup/well_mob_pwa/build:/usr/share/nginx/html/react
|
||||||
|
- /home/ubuntu/server-setup/new-portal/dist:/usr/share/nginx/html/portal
|
||||||
|
- /home/ubuntu/server-setup/deploy/sense:/usr/share/nginx/html/sense # <-- FINAL, CORRECTED LINE
|
||||||
|
#- /home/ubuntu/well-dry-sense/dist:/var/www/sense # existing LINE for well-dry-sense (with copy)
|
||||||
|
#- /home/ubuntu/well-dry-sense/dist:/usr/share/nginx/html/sense # new LINE for well-dry-sense (no copy)
|
||||||
|
#- /home/ubuntu/server-setup/well-dry-sense/dist:/usr/share/nginx/html/sense # old, requires copy
|
||||||
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
||||||
|
- ./nginx/.htpasswd:/etc/nginx/.htpasswd:ro
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Main website
|
||||||
|
- "traefik.http.routers.nginx-web.rule=Host(`eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-web.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-web.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-web.service=nginx-web"
|
||||||
|
- "traefik.http.services.nginx-web.loadbalancer.server.port=80"
|
||||||
|
# React app
|
||||||
|
- "traefik.http.routers.nginx-react.rule=Host(`react.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-react.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-react.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-react.service=nginx-react"
|
||||||
|
- "traefik.http.services.nginx-react.loadbalancer.server.port=80"
|
||||||
|
# Portal app
|
||||||
|
- "traefik.http.routers.nginx-portal.rule=Host(`portal.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-portal.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-portal.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-portal.service=nginx-portal"
|
||||||
|
- "traefik.http.services.nginx-portal.loadbalancer.server.port=80"
|
||||||
|
# Security headers middleware
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.stsSeconds=31536000"
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.forceSTSHeader=true"
|
||||||
|
- "traefik.http.routers.nginx-web.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-react.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-portal.middlewares=security-headers"
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
user: "999:65534"
|
||||||
|
image: rabbitmq:3.13-management
|
||||||
|
restart: always
|
||||||
|
hostname: "rabbitmq" # Add this line
|
||||||
|
environment:
|
||||||
|
- RABBITMQ_DEFAULT_USER=admin
|
||||||
|
- RABBITMQ_DEFAULT_PASS=Cbx696969!
|
||||||
|
- RABBITMQ_NODENAME=rabbit@rabbitmq # Add this line
|
||||||
|
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbit log_levels [{connection,error}]
|
||||||
|
- RABBITMQ_MNESIA_DIR=/var/lib/rabbitmq/mnesia
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/rabbitmq:/var/lib/rabbitmq
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- "5672:5672" # AMQP port
|
||||||
|
- "15672:15672" # Management UI
|
||||||
|
expose:
|
||||||
|
- 5672
|
||||||
|
- 15672
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.rabbitmq.rule=Host(`rabbitmq.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.rabbitmq.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.rabbitmq.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.rabbitmq.loadbalancer.server.port=15672"
|
||||||
|
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: minio/minio:latest
|
||||||
|
restart: always
|
||||||
|
command: server /data --console-address ":9001" --address ":9000"
|
||||||
|
environment:
|
||||||
|
# Admin credentials for console login
|
||||||
|
- MINIO_ROOT_USER=admin
|
||||||
|
- MINIO_ROOT_PASSWORD=Cbx696969!
|
||||||
|
# Access keys for API access
|
||||||
|
- MINIO_ACCESS_KEY=well_pipe
|
||||||
|
- MINIO_SECRET_KEY=WellNuo_2024
|
||||||
|
# Optional: Force all credentials to be set before starting
|
||||||
|
- MINIO_SITE_REGION=us-east-1
|
||||||
|
- MINIO_BROWSER_REDIRECT_URL=https://minio-console.eluxnetworks.net
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9001:9001" # Adding explicit port mapping for debugging
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/minio:/data
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# API Service
|
||||||
|
- "traefik.http.routers.minio-api.rule=Host(`minio.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-api.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-api.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-api-service.loadbalancer.server.port=9000"
|
||||||
|
- "traefik.http.routers.minio-api.service=minio-api-service"
|
||||||
|
|
||||||
|
# Console Service
|
||||||
|
- "traefik.http.routers.minio-console.rule=Host(`minio-console.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-console.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-console.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-console-service.loadbalancer.server.port=9001"
|
||||||
|
- "traefik.http.routers.minio-console.service=minio-console-service"
|
||||||
|
|
||||||
|
registry:
|
||||||
|
image: registry:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.registry.rule=Host(`repo.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.registry.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.registry.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.registry.loadbalancer.server.port=5000"
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:alpine
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/redis:/data
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
command: redis-server --appendonly yes
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=false" # No need to expose Redis to the internet
|
||||||
186
docker-compose.yml.bak20251026
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
networks:
|
||||||
|
traefik-public:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
image: traefik:latest
|
||||||
|
restart: always
|
||||||
|
# ADD THIS BLOCK TO ENABLE HOST COMMUNICATION
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
# END OF ADDED BLOCK
|
||||||
|
command:
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=false"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
- "--providers.file.directory=/etc/traefik"
|
||||||
|
- "--providers.file.watch=true"
|
||||||
|
- "--entrypoints.web.address=:80"
|
||||||
|
- "--entrypoints.websecure.address=:443"
|
||||||
|
- "--entrypoints.websecure.http.tls=true"
|
||||||
|
- "--entrypoints.websecure.http.tls.certresolver=letsencrypt"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.email=robert@wellnuo.com"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=true"
|
||||||
|
- "--entrypoints.amqp.address=:5672"
|
||||||
|
- "--log.level=DEBUG"
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "8080:8080"
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik/config:/etc/traefik
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Dashboard
|
||||||
|
- "traefik.http.routers.dashboard.rule=Host(`traefik.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
|
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.dashboard.middlewares=auth"
|
||||||
|
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$mG0yHveI$$y2hSROLHtMbuWFK4F.p2c1"
|
||||||
|
|
||||||
|
# ... other services remain unchanged ...
|
||||||
|
nginx:
|
||||||
|
build:
|
||||||
|
context: ./nginx
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /home/ubuntu/www:/usr/share/nginx/html
|
||||||
|
- /mnt/data/well_tests:/usr/share/nginx/html/well_tests
|
||||||
|
- /mnt/data/shared:/usr/share/nginx/html/shared
|
||||||
|
- /home/ubuntu/server-setup/well_mob_pwa/build:/usr/share/nginx/html/react
|
||||||
|
- /home/ubuntu/server-setup/new-portal/dist:/usr/share/nginx/html/portal
|
||||||
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
||||||
|
- ./nginx/.htpasswd:/etc/nginx/.htpasswd:ro
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Main website
|
||||||
|
- "traefik.http.routers.nginx-web.rule=Host(`eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-web.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-web.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-web.service=nginx-web"
|
||||||
|
- "traefik.http.services.nginx-web.loadbalancer.server.port=80"
|
||||||
|
# React app
|
||||||
|
- "traefik.http.routers.nginx-react.rule=Host(`react.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-react.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-react.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-react.service=nginx-react"
|
||||||
|
- "traefik.http.services.nginx-react.loadbalancer.server.port=80"
|
||||||
|
# Portal app
|
||||||
|
- "traefik.http.routers.nginx-portal.rule=Host(`portal.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-portal.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-portal.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-portal.service=nginx-portal"
|
||||||
|
- "traefik.http.services.nginx-portal.loadbalancer.server.port=80"
|
||||||
|
# Security headers middleware
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.stsSeconds=31536000"
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.forceSTSHeader=true"
|
||||||
|
- "traefik.http.routers.nginx-web.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-react.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-portal.middlewares=security-headers"
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
user: "999:65534"
|
||||||
|
image: rabbitmq:3.13-management
|
||||||
|
restart: always
|
||||||
|
hostname: "rabbitmq" # Add this line
|
||||||
|
environment:
|
||||||
|
- RABBITMQ_DEFAULT_USER=admin
|
||||||
|
- RABBITMQ_DEFAULT_PASS=Cbx696969!
|
||||||
|
- RABBITMQ_NODENAME=rabbit@rabbitmq # Add this line
|
||||||
|
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbit log_levels [{connection,error}]
|
||||||
|
- RABBITMQ_MNESIA_DIR=/var/lib/rabbitmq/mnesia
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/rabbitmq:/var/lib/rabbitmq
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- "5672:5672" # AMQP port
|
||||||
|
- "15672:15672" # Management UI
|
||||||
|
expose:
|
||||||
|
- 5672
|
||||||
|
- 15672
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.rabbitmq.rule=Host(`rabbitmq.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.rabbitmq.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.rabbitmq.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.rabbitmq.loadbalancer.server.port=15672"
|
||||||
|
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: minio/minio:latest
|
||||||
|
restart: always
|
||||||
|
command: server /data --console-address ":9001" --address ":9000"
|
||||||
|
environment:
|
||||||
|
# Admin credentials for console login
|
||||||
|
- MINIO_ROOT_USER=admin
|
||||||
|
- MINIO_ROOT_PASSWORD=Cbx696969!
|
||||||
|
# Access keys for API access
|
||||||
|
- MINIO_ACCESS_KEY=well_pipe
|
||||||
|
- MINIO_SECRET_KEY=WellNuo_2024
|
||||||
|
# Optional: Force all credentials to be set before starting
|
||||||
|
- MINIO_SITE_REGION=us-east-1
|
||||||
|
- MINIO_BROWSER_REDIRECT_URL=https://minio-console.eluxnetworks.net
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9001:9001" # Adding explicit port mapping for debugging
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/minio:/data
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# API Service
|
||||||
|
- "traefik.http.routers.minio-api.rule=Host(`minio.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-api.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-api.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-api-service.loadbalancer.server.port=9000"
|
||||||
|
- "traefik.http.routers.minio-api.service=minio-api-service"
|
||||||
|
|
||||||
|
# Console Service
|
||||||
|
- "traefik.http.routers.minio-console.rule=Host(`minio-console.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-console.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-console.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-console-service.loadbalancer.server.port=9001"
|
||||||
|
- "traefik.http.routers.minio-console.service=minio-console-service"
|
||||||
|
|
||||||
|
registry:
|
||||||
|
image: registry:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.registry.rule=Host(`repo.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.registry.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.registry.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.registry.loadbalancer.server.port=5000"
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:alpine
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/redis:/data
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
command: redis-server --appendonly yes
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=false"
|
||||||
192
docker-compose.yml.bak20251028.drysense.working
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
networks:
|
||||||
|
traefik-public:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
|
||||||
|
image: traefik:latest
|
||||||
|
restart: always
|
||||||
|
command:
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=false"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
- "--providers.file.directory=/etc/traefik"
|
||||||
|
- "--providers.file.watch=true"
|
||||||
|
- "--entrypoints.web.address=:80"
|
||||||
|
- "--entrypoints.websecure.address=:443"
|
||||||
|
- "--entrypoints.websecure.http.tls=true"
|
||||||
|
- "--entrypoints.websecure.http.tls.certresolver=letsencrypt"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.email=robert@wellnuo.com"
|
||||||
|
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=true"
|
||||||
|
- "--entrypoints.amqp.address=:5672"
|
||||||
|
- "--log.level=DEBUG"
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "8080:8080" # Add this line for dashboard internal access
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik/config:/etc/traefik
|
||||||
|
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Dashboard
|
||||||
|
- "traefik.http.routers.dashboard.rule=Host(`traefik.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
|
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.dashboard.middlewares=auth"
|
||||||
|
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$mG0yHveI$$y2hSROLHtMbuWFK4F.p2c1"
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
build:
|
||||||
|
context: ./nginx
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /home/ubuntu/www:/usr/share/nginx/html
|
||||||
|
- /mnt/data/well_tests:/usr/share/nginx/html/well_tests
|
||||||
|
- /mnt/data/shared:/usr/share/nginx/html/shared
|
||||||
|
- /home/ubuntu/server-setup/well_mob_pwa/build:/usr/share/nginx/html/react
|
||||||
|
- /home/ubuntu/server-setup/new-portal/dist:/usr/share/nginx/html/portal
|
||||||
|
- /home/ubuntu/server-setup/well-dry-sense/dist:/usr/share/nginx/html/drysense
|
||||||
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
||||||
|
- ./nginx/.htpasswd:/etc/nginx/.htpasswd:ro
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# Main website
|
||||||
|
- "traefik.http.routers.nginx-web.rule=Host(`eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-web.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-web.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-web.service=nginx-web"
|
||||||
|
- "traefik.http.services.nginx-web.loadbalancer.server.port=80"
|
||||||
|
# React app
|
||||||
|
- "traefik.http.routers.nginx-react.rule=Host(`react.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-react.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-react.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-react.service=nginx-react"
|
||||||
|
- "traefik.http.services.nginx-react.loadbalancer.server.port=80"
|
||||||
|
# Portal app
|
||||||
|
- "traefik.http.routers.nginx-portal.rule=Host(`portal.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-portal.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-portal.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-portal.service=nginx-portal"
|
||||||
|
- "traefik.http.services.nginx-portal.loadbalancer.server.port=80"
|
||||||
|
# Drysense app
|
||||||
|
- "traefik.http.routers.nginx-drysense.rule=Host(`drysense.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.nginx-drysense.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nginx-drysense.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.nginx-drysense.service=nginx-drysense"
|
||||||
|
- "traefik.http.services.nginx-drysense.loadbalancer.server.port=80"
|
||||||
|
# Security headers middleware
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.stsSeconds=31536000"
|
||||||
|
- "traefik.http.middlewares.security-headers.headers.forceSTSHeader=true"
|
||||||
|
- "traefik.http.routers.nginx-web.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-react.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-portal.middlewares=security-headers"
|
||||||
|
- "traefik.http.routers.nginx-drysense.middlewares=security-headers"
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
user: "999:65534"
|
||||||
|
image: rabbitmq:3.13-management
|
||||||
|
restart: always
|
||||||
|
hostname: "rabbitmq" # Add this line
|
||||||
|
environment:
|
||||||
|
- RABBITMQ_DEFAULT_USER=admin
|
||||||
|
- RABBITMQ_DEFAULT_PASS=Cbx696969!
|
||||||
|
- RABBITMQ_NODENAME=rabbit@rabbitmq # Add this line
|
||||||
|
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbit log_levels [{connection,error}]
|
||||||
|
- RABBITMQ_MNESIA_DIR=/var/lib/rabbitmq/mnesia
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/rabbitmq:/var/lib/rabbitmq
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- "5672:5672" # AMQP port
|
||||||
|
- "15672:15672" # Management UI
|
||||||
|
expose:
|
||||||
|
- 5672
|
||||||
|
- 15672
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.rabbitmq.rule=Host(`rabbitmq.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.rabbitmq.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.rabbitmq.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.rabbitmq.loadbalancer.server.port=15672"
|
||||||
|
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: minio/minio:latest
|
||||||
|
restart: always
|
||||||
|
command: server /data --console-address ":9001" --address ":9000"
|
||||||
|
environment:
|
||||||
|
# Admin credentials for console login
|
||||||
|
- MINIO_ROOT_USER=admin
|
||||||
|
- MINIO_ROOT_PASSWORD=Cbx696969!
|
||||||
|
# Access keys for API access
|
||||||
|
- MINIO_ACCESS_KEY=well_pipe
|
||||||
|
- MINIO_SECRET_KEY=WellNuo_2024
|
||||||
|
# Optional: Force all credentials to be set before starting
|
||||||
|
- MINIO_SITE_REGION=us-east-1
|
||||||
|
- MINIO_BROWSER_REDIRECT_URL=https://minio-console.eluxnetworks.net
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9001:9001" # Adding explicit port mapping for debugging
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/minio:/data
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
# API Service
|
||||||
|
- "traefik.http.routers.minio-api.rule=Host(`minio.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-api.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-api.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-api-service.loadbalancer.server.port=9000"
|
||||||
|
- "traefik.http.routers.minio-api.service=minio-api-service"
|
||||||
|
|
||||||
|
# Console Service
|
||||||
|
- "traefik.http.routers.minio-console.rule=Host(`minio-console.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.minio-console.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.minio-console.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.minio-console-service.loadbalancer.server.port=9001"
|
||||||
|
- "traefik.http.routers.minio-console.service=minio-console-service"
|
||||||
|
|
||||||
|
registry:
|
||||||
|
image: registry:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.registry.rule=Host(`repo.eluxnetworks.net`)"
|
||||||
|
- "traefik.http.routers.registry.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.registry.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.services.registry.loadbalancer.server.port=5000"
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:alpine
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik-public
|
||||||
|
volumes:
|
||||||
|
- /mnt/data/redis:/data
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
command: redis-server --appendonly yes
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=false" # No need to expose Redis to the internet
|
||||||
BIN
new-portal/assets/fa-brands-400-D1LuMI3I.ttf
Normal file
BIN
new-portal/assets/fa-brands-400-D_cYUPeE.woff2
Normal file
BIN
new-portal/assets/fa-regular-400-BjRzuEpd.woff2
Normal file
BIN
new-portal/assets/fa-regular-400-DZaxPHgR.ttf
Normal file
BIN
new-portal/assets/fa-solid-900-CTAAxXor.woff2
Normal file
BIN
new-portal/assets/fa-solid-900-D0aA9rwL.ttf
Normal file
BIN
new-portal/assets/fa-v4compatibility-C9RhG_FT.woff2
Normal file
BIN
new-portal/assets/fa-v4compatibility-CCth-dXg.ttf
Normal file
109
new-portal/assets/index-1B55Va0l.js
Normal file
9
new-portal/assets/index-DLAHgo0g.css
Normal file
BIN
new-portal/assets/loading-BqYYue-P.gif
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
new-portal/assets/login-background-nXg9yrBY.png
Normal file
|
After Width: | Height: | Size: 577 KiB |
BIN
new-portal/assets/nav-qbtiZ8QF.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
new-portal/dist/assets/fa-brands-400-D1LuMI3I.ttf
vendored
Normal file
BIN
new-portal/dist/assets/fa-brands-400-D_cYUPeE.woff2
vendored
Normal file
BIN
new-portal/dist/assets/fa-regular-400-BjRzuEpd.woff2
vendored
Normal file
BIN
new-portal/dist/assets/fa-regular-400-DZaxPHgR.ttf
vendored
Normal file
BIN
new-portal/dist/assets/fa-solid-900-CTAAxXor.woff2
vendored
Normal file
BIN
new-portal/dist/assets/fa-solid-900-D0aA9rwL.ttf
vendored
Normal file
BIN
new-portal/dist/assets/fa-v4compatibility-C9RhG_FT.woff2
vendored
Normal file
BIN
new-portal/dist/assets/fa-v4compatibility-CCth-dXg.ttf
vendored
Normal file
109
new-portal/dist/assets/index-CViSXwoP.js
vendored
Normal file
9
new-portal/dist/assets/index-Dxv2Uy3x.css
vendored
Normal file
BIN
new-portal/dist/assets/loading-BqYYue-P.gif
vendored
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
new-portal/dist/assets/login-background-nXg9yrBY.png
vendored
Normal file
|
After Width: | Height: | Size: 577 KiB |
BIN
new-portal/dist/assets/nav-qbtiZ8QF.png
vendored
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
new-portal/dist/favicon.ico
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
19
new-portal/dist/index.html
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="icon" href="/favicon.ico">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Configure and manage your WellNuo plugs effortlessly with our user-friendly portal">
|
||||||
|
<meta name="keywords" content="wellnuo, portal, caretaker, plug, beneficiary">
|
||||||
|
<title>WellNuo Portal</title>
|
||||||
|
<script type="module" crossorigin src="/assets/index-CViSXwoP.js"></script>
|
||||||
|
<link rel="stylesheet" crossorigin href="/assets/index-Dxv2Uy3x.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
BIN
new-portal/favicon.ico
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
19
new-portal/index.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="icon" href="/favicon.ico">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Configure and manage your WellNuo plugs effortlessly with our user-friendly portal">
|
||||||
|
<meta name="keywords" content="wellnuo, portal, caretaker, plug, beneficiary">
|
||||||
|
<title>WellNuo Portal</title>
|
||||||
|
<script type="module" crossorigin src="/assets/index-1B55Va0l.js"></script>
|
||||||
|
<link rel="stylesheet" crossorigin href="/assets/index-DLAHgo0g.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
15
traefik/config/drysense.yml.bakSimple
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
http:
|
||||||
|
routers:
|
||||||
|
drysense:
|
||||||
|
rule: "Host(`drysense.eluxnetworks.net`)"
|
||||||
|
entryPoints:
|
||||||
|
- "websecure"
|
||||||
|
service: "drysense-svc"
|
||||||
|
tls:
|
||||||
|
certresolver: "letsencrypt"
|
||||||
|
|
||||||
|
services:
|
||||||
|
drysense-svc:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://host.docker.internal:3012"
|
||||||
@ -7,6 +7,15 @@ http:
|
|||||||
#tls:
|
#tls:
|
||||||
#certresolver: "letsencrypt"
|
#certresolver: "letsencrypt"
|
||||||
#priority: 100
|
#priority: 100
|
||||||
|
|
||||||
|
# ERPNext configuration
|
||||||
|
erpnext:
|
||||||
|
rule: "Host(`erpnext.eluxnetworks.net`)"
|
||||||
|
service: "erpnext-service"
|
||||||
|
entrypoints: ["websecure"]
|
||||||
|
tls:
|
||||||
|
certresolver: "letsencrypt"
|
||||||
|
|
||||||
openfaas-gateway:
|
openfaas-gateway:
|
||||||
rule: "Host(`faasd.eluxnetworks.net`)"
|
rule: "Host(`faasd.eluxnetworks.net`)"
|
||||||
service: "openfaas-gateway-service"
|
service: "openfaas-gateway-service"
|
||||||
@ -25,6 +34,13 @@ http:
|
|||||||
loadBalancer:
|
loadBalancer:
|
||||||
servers:
|
servers:
|
||||||
- url: "http://192.168.68.70:8082/function/well-api"
|
- url: "http://192.168.68.70:8082/function/well-api"
|
||||||
|
|
||||||
|
# ERPNext service
|
||||||
|
erpnext-service:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: "http://192.168.68.70:8090"
|
||||||
|
|
||||||
redis-commander:
|
redis-commander:
|
||||||
loadBalancer:
|
loadBalancer:
|
||||||
servers:
|
servers:
|
||||||
|
|||||||