Die meisten Web-Apps der Atalanta Group laufen auf einer gemeinsamen, gehärteten
Hosting-Plattform (Repo „Investmentplattform"/Polaris). Sie ist die „einzige Quelle der
Wahrheit" für den Betrieb: vollständig per Ansible provisionierbar, Container per rootless
Podman, zentrale Edge (Caddy + oauth2-proxy) mit Microsoft-Entra-SSO und erzwungener
2FA.
atalanta.local,secure_headers) und routet je App einen Domain-Block (edge/Caddyfile).auth.atalanta-group.com) gegen Microsoft Entra@atalanta-group.com. Single-Sign-On über alle Subdomains (Cookie-Domain.atalanta-group.com).X-Auth-Request-Email, TRUST_PROXY_AUTH).ARGUS-Usersallowed_groups am oauth2-proxy).apps/<app>/ mitcompose.yml. Netze: edge_net (extern, an die Edge) und internal (kein Internet,cap_drop: ALL, no-new-privileges, eigene Volumes.apps/_template kopieren → Container-Namen/Image anpassen →ansible-playbook/deploy.sh.scripts/deploy.sh: legt edge_net an, fährt die Edge hoch, lädt das Caddyfileapps/*/-Stacks undscripts/bootstrap.sh: Erst-Provisionierung via Ansible (Dry-Run → Bestätigung → Rollout).internal-Netz (Polaris, Artemis, Track, ARGUS,secrets/secrets.sops.env (SOPS + age). Der/etc/investplattform/age.key).sops secrets/secrets.sops.env (öffnet entschlüsselt, verschlüsselt beim.env; alle podman-compose-Aufrufe--env-file. Vorlage: secrets/secrets.sops.example.env.Rollen in ansible/: base (OS-Härtung: UFW, fail2ban, unattended-upgrades, auditd) ·
wireguard (VPN) · podman (rootless, Lingering) · app (Repo + Secrets entschlüsseln +
systemd-User-Service investplattform.service) · backups (restic).
restic sichert DB-Dumps und App-Volumes verschlüsselt (systemd-Timer) auf eine Hetzner
Storage Box.
GitHub Actions: Trivy-Image-Scans, Linting, Konfig-Validierung (.github/).
docs/01-entra-setup.md … docs/08-corporate-identity.md (Entra, Installation, Runbook,
Sicherheitskonzept, Staging, Betrieb/Roadmap, Discovery-Erweiterung, CI). User-Wiki: wiki/01–10.
Quelle: Investmentplattform/README.md, docs/, edge/Caddyfile, ansible/, scripts/.