13
00 TASKS
Thore Cimbal edited this page 2026-07-31 21:53:07 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

aXion1337.Chat Task List & Meilensteine

Last Updated: 2026-07-30
Statusübersicht: [ 13 Abgeschlossen] [🔄 0 In Progress] [📋 8+ Pending] [🔒 10 Security]

Ab 2026-07-28 in Gitea-Issues gepflegt statt hier — diese Seite ist die historische Chronik + ein Status-Überblick, aber für den aktuellen Backlog-Stand sind die Issues die eine Quelle der Wahrheit (nicht mehr doppelt pflegen).

🏷️ Versionierung (seit 2026-07-28)

Das Repo nutzt SemVer (vMAJOR.MINOR.PATCH) statt der bisherigen unregelmäßigen m1-m7-Meilenstein-Tags. Pragmatisch als Änderungsgrößen-Konvention genutzt, nicht als strikter Kompatibilitätsvertrag - Flux verfolgt weiterhin direkt den main-Branch, Tags sind reine Historie/Dokumentation, kein Deployment-Mechanismus.

  • MINOR = neue Fähigkeit/Feature landet (z.B. neues Backup-System, neue NetworkPolicy)
  • PATCH = Fixes, Tuning, Doku-only, Config-Korrekturen an bereits Bestehendem
  • Start bei v0.1.0, nicht v1.0.0 - der Stack läuft zwar live, ist aber nach eigener Einschätzung noch nicht "fertig" (großer offener Security-/Infra-Backlog), 0.x signalisiert das korrekt. v1.0.0 ist für einen späteren, bewusst gesetzten Meilenstein reserviert.

Volle Historie: Releases.


📊 Status Summary (Quick View)

