fix: Gitea Traefik routing and connection pool optimization
Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled

- Remove middleware reference from Gitea Traefik labels (caused routing issues)
- Optimize Gitea connection pool settings (MAX_IDLE_CONNS=30, authentication_timeout=180s)
- Add explicit service reference in Traefik labels
- Fix intermittent 504 timeouts by improving PostgreSQL connection handling

Fixes Gitea unreachability via git.michaelschiemer.de
This commit is contained in:
2025-11-09 14:46:15 +01:00
parent 85c369e846
commit 36ef2a1e2c
1366 changed files with 104925 additions and 28719 deletions

View File

@@ -0,0 +1,41 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "LiveComponent Action Request",
"description": "Schema for validating LiveComponent action requests",
"type": "object",
"required": ["method", "params", "state", "_csrf_token"],
"properties": {
"method": {
"type": "string",
"description": "Component action method name",
"minLength": 1,
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
},
"params": {
"type": "object",
"description": "Action parameters (key-value pairs)",
"additionalProperties": true
},
"state": {
"type": "object",
"description": "Current component state",
"additionalProperties": true
},
"_csrf_token": {
"type": "string",
"description": "CSRF token for security validation",
"minLength": 1
},
"fragments": {
"type": "array",
"description": "Optional fragment names for partial rendering",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,105 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "LiveComponent Action Response",
"description": "Schema for validating LiveComponent action responses",
"oneOf": [
{
"type": "object",
"title": "Full HTML Response",
"required": ["html", "state"],
"properties": {
"html": {
"type": "string",
"description": "Rendered component HTML"
},
"state": {
"$ref": "#/definitions/componentState"
},
"events": {
"type": "array",
"description": "Component events to dispatch",
"items": {
"$ref": "#/definitions/componentEvent"
}
}
},
"additionalProperties": false
},
{
"type": "object",
"title": "Fragment Response",
"required": ["fragments", "state"],
"properties": {
"fragments": {
"type": "object",
"description": "Fragment map for partial rendering",
"additionalProperties": {
"type": "string"
}
},
"state": {
"$ref": "#/definitions/componentState"
},
"events": {
"type": "array",
"description": "Component events to dispatch",
"items": {
"$ref": "#/definitions/componentEvent"
}
}
},
"additionalProperties": false
}
],
"definitions": {
"componentState": {
"type": "object",
"required": ["id", "component", "data", "version"],
"properties": {
"id": {
"type": "string",
"description": "Component ID (format: component-name:instance-id)",
"pattern": "^[a-z0-9_-]+:[a-z0-9_.-]+$"
},
"component": {
"type": "string",
"description": "Component name",
"minLength": 1
},
"data": {
"type": "object",
"description": "Component state data",
"additionalProperties": true
},
"version": {
"type": "integer",
"description": "State version number",
"minimum": 1
}
},
"additionalProperties": false
},
"componentEvent": {
"type": "object",
"required": ["name", "payload"],
"properties": {
"name": {
"type": "string",
"description": "Event name",
"minLength": 1
},
"payload": {
"type": "object",
"description": "Event payload data",
"additionalProperties": true
},
"target": {
"type": ["string", "null"],
"description": "Target component ID (null for broadcast)"
}
},
"additionalProperties": false
}
}
}

View File

@@ -0,0 +1,59 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "LiveComponent Error Response",
"description": "Schema for standardized error responses from LiveComponent API",
"type": "object",
"required": ["success", "error"],
"properties": {
"success": {
"type": "boolean",
"const": false
},
"error": {
"type": "object",
"required": ["code", "message"],
"properties": {
"code": {
"type": "string",
"description": "Error code identifier",
"enum": [
"VALIDATION_ERROR",
"COMPONENT_NOT_FOUND",
"ACTION_NOT_FOUND",
"CSRF_TOKEN_INVALID",
"RATE_LIMIT_EXCEEDED",
"STATE_CONFLICT",
"UPLOAD_FAILED",
"PERMISSION_DENIED",
"INTERNAL_ERROR"
]
},
"message": {
"type": "string",
"description": "Human-readable error message",
"minLength": 1
},
"details": {
"type": "object",
"description": "Additional error details",
"additionalProperties": true
},
"componentId": {
"type": "string",
"description": "Component ID where error occurred"
},
"action": {
"type": "string",
"description": "Action method name that caused the error"
},
"timestamp": {
"type": "number",
"description": "Unix timestamp of error occurrence"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}