Compare commits
2 Commits
73b74072df
...
1e7477a5b5
| Author | SHA1 | Date | |
|---|---|---|---|
| 1e7477a5b5 | |||
| 928f7a6c59 |
@@ -94,12 +94,24 @@ jobs:
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
config-inline: |
|
||||
[registry."git.mo-code.at"]
|
||||
http = true
|
||||
insecure = true
|
||||
|
||||
# Pangolin-Bypass: Gitea direkt intern erreichbar machen (10.0.0.22:3000)
|
||||
# Hintergrund: Ohne diesen Eintrag routet der Runner über Pangolin (git.mo-code.at),
|
||||
# was bei großen Docker-Layern (70+ Sekunden Upload) mit 502 abbricht.
|
||||
# Pangolin-Bypass: Gitea intern via HTTP erreichbar machen
|
||||
# Problem: git.mo-code.at ist extern HTTPS (Pangolin), Gitea intern läuft HTTP auf Port 3000.
|
||||
# Alter Fix (/etc/hosts → 10.0.0.22) scheiterte: Docker versuchte HTTPS:443, Port geschlossen.
|
||||
# Lösung: socat proxied lokalen Port 80 → 10.0.0.22:3000
|
||||
# buildkitd nutzt http=true (Port 80) → socat → Gitea:3000 (kein TLS nötig)
|
||||
- name: Registry intern auflösen (Pangolin-Bypass)
|
||||
run: echo "10.0.0.22 git.mo-code.at" | sudo tee -a /etc/hosts
|
||||
run: |
|
||||
which socat || sudo apt-get install -y -q socat
|
||||
echo "127.0.0.1 git.mo-code.at" | sudo tee -a /etc/hosts
|
||||
sudo socat TCP4-LISTEN:80,fork,reuseaddr TCP4:10.0.0.22:3000 &
|
||||
sleep 1
|
||||
echo "✓ Proxy aktiv: git.mo-code.at:80 → 10.0.0.22:3000"
|
||||
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@v3
|
||||
|
||||
@@ -1,47 +1,83 @@
|
||||
# Meldestelle
|
||||
|
||||
> Modulares System für Pferdesportveranstaltungen mit Domain-Driven Design, Kotlin Multiplatform und Microservices.
|
||||
> Modulares System für Pferdesportveranstaltungen — gebaut mit Domain-Driven Design, Kotlin Multiplatform und Microservices.
|
||||
|
||||
[](https://github.com/StefanMoCoAt/meldestelle/actions)
|
||||
[](https://git.mo-code.at/mocode-software/meldestelle/actions)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
|
||||
---
|
||||
|
||||
## 📚 Dokumentation: Die einzige Quelle der Wahrheit
|
||||
## 📚 Dokumentation — Single Source of Truth
|
||||
|
||||
Die gesamte Projekt-Dokumentation – von der Architektur über die fachliche Domäne bis hin zu den Entwickler-Anleitungen – befindet sich im `/docs` Verzeichnis.
|
||||
Die gesamte Projektdokumentation (Architektur, Fachdomäne, Entwickler-Anleitungen) befindet sich im `/docs`-Verzeichnis.
|
||||
|
||||
**Starte hier:**
|
||||
### [**-> docs/README.md**](./docs/README.md)
|
||||
**Starte hier:** [**→ docs/README.md**](./docs/README.md)
|
||||
|
||||
| Bereich | Inhalt |
|
||||
|-----------------------------------------------|---------------------------------------------|
|
||||
| [01_Architecture](./docs/01_Architecture) | Master Roadmap, ADRs, C4-Modelle |
|
||||
| [02_Guides](./docs/02_Guides) | Setup-Anleitungen, Entwickler-Guidelines |
|
||||
| [03_Domain](./docs/03_Domain) | Fachlichkeit, Turnierregeln, Entities |
|
||||
| [07_Infrastructure](./docs/07_Infrastructure) | Docker, Keycloak, CI/CD, Zora-Infrastruktur |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
## 🏗️ Tech Stack
|
||||
|
||||
Diese Befehle starten die Kern-Infrastruktur und die Services.
|
||||
| Schicht | Technologie |
|
||||
|-----------------------|---------------------------------------------------|
|
||||
| **Backend** | Kotlin, Spring Boot 3.x, Spring Cloud Gateway |
|
||||
| **Frontend** | Kotlin Multiplatform (KMP), Compose Multiplatform |
|
||||
| **Datenbank** | PostgreSQL + Exposed / JPA |
|
||||
| **Auth** | Keycloak (OAuth2 / OIDC) |
|
||||
| **Cache** | Valkey |
|
||||
| **Service Discovery** | Consul |
|
||||
| **Tracing** | Zipkin |
|
||||
| **CI/CD** | Gitea Actions + Gitea Registry |
|
||||
| **Infrastruktur** | Proxmox VE, Docker Compose, Pangolin Tunnel |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start (Lokal)
|
||||
|
||||
```bash
|
||||
# 1. Umgebungsvariablen vorbereiten (nur beim ersten Mal)
|
||||
cp .env.example .env
|
||||
|
||||
# 2. Gesamtes System mit Docker Compose starten
|
||||
docker compose up -d
|
||||
# 2. Infrastruktur starten (Postgres, Keycloak, Valkey, Consul, Zipkin)
|
||||
docker compose -f docker-compose.yaml -f dc-infra.yaml up -d
|
||||
|
||||
# 3. Backend-Services starten (Gateway, Ping-Service)
|
||||
docker compose -f docker-compose.yaml -f dc-backend.yaml up -d
|
||||
|
||||
# 4. Ops-Stack starten (Prometheus, Grafana)
|
||||
docker compose -f docker-compose.yaml -f dc-ops.yaml up -d
|
||||
|
||||
# 5. Optional: Web-App starten
|
||||
docker compose -f docker-compose.yaml -f dc-gui.yaml up -d
|
||||
```
|
||||
|
||||
Für detailliertere Anleitungen, wie z.B. das Starten einzelner Services oder das Frontend-Setup, siehe die **[-> Lokale Setup-Anleitung](./docs/02_Onboarding/start-local.md)**.
|
||||
> ⚠️ **Reihenfolge beachten:** Infra muss `healthy` sein, bevor Backend gestartet wird.
|
||||
> Keycloak benötigt ~60–90 Sekunden zum Hochfahren.
|
||||
|
||||
### Wichtige lokale Ports
|
||||
|
||||
| Service | URL |
|
||||
|----------------|-----------------------|
|
||||
| API-Gateway | http://localhost:8081 |
|
||||
| Keycloak Admin | http://localhost:8180 |
|
||||
| Consul UI | http://localhost:8500 |
|
||||
| Grafana | http://localhost:3000 |
|
||||
| Zipkin | http://localhost:9411 |
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Contributing
|
||||
## 🤝 Beitragen
|
||||
|
||||
Beiträge sind willkommen. Bitte beachte unseren [**→ Branch- und PR-Workflow**](./docs/02_Onboarding/branchschutz-und-pr-workflow.md).
|
||||
Beiträge sind willkommen. Bitte lies zunächst die Entwickler-Guides unter [`docs/02_Guides`](./docs/02_Guides).
|
||||
|
||||
---
|
||||
|
||||
## 📜 Lizenz
|
||||
|
||||
Dieses Projekt steht unter der [MIT License](LICENSE).
|
||||
|
||||
|
||||
---
|
||||
**Test-Check vom Arbeitsplatz am Di 03 März 2026 18:50 CET**
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
---
|
||||
type: journal
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
date: 2026-03-06
|
||||
---
|
||||
|
||||
# Session Log — Pipeline Fix v2: connection refused Port 443
|
||||
|
||||
**Datum:** 06.03.2026
|
||||
**Agent:** 👷 Backend Developer
|
||||
**Thema:** CI/CD Pipeline — Alle Builds schlagen fehl mit `connection refused` auf Port 443
|
||||
|
||||
---
|
||||
|
||||
## Problem
|
||||
|
||||
Nach dem ersten Fix (502 Bad Gateway via Pangolin) scheiterten alle 4 Build-Jobs mit:
|
||||
|
||||
```
|
||||
dial tcp 10.0.0.22:443: connect: connection refused
|
||||
```
|
||||
|
||||
### Root Cause
|
||||
|
||||
| Schicht | Ursache |
|
||||
|---|---|
|
||||
| `/etc/hosts`-Fix | `git.mo-code.at → 10.0.0.22` (korrekt) |
|
||||
| Docker-Verhalten | Verbindet bei Registry-Push immer auf **HTTPS Port 443** |
|
||||
| Gitea intern | Läuft auf **HTTP Port 3000** — Port 443 hört niemand |
|
||||
| **Ergebnis** | `connection refused` — falsches Protokoll, falscher Port |
|
||||
|
||||
Der erste Fix hat das Pangolin-Timeout-Problem gelöst, aber den Port/Protokoll-Konflikt aufgedeckt.
|
||||
|
||||
---
|
||||
|
||||
## Lösung
|
||||
|
||||
Zwei-Stufen-Ansatz in `.gitea/workflows/docker-publish.yaml`:
|
||||
|
||||
### Stufe 1: BuildKit auf HTTP umstellen (`setup-buildx-action`)
|
||||
|
||||
```yaml
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
config-inline: |
|
||||
[registry."git.mo-code.at"]
|
||||
http = true
|
||||
insecure = true
|
||||
```
|
||||
|
||||
BuildKit verbindet nun auf **HTTP Port 80** statt HTTPS Port 443.
|
||||
|
||||
### Stufe 2: socat als TCP-Proxy (Port 80 → Gitea:3000)
|
||||
|
||||
```yaml
|
||||
- name: Registry intern auflösen (Pangolin-Bypass)
|
||||
run: |
|
||||
which socat || sudo apt-get install -y -q socat
|
||||
echo "127.0.0.1 git.mo-code.at" | sudo tee -a /etc/hosts
|
||||
sudo socat TCP4-LISTEN:80,fork,reuseaddr TCP4:10.0.0.22:3000 &
|
||||
sleep 1
|
||||
```
|
||||
|
||||
**Traffic-Weg:**
|
||||
```
|
||||
BuildKit → http://git.mo-code.at:80
|
||||
→ /etc/hosts: 127.0.0.1:80
|
||||
→ socat: 127.0.0.1:80 → 10.0.0.22:3000
|
||||
→ Gitea (HTTP, kein TLS nötig)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Warum nicht einfach Port 443 mit socat?
|
||||
|
||||
socat ist ein reiner TCP-Proxy — er versteht kein TLS.
|
||||
Docker erwartet auf Port 443 eine TLS-Verbindung. Gitea:3000 spricht HTTP.
|
||||
→ TLS-Handshake würde sofort scheitern. HTTP auf Port 80 ist die korrekte Lösung.
|
||||
|
||||
---
|
||||
|
||||
## Netzwerk-Übersicht Zora
|
||||
|
||||
| Host | IP | Protokoll |
|
||||
|---|---|---|
|
||||
| Runner (VM 102) | 10.0.0.23 | — |
|
||||
| Gitea (CT 101) | 10.0.0.22 | HTTP :3000 |
|
||||
| Pangolin (CT 100) | 10.0.0.21 | HTTPS-Terminierung für git.mo-code.at |
|
||||
|
||||
---
|
||||
|
||||
## Gelernt
|
||||
|
||||
- `docker/setup-buildx-action` unterstützt `config-inline` für buildkitd.toml-Konfiguration
|
||||
- `http = true` in buildkitd-Registry-Config schaltet von HTTPS auf HTTP um
|
||||
- socat ist auf Ubuntu-Runnern verfügbar (oder schnell installierbar)
|
||||
- Pangolin ist ein HTTPS-Reverse-Proxy — intern HTTP, extern HTTPS → diese Lücke muss im Runner überbrückt werden
|
||||
Reference in New Issue
Block a user