Some checks failed
CI / Unit & Component Tests (pull_request) Successful in 6m12s
CI / OCR Service Tests (pull_request) Successful in 42s
CI / Backend Unit Tests (pull_request) Failing after 17m13s
CI / fail2ban Regex (pull_request) Successful in 2m37s
CI / Compose Bucket Idempotency (pull_request) Successful in 2m6s
sentry-spring-boot-starter-jakarta 8.5.0 does not support Spring Boot 4.0 — it logs an "Incompatible Spring Boot Version" warning and its SentryAutoConfiguration crashes SF7 bean-name generation. sentry-spring-boot-4 (added in 8.21.0) is the dedicated Spring Boot 4 module with a fixed auto-configuration class. - Replace sentry-spring-boot-starter-jakarta:8.5.0 with sentry-spring-boot-4:8.41.0 - Delete SentryConfig.java — workaround no longer needed, auto-config handles init - Remove spring.autoconfigure.exclude from application.yaml + application-test.yaml - Delete SentryConfigTest.java — tested the deleted workaround class - Update ApplicationContextTest: assert Sentry.isEnabled() is false when no DSN set Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
130 lines
3.4 KiB
YAML
130 lines
3.4 KiB
YAML
spring:
|
|
application:
|
|
name: Familienarchiv
|
|
|
|
datasource:
|
|
url: ${SPRING_DATASOURCE_URL}
|
|
username: ${SPRING_DATASOURCE_USERNAME}
|
|
password: ${SPRING_DATASOURCE_PASSWORD}
|
|
driver-class-name: org.postgresql.Driver
|
|
|
|
flyway:
|
|
enabled: false # Managed explicitly via FlywayConfig bean
|
|
|
|
jpa:
|
|
open-in-view: false # Prevents holding DB connections for the full HTTP request lifecycle
|
|
hibernate:
|
|
ddl-auto: none
|
|
properties:
|
|
hibernate:
|
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
|
show-sql: false
|
|
|
|
servlet:
|
|
multipart:
|
|
max-file-size: 50MB
|
|
max-request-size: 500MB # supports 10-file chunk at max per-file size; see #317
|
|
file-size-threshold: 2KB
|
|
|
|
mail:
|
|
host: ${MAIL_HOST:}
|
|
port: ${MAIL_PORT:587}
|
|
username: ${MAIL_USERNAME:}
|
|
password: ${MAIL_PASSWORD:}
|
|
properties:
|
|
mail:
|
|
smtp:
|
|
auth: true
|
|
starttls:
|
|
enable: true
|
|
|
|
server:
|
|
# Behind Caddy/reverse proxy: trust X-Forwarded-{Proto,For,Host} so that
|
|
# request.getScheme(), redirect URLs, and Spring Session "Secure" cookies
|
|
# reflect the original https client request, not the http hop from Caddy.
|
|
forward-headers-strategy: native
|
|
|
|
management:
|
|
server:
|
|
# Management port is separate from the app port so that:
|
|
# (a) Caddy never proxies /actuator/* (it only routes :8080 → the app port)
|
|
# (b) Prometheus scrapes backend:8081 directly inside archiv-net, not via Caddy
|
|
# (c) Spring Security's session-authenticated filter chain on :8080 never sees actuator requests
|
|
port: 8081
|
|
endpoints:
|
|
web:
|
|
exposure:
|
|
include: health,info,prometheus,metrics
|
|
endpoint:
|
|
prometheus:
|
|
enabled: true
|
|
health:
|
|
mail:
|
|
enabled: false
|
|
tracing:
|
|
sampling:
|
|
probability: 1.0 # 100% in dev; override via MANAGEMENT_TRACING_SAMPLING_PROBABILITY in prod compose
|
|
|
|
# OpenTelemetry trace export — failures are non-fatal (app starts cleanly without Tempo running)
|
|
# The default http://localhost:4317 ensures CI compatibility when no observability stack is present.
|
|
otel:
|
|
service:
|
|
name: familienarchiv-backend
|
|
exporter:
|
|
otlp:
|
|
endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT:http://localhost:4317}
|
|
|
|
springdoc:
|
|
api-docs:
|
|
enabled: false
|
|
swagger-ui:
|
|
enabled: false
|
|
|
|
app:
|
|
s3:
|
|
endpoint: ${S3_ENDPOINT}
|
|
access-key: ${S3_ACCESS_KEY}
|
|
secret-key: ${S3_SECRET_KEY}
|
|
bucket: ${S3_BUCKET_NAME}
|
|
region: ${S3_REGION}
|
|
|
|
base-url: ${APP_BASE_URL:http://localhost:3000}
|
|
|
|
mail:
|
|
from: ${APP_MAIL_FROM:noreply@familienarchiv.local}
|
|
|
|
admin:
|
|
# Key must be `email`, not `username` — UserDataInitializer reads
|
|
# `${app.admin.email:...}`. The env-var name stays APP_ADMIN_USERNAME
|
|
# to match the existing Gitea secrets and DEPLOYMENT.md §3.3.
|
|
# See #513.
|
|
email: ${APP_ADMIN_USERNAME:admin@familienarchiv.local}
|
|
password: ${APP_ADMIN_PASSWORD:admin123}
|
|
|
|
import:
|
|
col:
|
|
index: 0
|
|
box: 1
|
|
folder: 2
|
|
sender: 3
|
|
receivers: 5
|
|
date: 7
|
|
location: 9
|
|
tags: 10
|
|
summary: 11
|
|
transcription: 13
|
|
|
|
ocr:
|
|
sender-model:
|
|
activation-threshold: 100
|
|
retrain-delta: 50
|
|
|
|
sentry:
|
|
dsn: ${SENTRY_DSN:}
|
|
environment: ${SPRING_PROFILES_ACTIVE:dev}
|
|
traces-sample-rate: ${SENTRY_TRACES_SAMPLE_RATE:1.0}
|
|
send-default-pii: false
|
|
enable-tracing: true
|
|
ignored-exceptions-for-type:
|
|
- org.raddatz.familienarchiv.exception.DomainException
|