Deployment: hbf-core
Infrastructure config for this service. Full platform deployment:
docs/architecture/deployment.md
Runtime
- Port: 8080
- Base image: maven:3.9.7-eclipse-temurin-21 (build), eclipse-temurin:21-jdk (runtime)
- Start command:
java -javaagent:/opt/elastic-apm-agent.jar -jar hbf-core.jar -Xms512m -Xmx1024m - Health check: Spring Actuator health probes enabled (
management.endpoint.health.probes.enabled=true) at/actuator/health; custom endpoint atGET /{tenant}/health-check
Required Environment Variables
Database
| Variable | Default | Description |
|---|---|---|
| MONGODB_URL | mongodb://localhost:27017/hbf?replicaSet=rs0 | MongoDB connection string |
Redis / Cache
| Variable | Default | Description |
|---|---|---|
| REDIS_URL | redis://localhost:6379 | Redis connection URL |
| REDIS_DATABASE | 0 | Redis database index |
| REDIS_SSL_ENABLED | false | Enable TLS for Redis connection |
| REDIS_ENTRIES_TTL | 604800000 | NLU detection cache TTL in milliseconds (7 days) |
| CACHE_ENABLED | false | Enable Redis-backed NLU detection cache |
| CACHE_INTERVAL_MILLIS | 60000 | In-memory monitor cache refresh interval |
Security / Auth
| Variable | Default | Description |
|---|---|---|
| APP_SECURITY_API_DEPLOYMENT_TOKEN_SECRET | APISECRET | Secret for signing API deployment tokens |
Application
| Variable | Default | Description |
|---|---|---|
| APP_MODE | Development (local) | Displayed in welcome message and Swagger UI |
| APP_URL | http://localhost:8080 | Public URL of this service |
| USER_INACTIVE_DAYS | 30 | Days before an inactive user is flagged |
Email (SMTP)
| Variable | Default | Description |
|---|---|---|
| EMAIL_HOST | localhost | SMTP server hostname |
| EMAIL_USERNAME | username | SMTP auth username |
| EMAIL_PASSWORD | password | SMTP auth password |
| EMAIL_SMTP_PORT | 587 | SMTP port |
| EMAIL_SMTP_AUTH | true | Enable SMTP authentication |
| EMAIL_SMTP_TLS | true | Enable STARTTLS |
| EMAIL_SMTP_TLS_REQUIRED | true | Require STARTTLS |
| EMAIL_FROM | support@helvia.ai | Sender address |
| EMAIL_FROM_NAME | Helvia Support | Sender display name |
| EMAIL_SUPPORT_ADDRESS | support@helvia.ai | Support reply-to address |
| EMAIL_SYSADMIN_ADDRESS | sysadmin@helvia.io | System admin alert address |
| EMAIL_COMPANY_LOGO_URL | (Cloudinary URL) | Logo URL embedded in email templates |
| EMAIL_COMPANY_WEBSITE_URL | https://helvia.ai/ | Company website link in emails |
| EMAIL_VERIFICATION_TOKEN_EXPIRATION_SECONDS | 10800 | Email verification token TTL (3 h) |
| FORGOT_PASSWORD_TOKEN_EXPIRATION_SECONDS | 900 | Password reset token TTL (15 min) |
Console / Frontend URLs
| Variable | Default | Description |
|---|---|---|
| CONSOLE_BASE_URL | https://console.helvia.io | Base URL of the management console |
| CONSOLE_EMAIL_VERIFICATION_PATH | /email-verification/%s | Path template for email verification links |
| CONSOLE_FORGOT_PASSWORD_PATH | /forgot-password/%s | Path template for password reset links |
| CONSOLE_USER_INVITATION_PATH | /user-invitation/%s | Path template for user invitation links |
| CONSOLE_ORGANIZATION_SINGLE_VIEW_PATH | /org/{id} | Path template for org deep-link |
External Service URLs
| Variable | Default | Description |
|---|---|---|
| DIRECTLINE_BASEURL | https://directline.botframework.com/v3/directline | Azure Bot Framework DirectLine base URL |
| DIRECTLINE_SECRET | secret | DirectLine channel secret |
| AZURE_SPEECH_BASEURL | https://westeurope.api.cognitive.microsoft.com/sts/v1.0/issueToken | Azure Speech token endpoint |
| AZURE_SPEECH_SECRET | secret | Azure Speech subscription key |
| UPTIMEROBOT_BASEURL | https://api.uptimerobot.com/v2/ | UptimeRobot API base URL |
| UPTIMEROBOT_APIKEY | secret | UptimeRobot API key |
| UPTIMEROBOT_INTERVAL | 300 | Monitor check interval in seconds |
| UPTIMEROBOT_WEBHOOK_ALERT_CONTACT_ID | (empty) | UptimeRobot alert contact ID for webhooks |
| UPTIMEROBOT_ALERT_THRESHOLD | 0 | Alert threshold |
| UPTIMEROBOT_ALERT_RECURRENCE | 0 | Alert recurrence setting |
| CHATBOTS_BASEURL | https://bot-v5.helvia.io | hbf-bot base URL used for health checks |
| LIVECHAT_URL | http://localhost:4000 | Livechat service URL |
| LIVECHAT_API_TOKEN | api_token | Livechat service API token |
| NOTIFICATION_URL | http://localhost:2048 | Notification service URL |
| NOTIFICATION_API_TOKEN | api_token | Notification service API token |
| HELVIA_SDS_URL | sem_doc_seg_url | Semantic Doc Segmenter service URL |
| HELVIA_SDS_API_KEY | secret | Semantic Doc Segmenter API key |
| GPT_PIPELINE_TOKEN | gpt_pipeline_token | Helvia GPT pipeline auth token |
| GPT_PIPELINE_URL | gpt_pipeline_url | Helvia GPT pipeline URL |
| LANGUAGE_TOOL_URL | language_tool_url | LanguageTool service URL |
| AUTO_BOT_URL | http://localhost:1357 | AutoBot service URL |
| AUTO_BOT_TOKEN | auto_bot_token | AutoBot API token |
| AUTO_BOT_ENV | development | AutoBot environment name |
| DATA_MANAGER_URL | http://localhost:3000 | Data Manager service URL |
| DATA_MANAGER_TOKEN | api_token | Data Manager API token |
Microsoft OAuth / Bot Framework
| Variable | Default | Description |
|---|---|---|
| MICROSOFT_SECRET | secret | Microsoft app client secret |
| MICROSOFT_ID | ms_id | Microsoft app client ID |
Google OAuth / Translate
| Variable | Default | Description |
|---|---|---|
| GOOGLE_SECRET | secret | Google OAuth client secret |
| GOOGLE_ID | google_id | Google OAuth client ID |
| GOOGLE_TOKEN | google_token | Google API token |
| GOOGLE_FOLDER_ID | google_folder_id | Google Drive folder ID |
| GOOGLE_TRANSLATE_API_KEY | apiKey | Google Translate API key |
| GOOGLE_TRANSLATE_ENABLED | false | Enable Google Translate for NLU content |
NLU / Azure AI
| Variable | Default | Description |
|---|---|---|
| LUIS_HOST | https://luis.api.cognitive.microsoft.com/ | LUIS authoring API base URL |
| LUIS_AUTHORING_KEY | authoringKey | LUIS authoring key |
| APP_AZURE_API_URL | apiUrl | Azure AI API URL (language detection) |
| APP_AZURE_API_KEY | apiKey | Azure AI API key |
| APP_AZURE_DETECTLANGUAGE_PROMPT | prompt | System prompt for language detection |
| APP_AZURE_DETECTLANGUAGE_DEPLOYMENT | deployment | Azure deployment name for language detection |
Templates
| Variable | Default | Description |
|---|---|---|
| TEMPLATE_AGENT_ID | agent_id | Default template agent ID |
Docker
# Build
docker build -t hbf-core .
# Run (local dev)
docker compose up
docker-compose includes:
- MongoDB: mongo:8.2.1 with replica set (
rs0) - Redis: bitnami/redis
CI/CD
- Trigger: push to main/staging/develop
- Pipelines: ci.yml (deploy), tests.yml (PR tests with docker compose MongoDB)
- Steps: SonarQube audit -> Docker build -> Push to ECR -> Deploy to EKS
- Deploy target: AWS EKS (helvia-dev, helvia-stg, helvia)
Notes
- Java/Kotlin Spring Boot application. Only service in the platform that uses MongoDB.
- Elastic APM agent is bundled in the Docker image and attached via
-javaagentat startup. - Has isolved-specific Kubernetes deployment manifests for dedicated client environments.
- PR test pipeline spins up MongoDB via docker compose for integration tests.