Configure external chorus.services domain access
External Domain Configuration: - Updated Docker Swarm for chorus.services domain (202.171.184.242) - Configured dashboard.chorus.services for WHOOSH frontend - Configured api.chorus.services for backend API - Prepared www.chorus.services for marketing website (ready for submodule) Traefik Configuration: - SSL/TLS certificates via Let's Encrypt - Domain redirects: chorus.services → www.chorus.services - Proper CORS origins for external access - Load balancing and high availability Production Endpoints: - Marketing Website: https://www.chorus.services (pending project) - Dashboard: https://dashboard.chorus.services - API: https://api.chorus.services - Documentation: https://api.chorus.services/docs Build System: - Updated build scripts for website integration - Registry image preparation: chorus-website:latest - Management script updates for external domains Ready for website project integration as git submodule when available.
This commit is contained in:
@@ -22,11 +22,16 @@
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Access Points:**
|
**Access Points:**
|
||||||
- 🌐 **WHOOSH Dashboard**: http://localhost:3001
|
- 🌐 **Marketing Website**: https://www.chorus.services (production)
|
||||||
- 📡 **API Documentation**: http://localhost:8087/docs
|
- 🎛️ **Dashboard**: https://dashboard.chorus.services (production)
|
||||||
|
- 📡 **API**: https://api.chorus.services (production)
|
||||||
- 📊 **Grafana Monitoring**: http://localhost:3002 (admin/chorusadmin)
|
- 📊 **Grafana Monitoring**: http://localhost:3002 (admin/chorusadmin)
|
||||||
- 🔍 **Prometheus Metrics**: http://localhost:9092
|
- 🔍 **Prometheus Metrics**: http://localhost:9092
|
||||||
|
|
||||||
|
**Local Development:**
|
||||||
|
- Dashboard: http://localhost:3001
|
||||||
|
- API Docs: http://localhost:8087/docs
|
||||||
|
|
||||||
## 🏗️ Architecture Overview
|
## 🏗️ Architecture Overview
|
||||||
|
|
||||||
CHORUS Services integrates five core components into a unified platform:
|
CHORUS Services integrates five core components into a unified platform:
|
||||||
|
|||||||
52
WEBSITE_INTEGRATION.md
Normal file
52
WEBSITE_INTEGRATION.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# Website Integration - Ready for Submodule Addition
|
||||||
|
|
||||||
|
## Status: Prepared ✅
|
||||||
|
|
||||||
|
The CHORUS Services platform is fully configured for the www.chorus.services website integration. All configuration is ready for when the website project is created.
|
||||||
|
|
||||||
|
## Configuration Complete
|
||||||
|
|
||||||
|
### Docker Swarm Configuration
|
||||||
|
- `docker-compose.swarm.yml` includes `chorus-website` service
|
||||||
|
- Traefik labels configured for `www.chorus.services` and `chorus.services`
|
||||||
|
- Domain redirect: `chorus.services` → `www.chorus.services`
|
||||||
|
- SSL/TLS certificates via Let's Encrypt
|
||||||
|
- Registry image: `registry.home.deepblack.cloud/tony/chorus-website:latest`
|
||||||
|
|
||||||
|
### Build Scripts
|
||||||
|
- `build-and-push.sh` includes website build support
|
||||||
|
- Individual build command: `./build-and-push.sh website`
|
||||||
|
- Integrated with unified build: `./chorus.sh build`
|
||||||
|
|
||||||
|
### Management Integration
|
||||||
|
- `./chorus.sh deploy` includes website in production deployment
|
||||||
|
- Production endpoints configured and documented
|
||||||
|
|
||||||
|
## Next Steps (When Website Project is Ready)
|
||||||
|
|
||||||
|
1. **Add Git Submodule:**
|
||||||
|
```bash
|
||||||
|
git submodule add <website-repo-url> modules/website
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Build and Deploy:**
|
||||||
|
```bash
|
||||||
|
./chorus.sh build # Includes website
|
||||||
|
./chorus.sh deploy # Deploys to production
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Access Points:**
|
||||||
|
- **Marketing**: https://www.chorus.services
|
||||||
|
- **Dashboard**: https://dashboard.chorus.services
|
||||||
|
- **API**: https://api.chorus.services
|
||||||
|
|
||||||
|
## Domain Configuration ✅
|
||||||
|
|
||||||
|
External domains configured with DNS pointing to 202.171.184.242:
|
||||||
|
- `chorus.services` (redirects to www)
|
||||||
|
- `www.chorus.services` (marketing website)
|
||||||
|
- `dashboard.chorus.services` (WHOOSH dashboard)
|
||||||
|
- `api.chorus.services` (API endpoints)
|
||||||
|
- `*.chorus.services` (wildcard for future services)
|
||||||
|
|
||||||
|
All Traefik labels and routing ready for production deployment.
|
||||||
@@ -109,6 +109,13 @@ main() {
|
|||||||
print_warning "SLURP RL Tuner dockerfile not found - skipping"
|
print_warning "SLURP RL Tuner dockerfile not found - skipping"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Marketing Website
|
||||||
|
if [ -d "modules/website" ]; then
|
||||||
|
build_and_push "website" "modules/website"
|
||||||
|
else
|
||||||
|
print_warning "Website directory not found - skipping"
|
||||||
|
fi
|
||||||
|
|
||||||
print_success "All CHORUS Services images built and pushed successfully!"
|
print_success "All CHORUS Services images built and pushed successfully!"
|
||||||
|
|
||||||
# List pushed images
|
# List pushed images
|
||||||
@@ -118,6 +125,7 @@ main() {
|
|||||||
echo " - $REGISTRY/tony/chorus-bzzz-coordinator:$TAG"
|
echo " - $REGISTRY/tony/chorus-bzzz-coordinator:$TAG"
|
||||||
echo " - $REGISTRY/tony/chorus-slurp-api:$TAG"
|
echo " - $REGISTRY/tony/chorus-slurp-api:$TAG"
|
||||||
echo " - $REGISTRY/tony/chorus-slurp-rl-tuner:$TAG"
|
echo " - $REGISTRY/tony/chorus-slurp-rl-tuner:$TAG"
|
||||||
|
echo " - $REGISTRY/tony/chorus-website:$TAG"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Handle command line arguments
|
# Handle command line arguments
|
||||||
@@ -145,6 +153,10 @@ case "${1:-}" in
|
|||||||
docker_login
|
docker_login
|
||||||
build_and_push "slurp-rl-tuner" "modules/slurp" "Dockerfile.rl-tuner"
|
build_and_push "slurp-rl-tuner" "modules/slurp" "Dockerfile.rl-tuner"
|
||||||
;;
|
;;
|
||||||
|
"website")
|
||||||
|
docker_login
|
||||||
|
build_and_push "website" "modules/website"
|
||||||
|
;;
|
||||||
"help"|"-h"|"--help")
|
"help"|"-h"|"--help")
|
||||||
echo "CHORUS Services Build and Push Script"
|
echo "CHORUS Services Build and Push Script"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -158,6 +170,7 @@ case "${1:-}" in
|
|||||||
echo " bzzz Build and push BZZZ coordinator only"
|
echo " bzzz Build and push BZZZ coordinator only"
|
||||||
echo " slurp-api Build and push SLURP API only"
|
echo " slurp-api Build and push SLURP API only"
|
||||||
echo " slurp-rl-tuner Build and push SLURP RL Tuner only"
|
echo " slurp-rl-tuner Build and push SLURP RL Tuner only"
|
||||||
|
echo " website Build and push marketing website only"
|
||||||
echo " help Show this help message"
|
echo " help Show this help message"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -154,8 +154,12 @@ deploy_swarm() {
|
|||||||
|
|
||||||
print_success "CHORUS Services deployed to swarm"
|
print_success "CHORUS Services deployed to swarm"
|
||||||
print_info "Production access points:"
|
print_info "Production access points:"
|
||||||
echo " - WHOOSH Dashboard: https://chorus.home.deepblack.cloud"
|
echo " - Marketing Website: https://www.chorus.services"
|
||||||
echo " - WHOOSH API: https://chorus-api.home.deepblack.cloud"
|
echo " - Dashboard: https://dashboard.chorus.services"
|
||||||
|
echo " - API: https://api.chorus.services"
|
||||||
|
echo " - Documentation: https://api.chorus.services/docs"
|
||||||
|
echo ""
|
||||||
|
print_info "Internal services (*.home.deepblack.cloud):"
|
||||||
echo " - BZZZ Coordinator: https://chorus-bzzz.home.deepblack.cloud"
|
echo " - BZZZ Coordinator: https://chorus-bzzz.home.deepblack.cloud"
|
||||||
echo " - SLURP API: https://chorus-slurp.home.deepblack.cloud"
|
echo " - SLURP API: https://chorus-slurp.home.deepblack.cloud"
|
||||||
echo " - COOEE RL Tuner: https://chorus-cooee.home.deepblack.cloud"
|
echo " - COOEE RL Tuner: https://chorus-cooee.home.deepblack.cloud"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.docker.network=tengig"
|
- "traefik.docker.network=tengig"
|
||||||
- "traefik.http.routers.chorus-api.rule=Host(`chorus-api.home.deepblack.cloud`)"
|
- "traefik.http.routers.chorus-api.rule=Host(`api.chorus.services`)"
|
||||||
- "traefik.http.routers.chorus-api.entrypoints=web-secured"
|
- "traefik.http.routers.chorus-api.entrypoints=web-secured"
|
||||||
- "traefik.http.routers.chorus-api.tls.certresolver=letsencryptresolver"
|
- "traefik.http.routers.chorus-api.tls.certresolver=letsencryptresolver"
|
||||||
- "traefik.http.services.chorus-api.loadbalancer.server.port=8000"
|
- "traefik.http.services.chorus-api.loadbalancer.server.port=8000"
|
||||||
@@ -28,7 +28,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgresql://chorus:choruspass@postgres:5432/chorus_whoosh
|
- DATABASE_URL=postgresql://chorus:choruspass@postgres:5432/chorus_whoosh
|
||||||
- REDIS_URL=redis://redis:6379
|
- REDIS_URL=redis://redis:6379
|
||||||
- CORS_ORIGINS=https://chorus.home.deepblack.cloud
|
- CORS_ORIGINS=https://dashboard.chorus.services,https://www.chorus.services
|
||||||
- ENVIRONMENT=production
|
- ENVIRONMENT=production
|
||||||
- LOG_LEVEL=info
|
- LOG_LEVEL=info
|
||||||
networks:
|
networks:
|
||||||
@@ -53,20 +53,48 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.docker.network=tengig"
|
- "traefik.docker.network=tengig"
|
||||||
- "traefik.http.routers.chorus.rule=Host(`chorus.home.deepblack.cloud`)"
|
- "traefik.http.routers.chorus-dashboard.rule=Host(`dashboard.chorus.services`)"
|
||||||
- "traefik.http.routers.chorus.entrypoints=web-secured"
|
- "traefik.http.routers.chorus-dashboard.entrypoints=web-secured"
|
||||||
- "traefik.http.routers.chorus.tls.certresolver=letsencryptresolver"
|
- "traefik.http.routers.chorus-dashboard.tls.certresolver=letsencryptresolver"
|
||||||
- "traefik.http.services.chorus.loadbalancer.server.port=3000"
|
- "traefik.http.services.chorus-dashboard.loadbalancer.server.port=3000"
|
||||||
- "traefik.http.services.chorus.loadbalancer.passhostheader=true"
|
- "traefik.http.services.chorus-dashboard.loadbalancer.passhostheader=true"
|
||||||
environment:
|
environment:
|
||||||
- REACT_APP_API_URL=https://chorus-api.home.deepblack.cloud
|
- REACT_APP_API_URL=https://api.chorus.services
|
||||||
- REACT_APP_WS_URL=wss://chorus-api.home.deepblack.cloud
|
- REACT_APP_WS_URL=wss://api.chorus.services
|
||||||
networks:
|
networks:
|
||||||
- tengig
|
- tengig
|
||||||
- chorus_network
|
- chorus_network
|
||||||
depends_on:
|
depends_on:
|
||||||
- whoosh-backend
|
- whoosh-backend
|
||||||
|
|
||||||
|
# Marketing Website
|
||||||
|
chorus-website:
|
||||||
|
image: registry.home.deepblack.cloud/tony/chorus-website:latest
|
||||||
|
deploy:
|
||||||
|
replicas: 2
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
- node.role == worker
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.docker.network=tengig"
|
||||||
|
- "traefik.http.routers.chorus-website.rule=Host(`www.chorus.services`) || Host(`chorus.services`)"
|
||||||
|
- "traefik.http.routers.chorus-website.entrypoints=web-secured"
|
||||||
|
- "traefik.http.routers.chorus-website.tls.certresolver=letsencryptresolver"
|
||||||
|
- "traefik.http.services.chorus-website.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.services.chorus-website.loadbalancer.passhostheader=true"
|
||||||
|
# Redirect naked domain to www
|
||||||
|
- "traefik.http.middlewares.chorus-redirect.redirectregex.regex=^https://chorus.services/(.*)"
|
||||||
|
- "traefik.http.middlewares.chorus-redirect.redirectregex.replacement=https://www.chorus.services/$${1}"
|
||||||
|
- "traefik.http.routers.chorus-website.middlewares=chorus-redirect"
|
||||||
|
networks:
|
||||||
|
- tengig
|
||||||
|
|
||||||
# BZZZ - P2P Agent Coordination
|
# BZZZ - P2P Agent Coordination
|
||||||
bzzz-coordinator:
|
bzzz-coordinator:
|
||||||
image: registry.home.deepblack.cloud/tony/chorus-bzzz-coordinator:latest
|
image: registry.home.deepblack.cloud/tony/chorus-bzzz-coordinator:latest
|
||||||
|
|||||||
Reference in New Issue
Block a user