- logto-bootstrap.sh: API-driven init script that creates SPA app, M2M app, and default user (camel/camel) via Logto Management API. Reads m-default secret from DB, then removes seeded apps with known secrets (security hardening). Idempotent. - PublicConfigController: /api/config public endpoint serves Logto client ID from bootstrap output file (runtime, not build-time) - Frontend: LoginPage + CallbackPage fetch config from /api/config instead of import.meta.env (fixes Vite build-time baking issue) - Docker Compose: logto-bootstrap init service with health-gated dependency chain, shared volume for bootstrap config - SecurityConfig: permit /api/config without auth Flow: docker compose up → bootstrap creates apps/user → SPA fetches config → login page shows → sign in with Logto → camel/camel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
59 lines
1.8 KiB
YAML
59 lines
1.8 KiB
YAML
spring:
|
|
application:
|
|
name: cameleer-saas
|
|
datasource:
|
|
url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://postgres:5432/cameleer_saas}
|
|
username: ${SPRING_DATASOURCE_USERNAME:cameleer}
|
|
password: ${SPRING_DATASOURCE_PASSWORD:cameleer_dev}
|
|
jpa:
|
|
open-in-view: false
|
|
hibernate:
|
|
ddl-auto: validate
|
|
flyway:
|
|
enabled: true
|
|
locations: classpath:db/migration
|
|
security:
|
|
oauth2:
|
|
resourceserver:
|
|
jwt:
|
|
issuer-uri: ${LOGTO_ISSUER_URI:}
|
|
jwk-set-uri: ${LOGTO_JWK_SET_URI:}
|
|
|
|
management:
|
|
endpoints:
|
|
web:
|
|
exposure:
|
|
include: health,info
|
|
endpoint:
|
|
health:
|
|
show-details: when-authorized
|
|
|
|
cameleer:
|
|
jwt:
|
|
expiration: 86400 # 24 hours in seconds
|
|
private-key-path: ${CAMELEER_JWT_PRIVATE_KEY_PATH:}
|
|
public-key-path: ${CAMELEER_JWT_PUBLIC_KEY_PATH:}
|
|
identity:
|
|
logto-endpoint: ${LOGTO_ENDPOINT:}
|
|
m2m-client-id: ${LOGTO_M2M_CLIENT_ID:}
|
|
m2m-client-secret: ${LOGTO_M2M_CLIENT_SECRET:}
|
|
spa-client-id: ${LOGTO_SPA_CLIENT_ID:}
|
|
runtime:
|
|
max-jar-size: 209715200
|
|
jar-storage-path: ${CAMELEER_JAR_STORAGE_PATH:/data/jars}
|
|
base-image: ${CAMELEER_RUNTIME_BASE_IMAGE:cameleer-runtime-base:latest}
|
|
docker-network: ${CAMELEER_DOCKER_NETWORK:cameleer}
|
|
agent-health-port: 9464
|
|
health-check-timeout: 60
|
|
deployment-thread-pool-size: 4
|
|
container-memory-limit: ${CAMELEER_CONTAINER_MEMORY_LIMIT:512m}
|
|
container-cpu-shares: ${CAMELEER_CONTAINER_CPU_SHARES:512}
|
|
bootstrap-token: ${CAMELEER_AUTH_TOKEN:}
|
|
cameleer3-server-endpoint: ${CAMELEER3_SERVER_ENDPOINT:http://cameleer3-server:8081}
|
|
domain: ${DOMAIN:localhost}
|
|
clickhouse:
|
|
enabled: ${CLICKHOUSE_ENABLED:true}
|
|
url: ${CLICKHOUSE_URL:jdbc:clickhouse://clickhouse:8123/cameleer}
|
|
username: ${CLICKHOUSE_USERNAME:default}
|
|
password: ${CLICKHOUSE_PASSWORD:}
|