Kategorie Count Status Details
Completed 13 Done K3S, Flux, ESS, Themes, Desktop, Monitoring, TURN, Authentik (Deploy+Enrollment/Recovery/2FA), Firewall, SSH, coturn Fix, Element Call Fork, NetworkPolicies, Draupnir, Content Scanner, unattended-upgrades
In Progress 0 🔄
Backlog 8+ 📋 Pending siehe Gitea Issues - DB Backups/Postgres-Migration bereits erledigt (Issue #6/#15, siehe Update-Log), verbleibend v.a. Security-Hardening (#25-#30)
Security Tasks 6 offen 🔒 Pending K3s API Hardening, auditd, Kernel hardening, Lynis, CrowdSec, Falco

Abgeschlossene Aufgaben (Chronologisch)

Phase 1: Basis-Setup

  • K3S Cluster aufsetzen Single-Node auf Hetzner Cloud (49.13.132.245)

    • Commit: initial-setup (vor Projekt)
    • Status: Läuft
  • Flux CD Installation

    • SOPS + age Encryption
    • GitOps Repository konfigurieren
    • Commit: setup-flux (vor Projekt)
    • Status: Läuft
  • Element Server Suite v26.4.0 Deployment

    • Synapse Homeserver (matrix.axion1337.chat)
    • Matrix Authentication Service (account.axion1337.chat)
    • Element Web (axion1337.chat)
    • Element Admin (admin.axion1337.chat)
    • MatrixRTC/Element Call (mrtc.axion1337.chat)
    • Commit: deploy-ess-matrix-stack
    • Status: Running

Phase 2: Core Features

  • 7 Custom Element Web Themes

    • aXion1337 Dark, Deep Purple, Discord Dark, Electric Blue, Everforest, Gruvbox, Wal
    • Alphabetisch sortiert
    • Commit: add-custom-element-themes
    • Status: Deployed
  • Element Desktop Setup Scripts (Windows/macOS/Linux)

    • Auto-Download + Install + Config
    • Hosted auf axion1337.chat/docs/setup/
    • Commits: add-element-desktop-setup-scripts, fix-element-setup-script-hosting
    • Status: Deployed
  • Room Policies

    • Message Retention (1d1y lifecycle)
    • Room Publication Rules (allow all)
    • Auto-Join Rooms für Onboarding
    • Commit: add-synapse-retention-publication-autojoin
    • Status: Deployed

Phase 3: WebRTC & Medienübertragung

  • TURN Server (coturn) für Video-Calls
    • Domain: turn.axion1337.chat
    • HMAC-Auth mit Shared Secret
    • Ports: 3478/udp, 3478/tcp, 5349/tcp, 49152-65535/udp
    • Commit: implement-turn-server-coturn-for-webrtc-video-calls
    • Status: Deployed

Phase 4: Monitoring & Observability

  • Monitoring Stack Integration
    • Alloy (Grafana Agent) als Collector
    • Remote Write zu Selendis (10.0.0.3:9090 Prometheus, :3100 Loki)
    • kube-state-metrics, node-exporter DaemonSet
    • Commits: integrate-monitoring-alloy-prometheus-loki, fix-prometheus-remote-write-docker
    • Status: Deployed

Phase 5: Identity Provider (Authentik)

  • Authentik Stage 1 Deployment

    • HelmRelease v2026.x in authentik namespace, Embedded PostgreSQL, Cert-Manager für TLS
    • Commit: deploy-authentik-as-identity-provider-for-matrix-stage-1
    • Status: Deployed
  • Authentik Stage 2 MAS Integration (fertiggestellt 2026-05-15, Commit cdfbf7d)

    • OIDC Provider + Application in Authentik, upstream_oauth2_config in mas-secret.yaml
    • Status: Deployed - siehe Authentik-OIDC.md für die spätere Enrollment/Recovery/2FA-Erweiterung (Issue #7, 2026-07-27) und die OIDC-as-Code-Erfassung (Issue #36, 2026-07-28)

Phase 6: Dokumentation

  • Deployment Guides erstellen
    • Mittlerweile 7 Markdown-Dateien in docs/deployment-guides/ (chronologisch geordnet)
    • Commit: add-comprehensive-deployment-configuration-documentation
    • Status: Deployed

🗓️ Update-Log 2026-07-27 bis 2026-07-30

2026-07-27: Authentik Enrollment/Recovery/2FA (Issue #7 geschlossen). Der komplett kaputte matrix-invitation-Enrollment-Flow (fehlende Write/Password/Login-Stages, 16 fehlerhafte validation_policies), der leere matrix-recovery-Flow (Passwort-Reset), sowie optionales 2FA/Passkey-Self-Service (axion1337.chat/docs/setup/security.html) repariert und als Authentik Blueprint (apps/authentik/authentik-blueprints.yaml) deklarativ im Repo erfasst, siehe Authentik-OIDC.md.

2026-07-28: coturn-Crash behoben (kaputte netstat-Liveness-Probe, 88 Tage/36k+ Restarts eines gesunden Prozesses, jetzt tcpSocket-Probe). Element Call Fork (Issue #8 geschlossen) umgesetzt und deployed — 1440p/60fps-Defaults, siehe Element-Customization.md Kapitel 4. Kurzer Live-Incident (erzwungenes VP9 hat Calls komplett kaputt gemacht, sofort zurückgerollt, ohne Codec-Zwang funktioniert's - danach H.264 statt VP8 nachgeschärft, live verifiziert).

2026-07-28 (weiter): NetworkPolicies (Issue #10 geschlossen) — Default-Deny Ingress für matrix und authentik Namespaces. Zwei kurze Live-Incidents beim Rollout, beide binnen Minuten gepatcht (Port-Verwechslungen). Nebenbei: matrixRTC-Authorisation-Service OOM-Fix (20Mi→128Mi), OIDC-Identitäts-Aufräumarbeiten. Restlicher offener Backlog als Gitea-Issues #11#31 angelegt (VP9-Retry, ThreadNet-Web-Bug, MAS-Template-Link, WAF, +weitere Security-/Infra-Punkte) — ab hier gilt Gitea als alleinige Backlog-Quelle.

2026-07-28 (Issues #6, #15, #36-#38, #41): Postgres-/Media-Backups zur Hetzner Storage Box umgesetzt (Borg, verschlüsselt, dedupliziert, echter Restore-Test bestätigt). OAuth2-Provider/ Application als Authentik Blueprint erfasst (Issue #36). authentik-postgresql NetworkPolicy geschlossen (Issue #37). TURN-Secret-Dopplung behoben + automatische monatliche Rotation via CronJob + PR-Workflow (Issue #38, live getestet). Node-/etc/hosts-Workaround für Gitea-Erreichbarkeit, sauberer Fix als Issue #41 nachgehalten.

2026-07-29: Draupnir (Moderationsbot, Issue #18 geschlossen) und ClamAV Content Scanner (Issue #19 geschlossen) deployed und live getestet — Content Scanner zunächst server-seitig (Synapse-Modul, nur unverschlüsselte Räume), dann client-seitig auf verschlüsselte Räume/DMs erweitert (ThreadNet-Web-Patches, inkl. Hostile-Sender-Test). Details: Moderation-Content-Scanning.md. Bekannte Lücke: Electron/ Desktop-Build zieht den Fix nicht automatisch (Issue #44, siehe auch ThreadNet-Web#2).

2026-07-29: Issue #13 (MAS 2FA-Link) geschlossen — live geprüfte OIDC-Discovery zeigt, MAS unterstützt keine 2FA-Deep-Link-Action. Nach ThreadNet-Web#4 verschoben (Client-seitige Lösung statt MAS-Template-Override).

2026-07-29/30: Host-Wartungsbenachrichtigungen (Issue #24 geschlossen) — unattended-upgrades war bereits aktiv (nur nie dokumentiert), neu ergänzt: Pre-Update- Benachrichtigung per Mail (msmtp/IONOS) + Matrix (Thread-Reply), fest um 05:00 Uhr vor dem 06:00-07:00-Update-Fenster. Erster host-lokaler, nicht-GitOps-verwalteter Mechanismus im Repo (host-config/maintenance-notify/). Details: Host-Maintenance-Notifications.md.

2026-07-30 bis 2026-08-01 (CI/CD-Umzug ins Lab): Build-CI/CD komplett ins Homelab-GitLab (git.lab) migriert, nachdem Gitea Actions an vier realen act-Bugs und einem Webpack-OOM (3,7-GiB-Host) scheiterte. ThreadNet-Web-Pipeline vollautomatisch grün (Web-Build → Image nach rohana → Desktop-Linux-Pakete), schlankes Trigger-Schema (Pushes prüfen, v*-Tags releasen). Repo-Topologie neu: git.lab kanonisch für die 5 gespiegelten Repos, Gitea bleibt Push-Mirror + Flux-Quelle + Registry/Issues — direkte Gitea-Pushes sind tabu. Windows-Build-Strecke aufgebaut und abgeschlossen (eigene On-Demand-VM auf Overmind aus selbst gebautem dockur/windows-Stand; erster Volldurchlauf grün am 2026-07-31 ~21:50, Element Setup 1.12.17.exe unsigniert, ThreadNet-Web#5 , Signing/Branding → ThreadNet-Web#6). Zwischenfall dabei: Overmind-Totalausfall durch e1000e-NIC-Hang (EEE-Bug, nicht die Build-VM) — EEE-Fix aktiv, Details Backlogs OVERMIND-02. Lab-Container-Registry aktiviert (OVERMIND-01 ), Gitea-CI zurückgebaut (CFGMON-11, drei manuelle Restschritte), threadnet-call-CI grün (threadnet-call#1, npm bleibt auf rohana), Alerting deploybar vorbereitet (Issue #32). Host-Inventare: neues hosts/overmind.md im Backlogs-Repo.


🔒 Security Hardening (Host & Cluster Level)

Host OS Layer (Debian)

  • Hetzner Cloud Firewall Default-Deny inbound. Done.
  • SSH Hardening Key-only, Root-Login disabled, Port 2248. Done.
  • unattended-upgrades (2026-07-30, Closes Issue #24) — siehe Update-Log oben.
  • K3s API Security HardeningIssue #25
  • auditd (File Integrity & Syscall Audit)Issue #26
  • Kernel Hardening (sysctl)Issue #27
  • Lynis Security BaselineIssue #28

Cluster Layer (K3S / Kubernetes)


🎯 Meilensteine (Milestones)

Meilenstein Beschreibung Status
M1: Basis-Setup K3S + Flux + ESS deployed Done
M2: Core Matrix Themes, Scripts, Policies Done
M3: WebRTC & Monitoring TURN + Alloy/Prometheus/Loki Done
M4: Identity Provider Authentik Stage 1+2 + Enrollment/Recovery/2FA Done
M5: Production-Hardening DB Backups, NetworkPolicies, Firewall/SSH, unattended-upgrades Done (Host-/Cluster-Security-Restposten siehe oben)
M6: Advanced Features Element Call Fork, Content Scanner, Draupnir Done
M7: Enterprise-Ready Full compliance (DSGVO), HA setup, Disaster Recovery 🎯 Future

📝 Notes & Decision Points

Database: CloudNativePG vs. Hetzner Postgres

  • CloudNativePG: Open-source, runs on K3S, full control
  • Hetzner Postgres: Managed, backups included, less ops overhead
  • Decision: Recommend CloudNativePG for now (cost-effective), migrate to Hetzner later if operational overhead too high
  • Noch offen, siehe Issue #9

Federation: Allowlist vs. Closed?

  • Allowlist: Default federation with all public servers, can be attacked
  • Closed: Only federate with trusted servers (higher security, lower interop)
  • Decision: Depends on user intent. For now: allow all, Draupnir für Abuse-Schutz aktiv

  • docs/deployment-guides/README.md Overview
  • docs/deployment-guides/01-turn-server-setup.md TURN
  • docs/deployment-guides/02-authentik-identity-provider.md Authentik (Stage 1+2 + Enrollment/Recovery/2FA)
  • docs/deployment-guides/03-monitoring-integration.md Monitoring
  • docs/deployment-guides/04-element-customization.md Themes, Desktop, Element Call Fork
  • docs/deployment-guides/05-room-policies.md Policies
  • docs/deployment-guides/06-moderation-content-scanning.md Draupnir, ClamAV Content Scanning
  • docs/deployment-guides/07-host-maintenance-notifications.md Host-Wartungsbenachrichtigungen

Last Updated: 2026-07-30