# Environment NODE_ENV=development PORT=4000 # Database DB_HOST=localhost DB_PORT=5432 DB_USERNAME=cloudhost DB_PASSWORD=cloudhost_secret DB_DATABASE=cloudhost # JWT JWT_SECRET=your-super-secret-jwt-key-change-in-production JWT_EXPIRES_IN=1h JWT_REFRESH_SECRET=your-refresh-secret-key-change-in-production JWT_REFRESH_EXPIRES_IN=7d # Redis REDIS_HOST=localhost REDIS_PORT=6379 # In-cluster Docker Registry (Kaniko push + app image pull — same URL) REGISTRY_URL=registry.cloudhost-builds.svc.cluster.local:5000 # REGISTRY_PULL_URL=registry.cloudhost-builds.svc.cluster.local:5000 # Cluster bootstrap installs cloudhost-node-cluster-dns so nodes resolve *.cluster.local # (required for kubelet image pulls via registry..svc.cluster.local). REGISTRY_USERNAME=admin REGISTRY_PASSWORD=registry_secret # Central logging (Elasticsearch + Kibana) # In-cluster backend: leave ELASTICSEARCH_HOST unset (uses elasticsearch.logging.svc.cluster.local). # Local backend (npm run dev): API auto-runs kubectl port-forward when host is loopback # ELASTICSEARCH_HOST=127.0.0.1 # ELASTICSEARCH_PORT=9200 # ELASTICSEARCH_AUTO_PORT_FORWARD=false # ELASTIC_PASSWORD=CloudHost2024!Secure # KIBANA_SYSTEM_PASSWORD=Kibana2024!System # LOGGING_ELASTICSEARCH_IMAGE=localhost:30500/elasticsearch:8.12.0 # LOGGING_KIBANA_IMAGE=localhost:30500/kibana:8.12.0 # Build BUILD_NAMESPACE=cloudhost-builds BUILD_SERVICE_ACCOUNT=kaniko-builder # Platform PLATFORM_DOMAIN=apps.cloudhost.local UPLOAD_DIR=./uploads # PVC resize: use a dynamic StorageClass with allowVolumeExpansion (k3s: rancher.io/local-path) # k3s: use local-path and skip creating a custom class (set CREATE=false) # PLATFORM_STORAGE_CLASS=local-path # PLATFORM_CREATE_STORAGE_CLASS=false PLATFORM_STORAGE_CLASS=cloudhost-expandable PLATFORM_CREATE_STORAGE_CLASS=true PLATFORM_STORAGE_PROVISIONER=rancher.io/local-path