Skip to content

Docker Services

All services are defined in docker-compose.yml and run on the app-network bridge network.


Backend Services

backend-streamsearch

Item Value
Port 7201
Public URL streamsearch.zygy.com (IP-restricted)
Purpose Main search and RAG service. Handles natural language queries, intent detection, knowledge base search, chart generation, and SSE streaming responses
Stack Python, Flask, OpenAI API, Elasticsearch
Key file backend-streamsearch/app.py (~3470 lines)
Data mount /mnt/blockstorage/zygy-data/app/data

Critical environment variables: OPENAI_API_KEY, OPENAI_API_BASE, MODEL_NAME, EMBEDDING_SERVICE_URL, MONGO_URI, API_KEYS


backend-vectorindexing

Item Value
Port 7202
Public URL vectorindexing.zygy.com (IP-restricted)
Purpose Document ingestion. Processes PDF, DOCX, XLSX files; generates vector embeddings; indexes to Elasticsearch
Stack Python, Flask, Elasticsearch, Redis
Key file backend-vectorindexing/app.py
Data mount /mnt/blockstorage/zygy-data/app/data

backend-generatereport

Item Value
Port 7203
Public URL generatereport.zygy.com (IP-restricted)
Purpose Automated report generation from 10 built-in templates (meeting minutes, KPI, sales, financial, etc.) using LLM
Stack Python, Flask, OpenAI API
Key file backend-generatereport/reporttemplate.py
Data mount /mnt/blockstorage/zygy-data/app/data

Available templates: meeting report, staff HR KPI, sales account planning, product requirement, marketing plan, customer review, annual statement, invoice, budget proposal, financial management.


backend-ragevaluation

Item Value
Port 7204 (internal) → 80 (via Caddy)
Public URL eval.zygy.com
Purpose RAG system evaluation dashboard. Manage test sets, run evaluations, view performance metrics
Stack Python, FastAPI, SQLite (rag_evaluation.db)
Health check GET /health
Data mount /mnt/blockstorage/zygy-data/app/data

backend-dailysummary

Item Value
Port 7205 (internal) → 80 (via Caddy)
Public URL daily.zygy.com
Purpose Generates and emails daily summaries on a schedule
Schedule 8 AM Asia/Kuala_Lumpur (SUMMARY_SCHEDULE_HOUR=8)
SMTP smtppro13.mschosting.com:465 (Exabytes)
Health check GET /health

backend-workflow

Item Value
Port 7206
Public URL workflow.zygy.com/api/*
Purpose Workflow orchestration engine. Handles workflow definitions, execution, and the builder API
Stack Python
Dependencies Redis, mongo-tunnel (MongoDB), backend-accounts, backend-agent
Health check curl /health
Metrics Prometheus scrapes /metrics endpoint

backend-accounts

Item Value
Port 7207
Purpose Account management and authentication
Health check wget /health

backend-agent

Item Value
Port 7208
Purpose Autonomous AI agent with web search capabilities
Health check curl /health

backend-taxonomyanalyze

Item Value
Port 7209
Public URL taxonomyanalyze.zygy.com
Purpose Taxonomy analysis service

backend-pageindex

Item Value
Port 7210
Public URL pageindex.zygy.com (IP-restricted)
Purpose Page and document indexing service
Health check GET /health

backend-mcpserver

Item Value
Port 8000
Purpose Model Context Protocol (MCP) server for SQL queries over the SQLite database. Used by backend-streamsearch for CSV/data queries
Stack Python, FastMCP, SQLite
Data mount /mnt/blockstorage/zygy-data/app/data

There is also a separate backend-mcpserver-generatereport instance for the report generation service.


Frontend Services

frontend-workflow

Item Value
Port 3001 (internal) → 80 (container)
Public URL workflow.zygy.com (non-API routes)
Purpose Main workflow builder UI
Stack Node.js, Vite
Build arg VITE_API_KEY — passed at build time from API_KEYS env var

frontend-kanban

Item Value
Port 3003
Purpose Kanban board UI

Infrastructure Services

redis

Item Value
Port 6379 (internal only)
Image redis:7-alpine
Purpose Caching and session management
Config maxmemory 256mb, maxmemory-policy allkeys-lru
Auth Password from REDIS_PASSWORD env var
Health check redis-cli ping every 5 seconds

mongo-tunnel

Item Value
Port 27017 (internal only)
Purpose SSH reverse tunnel that forwards mongo-tunnel:27017103.3.62.250:9823 (MongoDB server)
SSH key /home/zygy/.ssh/id_ed25519 (mounted read-only into container)

See Mongo Tunnel for full details.


Monitoring Stack

caddy

Item Value
Ports 80, 443
Purpose TLS-terminating reverse proxy. Routes all public traffic. Auto-renews Let's Encrypt certificates
Config caddy/Caddyfile
Data volume caddy_data (holds TLS certificates — do not delete)

prometheus

Item Value
Port 9090 (internal)
Purpose Metrics collection
Scrape targets cadvisor, node-exporter, backend-workflow
Retention 7 days / 512 MB
Config monitoring/prometheus.yml

grafana

Item Value
Port 3000 (internal)
Public URL grafana.zygy.com
Default creds admin / admin (change immediately)
Purpose Dashboards for metrics (Prometheus) and logs (Loki)

loki

Item Value
Port 3100 (internal)
Purpose Log aggregation backend
Config monitoring/loki.yml

promtail

Item Value
Purpose Ships Docker container logs to Loki
Config monitoring/promtail.yml

cadvisor

Item Value
Purpose Exports per-container resource metrics to Prometheus

node-exporter

Item Value
Port 9100
Purpose Exports host-level system metrics (CPU, memory, disk) to Prometheus

SQLite Backup Service

Item Value
Image Custom (scripts/Dockerfile.backup)
Purpose Runs scheduled SQLite backups and uploads to Linode Object Storage
Schedule 2 AM daily (Asia/Kuala_Lumpur)
Scripts scripts/backup-cron.shscripts/sqlite-backup.sh

See Scheduled Tasks for full details.


Domain → Service Routing Summary

grafana.zygy.com          →  grafana:3000
eval.zygy.com             →  backend-ragevaluation:80
daily.zygy.com            →  backend-dailysummary:80
workflow.zygy.com /api/*  →  backend-workflow:7206
workflow.zygy.com /*      →  frontend-workflow:80
taxonomyanalyze.zygy.com  →  backend-taxonomyanalyze:7209

# IP-restricted (103.3.62.250 and 115.135.30.38 only):
streamsearch.zygy.com     →  backend-streamsearch:7201
vectorindexing.zygy.com   →  backend-vectorindexing:7202
generatereport.zygy.com   →  backend-generatereport:7203
pageindex.zygy.com        →  backend-pageindex:7210