🇪🇺 Made in Europe · Digitale Souveränität · Kein US-Cloud Act · Kein Vendor Lock-in
GitWall ist eine moderne, selbst gehostete Git-Plattform aus Europa. Sie kombiniert Repository-Hosting, Pull Requests, Issues, Teams, CI/CD und KI-Funktionen in einer schlanken Anwendung — vollständig auf deiner eigenen Infrastruktur, ohne Abhängigkeit von US-Hyperscalern.
Dein Code gehört dir. Deine Infrastruktur. Deine Regeln.
| Anforderung | GitWall | GitHub (Microsoft) | GitLab SaaS |
|---|---|---|---|
| Kein US-Cloud Act | ✅ Self-hosted, EU-Server | ❌ US-Konzern, CLOUD Act greift | ❌ SaaS auf US-Infrastruktur |
| DSGVO-konform | ✅ Keine Drittanbieter | ⚠️ US-Datentransfers | ⚠️ US-Datentransfers |
| Verschlüsselte Repos | ✅ AES-256-GCM | ❌ Nicht projektseitig steuerbar | ❌ Plattformabhängig |
| Volle Datenkontrolle | ✅ Alles bei dir | ❌ Beim Anbieter | ❌ Beim Anbieter |
| EU-KI-Anbieter | ✅ Mistral / Ollama | ❌ OpenAI / Azure | ⚠️ Kein direkter EU-Fokus |
| Secret-Scanning ab Push | ✅ Pre-Receive-Hook | ⚠️ Nur auf GitHub.com (SaaS) | ⚠️ Nur in höheren Tiers |
| Rate Limiting & IP-Blacklist | ✅ Admin-UI, sofort wirksam | ❌ Nicht konfigurierbar | ⚠️ Nur Enterprise |
| Self-hosted ohne Overhead | ✅ Docker Compose | ❌ Kein echter Self-Hosting-Pfad | ⚠️ Komplex im Betrieb |
GitWall setzt andere Prioritäten: Besitz, Klarheit und Kontrolle statt Feature-Bloat.
| Thema | GitWall | GitHub | GitLab | Codeberg |
|---|---|---|---|---|
| Hosting | Komplett selbst hostbar | Primär SaaS-zentriert | Self-Hosted möglich, aber aufwendig | Community-Plattform (Forgejo) |
| Datenkontrolle | Repos und Infrastruktur vollständig bei dir | Beim US-Anbieter | Bei Self-Hosting bei dir | Auf Codeberg, nicht deiner Instanz |
| Repo-Speicherung | AES-256-GCM verschlüsselt | Plattformabhängig | Plattformabhängig | Standard Forgejo/Gitea |
| US-Cloud Act | Nicht anwendbar | Anwendbar | SaaS: anwendbar | Auf EU-Servern, kein US-Konzern |
| KI-Integration | Mistral (EU) + Ollama lokal | OpenAI / Copilot (US) | Keine EU-native KI | Keine KI |
| Setup | Docker Compose (built-in autocert) | Kein Self-Hosting | Aufwendig | Plattform, kein Eigenbetrieb |
on.push.tags)/-/admin/logs)gitwall/leakguard@v1 CI-Action, 150+ Regeln, Markdown-Summary.gitwall/workflows/) — sicherer Ausführungspfad, Trigger nur aus .gitwall/, Migration aus .github/workflows/ mit automatischer Action-Konvertierunggitwall/checkout@v1, gitwall/setup-go@v1, gitwall/setup-python@v1, gitwall/install-packages@v1, gitwall/leakguard@v1 u.v.m./-/admin/security), IP/CIDR-Sperrung sofort wirksam ohne Neustartcp .env.example .env
Dann in .env mindestens setzen:
POSTGRES_PASSWORD — sicheres DatenbankpasswortENCRYPTION_KEY — 64 Hex-Zeichen (openssl rand -hex 32)ACME_DOMAIN — öffentliche Domain, z. B. git.example.com (DNS muss auf den Server zeigen, Ports 80 + 443 müssen offen sein)ACME_EMAIL — E-Mail für Let's-Encrypt-Ablaufbenachrichtigungen (optional)Danach starten (Image wird automatisch von Docker Hub gezogen):
docker compose up -d
Die App ist danach unter https://<ACME_DOMAIN> erreichbar. TLS-Zertifikat wird automatisch von Let's Encrypt bezogen.
Erster Admin: Beim ersten Aufruf der App wird automatisch ein Setup-Wizard geöffnet (
/setup). Dort kannst du Admin-Account und Organisation direkt im Browser anlegen — kein SQL nötig.Falls du dich bereits über
/registerregistriert hast:docker compose exec postgres psql -U gitwall -d gitwall \ -c "UPDATE users SET is_admin=true WHERE username='dein-username';"
Der Runner läuft als separater Container und muss einmalig gebaut werden:
docker compose build runner
docker compose up -d runner
Danach erscheint er im Admin-Bereich unter /-/admin/runners als „Pending" — dort einmalig genehmigen, danach beginnt er sofort mit dem Job-Polling.
make run
Weitere nützliche Befehle:
make testmake devmake docker-upmake gen-keyGitWall passt besonders gut für:
GitWall enthält eine eingebaute CI/CD-Engine, die GitHub-Actions-kompatible Workflows versteht.
GitWall führt nur Workflows aus .gitwall/workflows/ aus — .github/workflows/ dient nur als Referenz/Migration.
Lege eine Workflow-Datei im Repository ab oder benutze den visuellen Workflow-Editor unter /{owner}/{repo}/actions/editor:
.gitwall/pipeline.yml # GitWall-native (einfacher Einstieg)
.gitwall/pipeline.gwb # GitWall BASIC
.gitwall/workflows/ci.yml # GitWall-native (mehrere Workflows)
.gitwall/workflows/deploy.gwb # GitWall BASIC (mehrere Workflows)
.github/workflows/ci.yml # GitHub-Actions-kompatibel (nur lesen, nicht ausführen)
Bestehende .github/workflows/-Dateien lassen sich mit einem Klick migrieren — bekannte Actions wie actions/checkout → gitwall/checkout@v1 werden automatisch konvertiert, unbekannte Actions kommentiert.
Zusätzlich unterstützt GitWall jetzt ein BASIC-ähnliches Workflow-Format (.gwb). Es ist blockbasiert statt YAML-lastig und wird intern in das normale Workflow-Modell kompiliert.
Unterstützte Trigger: push, pull_request, workflow_dispatch, tag
Automatische push-Runs lassen sich per Commit-Message überspringen, z. B. mit #skip-ci, [skip ci] oder [ci skip].
Beispiel in GitWall BASIC:
WORKFLOW "CI"
ON PUSH
PUSH_BRANCH "main"
JOB "build"
NAME "Build and test"
RUNS_ON "ubuntu-latest"
STEP "Checkout"
USE "gitwall/checkout@v1"
END STEP
STEP "Test"
RUN """
go test ./...
"""
END STEP
END JOB
String-Builtins für das BASIC-Format: CONTAINS(...), LEN(...), REPLACE(...).
name: CI
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: gitwall/checkout@v1 # Checkout (runner-seitig)
- uses: gitwall/leakguard@v1 # Secret-Scan (server-seitig, sofort)
with:
fail-on-leak: "true"
min-confidence: "0.75"
- name: Build
run: go build ./...
- name: Test
run: go test ./...
GitWall bringt fertige Actions mit, die direkt in Workflows genutzt werden können:
| Action | Ausführung | Beschreibung |
|---|---|---|
gitwall/checkout@v1 | Runner | Checkout des Repos in den Arbeitsbereich |
gitwall/setup-go@v1 | Runner | Go-Version installieren/aktivieren |
gitwall/setup-python@v1 | Runner | Python-Version installieren/aktivieren |
gitwall/upload-artifact@v1 | Runner | Artefakte hochladen |
gitwall/download-artifact@v1 | Runner | Artefakte herunterladen |
gitwall/create-release@v1 | Runner | GitHub-Release erstellen |
gitwall/install-packages@v1 | Runner | Debian-Pakete via apt-get installieren |
gitwall/docker-buildx@v1 | Runner | Docker Buildx einrichten |
gitwall/docker-login@v1 | Runner | Docker Registry Login |
gitwall/docker-build@v1 | Runner | Docker Image bauen und pushen |
gitwall/az-login@v1 | Runner | Azure Login per Service Principal |
gitwall/az-cli@v1 | Runner | Generische Azure-CLI-Befehle ausführen |
gitwall/acr-login@v1 | Runner | Bei Azure Container Registry anmelden |
gitwall/acr-build@v1 | Runner | Docker-Image direkt in ACR bauen |
gitwall/acr-push@v1 | Runner | Lokales Image nach ACR pushen |
gitwall/aks-set-context@v1 | Runner | AKS-Credentials holen und kubectl konfigurieren |
gitwall/aks-deploy@v1 | Runner | Kubernetes-Manifeste nach AKS deployen |
gitwall/leakguard@v1 | Server | Scannt Commit auf 150+ Credential-Muster, schreibt Markdown-Summary |
LeakGuard-Parameter:
fail-on-leak: "true" — Step schlägt fehl bei Fund (Standard)min-confidence: "0.75" — Mindest-Confidence-Schwelle (0.0–1.0)Der visuelle Editor ist unter /{owner}/{repo}/actions/editor erreichbar:
Für native Builds vor gitwall/setup-rust@v1 oder anderen compilierten Abhängigkeiten:
- uses: gitwall/install-packages@v1
with:
packages: |
build-essential
pkg-config
libssl-dev
- uses: gitwall/setup-rust@v1
- uses: gitwall/az-login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: gitwall/acr-build@v1
with:
registry-name: myregistry
image: myapp:${{ github.sha }}
- uses: gitwall/aks-set-context@v1
with:
resource-group: rg-prod
cluster-name: aks-prod
- uses: gitwall/aks-deploy@v1
with:
manifests: k8s/
Runner registrieren sich automatisch beim Start — kein Pre-Shared-Secret nötig:
docker compose build runnerdocker compose up -d runnerDer Runner generiert beim Start einen eigenen Token (gwr_-Prefix), speichert ihn lokal und registriert sich beim Server. Nach Admin-Genehmigung pollt er Jobs per FOR UPDATE SKIP LOCKED atomar ab und führt Steps in einem temporären Verzeichnis aus.
Unter Einstellungen → Secrets eines Repositories kannst du verschlüsselte Secrets anlegen. Sie werden bei Laufzeit als Umgebungsvariablen (${{ secrets.MEIN_TOKEN }}) in jeden Step injiziert und im Log automatisch maskiert.
export APP_URL=http://localhost:8080
go run . # App starten
# Runner-Image bauen
docker compose build runner
# Runner über Admin-UI starten (/-/admin/runners)
# Docker-Socket wird automatisch erkannt (macOS + Linux)
Unter /{owner}/{repo}/docs findet sich der Docs-Tab. Mit einem Klick auf „Mit AI generieren" (erfordert USE_AI=true + MISTRAL_API_KEY):
DOCS.md mit Abschnitten: Overview, Architecture, Getting Started, Configuration, API Reference, ContributingDOCS.md auf den aktuellen BranchBestehende DOCS.md kann manuell editiert und gespeichert werden.
Unter /-/admin/security können Admins ohne Neustart konfigurieren:
1.2.3.4) oder CIDRs (10.0.0.0/8) mit Begründung sperren| Limit | Standard | Beschreibung |
|---|---|---|
| Login max. Fehlversuche | 5 | Fehlversuche pro Fenster |
| Login Fenster | 10 min | Beobachtungszeitraum |
| Login Lockout | 15 min | Sperrzeit nach Überschreitung |
| Register max. | 5 | Registrierungen pro Fenster |
| Global max. (req/IP) | 0 (off) | Gesamtlimit pro IP — 0 = deaktiviert |
Alle Limits werden nach dem Speichern sofort in den Arbeitsspeicher geladen.
GitWall bringt jetzt eine tokenbasierte JSON-API unter /api/v1 mit. Sie nutzt die bestehenden Access-Tokens aus den Benutzereinstellungen und ist ueber den Admin-Bereich konfigurierbar:
/-/admin/api → API global aktivieren/deaktivierenBeispiel: letzte Runs eines Repositories abrufen
curl -H "Authorization: Bearer gw_xxx" \
https://gitwall.example/api/v1/repos/acme/demo/actions/runs
Logs eines bestimmten Runs:
curl -H "Authorization: Bearer gw_xxx" \
https://gitwall.example/api/v1/repos/acme/demo/actions/runs/<run-id>/logs
Verfuegbare Endpunkte:
GET /api/v1/docsGET /api/v1/openapi.jsonGET /api/v1/ci/catalogGET /api/v1/actions/runsGET /api/v1/repos/{owner}/{repo}/actions/runsGET /api/v1/repos/{owner}/{repo}/actions/runs/{runID}GET /api/v1/repos/{owner}/{repo}/actions/runs/{runID}/logsGET /api/v1/repos/{owner}/{repo}/actions/workflowsZusätzlich kann GitWall als verschlüsselter Cloud-Sync-Endpunkt für EnVault / ev dienen. Benutzer legen eigene Secret Stores an, erhalten dafür separate Store-Tokens und synchronisieren nur den verschlüsselten Vault-Blob — GitWall kann den Inhalt nicht lesen.
/-/admin/api → EnVault Sync aktivieren/deaktivieren/settings/envaultev cloud setupEndpunkte:
POST /api/v1/envault/storesGET /api/v1/envault/storesDELETE /api/v1/envault/stores/{id}GET /api/v1/envault/sync/{id}/PUT /api/v1/envault/sync/{id}/GitWall ist produktionsreif für Teams, die digitale Souveränität ernst nehmen. Kernfunktionen, Sicherheit und EU-Compliance stehen im Vordergrund — kein Feature-Bloat, kein US-Cloud Act, kein Vendor Lock-in.
🇪🇺 Self-hosted. Open Stack. Ihre Infrastruktur. Ihre Regeln.
Content type
Image
Digest
sha256:b8266e431…
Size
76 MB
Last updated
6 days ago
docker pull noxway/gitwall