Zum Hauptinhalt springen

Zurück zum Devlog

Sonntag, 01. Februar 2026

Infrastructure

42 Commits

14 min Lesezeit

SSD Migration, i18n für Auth Pages & Matrix Bots CI/CD

PostgreSQL und MinIO auf SSD migriert, mehrsprachige Auth-Pages für alle Apps, automatisierte CI/CD Pipeline für 19 Matrix Bots, und erweiterte Grafana Dashboards

T

Till Schneider

Autor

Produktiver Tag mit 42 Commits und Fokus auf Infrastructure und Production Readiness:

  • SSD Migration - PostgreSQL und MinIO auf externe SSD verschoben
  • i18n für Auth - Alle Auth-Pages mehrsprachig (DE/EN)
  • Matrix Bots CI/CD - Automatisierte GHCR Deployment Pipeline
  • Grafana Dashboards - Master Overview mit Key Metrics
  • OIDC Production - mana-core-auth vollständig produktionsreif
  • node-exporter - Host System Metrics für Monitoring

SSD Migration

Migration der Datenbanken auf externe SSD für bessere Performance.

Migrierte Services

ServiceVorherNachher
PostgreSQLDocker Volume/Volumes/ManaData/postgres
MinIODocker Volume/Volumes/ManaData/minio

Docker Compose Änderungen

services:
  manacore-postgres:
    volumes:
      - /Volumes/ManaData/postgres:/var/lib/postgresql/data

  manacore-minio:
    volumes:
      - /Volumes/ManaData/minio:/data

Vorteile

AspektHDD (intern)SSD (extern)
Read Speed~100 MB/s~500 MB/s
Write Speed~100 MB/s~450 MB/s
IOPS~100~10.000
Latency~10ms~0.1ms

Dokumentation

Neue SSD-Dokumentation unter docs/MAC_MINI_SSD.md:

  • Mount-Konfiguration
  • Backup-Strategie
  • Performance-Benchmarks

i18n für Auth Pages

Alle Authentifizierungs-Seiten sind jetzt mehrsprachig.

Unterstützte Sprachen

SpracheCodeStatus
DeutschdeVollständig
EnglishenVollständig

Betroffene Apps

  • Calendar Web
  • Chat Web
  • Clock Web
  • Contacts Web
  • NutriPhi Web
  • Picture Web
  • Planta Web
  • Questions Web
  • SkillTree Web
  • Todo Web
  • Zitare Web

Implementierung

// Locale Detection
const locale = navigator.language.startsWith('de') ? 'de' : 'en';

// i18n Store
export const t = derived(locale, ($locale) => {
  return (key: string) => translations[$locale][key] || key;
});

Neue Auth Pages

Fehlende Auth-Pages für Zitare und Planta hinzugefügt:

  • /login
  • /register
  • /forgot-password
  • /reset-password
  • /verify-email

Matrix Bots CI/CD

Automatisierte Build und Deployment Pipeline für alle Matrix Bots.

GitHub Actions Workflow

# .github/workflows/matrix-bots.yml
name: Matrix Bots CI/CD

on:
  push:
    paths:
      - 'services/matrix-*-bot/**'

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        bot:
          - matrix-mana-bot
          - matrix-todo-bot
          - matrix-calendar-bot
          # ... alle 19 Bots
    steps:
      - uses: docker/build-push-action@v5
        with:
          push: true
          tags: ghcr.io/manacore/${{ matrix.bot }}:latest

Betroffene Bots

BotGHCR Image
matrix-mana-botghcr.io/manacore/matrix-mana-bot
matrix-todo-botghcr.io/manacore/matrix-todo-bot
matrix-calendar-botghcr.io/manacore/matrix-calendar-bot
… (19 total)

ARM64 Workaround

QEMU-Emulation für ARM64 deaktiviert aufgrund von CI-Fehlern:

platforms: linux/amd64  # ARM64 temporär deaktiviert

Grafana Dashboards

Erweiterte Monitoring Dashboards.

Master Overview

Neues Home Dashboard mit Key Metrics:

PanelMetrik
Total RequestsSumme aller HTTP Requests
Requests/secAktuelle Request-Rate
Error RateHTTP 5xx Errors
Response TimeP95 Latency

System Overview

Neugeschrieben mit verfügbaren Metriken:

  • CPU Usage (per Container)
  • Memory Usage (per Container)
  • Network I/O
  • Disk Usage

Infinity Datasource

Plugin für Business Metrics installiert:

grafana-cli plugins install yesoreyeram-infinity-datasource

node-exporter

Host System Metrics für macOS Docker.

Metriken

MetrikBeschreibung
node_cpu_seconds_totalCPU-Nutzung
node_memory_MemTotal_bytesGesamter RAM
node_filesystem_size_bytesDisk-Größe
node_network_receive_bytes_totalNetzwerk RX

macOS-spezifische Konfiguration

node-exporter:
  image: prom/node-exporter:latest
  volumes:
    - /proc:/host/proc:ro
    - /sys:/host/sys:ro
  command:
    - '--path.procfs=/host/proc'
    - '--path.sysfs=/host/sys'
    - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev)($|/)'

OIDC Production Readiness

mana-core-auth ist jetzt vollständig produktionsreif.

Fixes

FixBeschreibung
EdDSA SigningOIDC id_token mit EdDSA statt RS256
JWT IssuerBASE_URL als Issuer
Token Exchangebody-parser für form-urlencoded
Test FixesAlle Tests grün

OIDC Token Exchange

// Vorher: JSON only
app.use(express.json());

// Nachher: JSON + form-urlencoded
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

Token Endpoint

# OAuth2 Token Request (form-urlencoded)
curl -X POST https://auth.mana.how/oidc/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code&code=xxx&client_id=synapse"

Resend Verification Email

Neues Feature auf der Registrierungsseite.

UI

{#if registrationSuccess && !verified}
  <div class="alert">
    <p>Bitte bestätige deine Email-Adresse.</p>
    <button onclick={resendVerification}>
      Bestätigungsmail erneut senden
    </button>
  </div>
{/if}

API

// POST /api/v1/auth/resend-verification
await authService.resendVerificationEmail(email);

Cloudflared Port Updates

Alle Service-Ports in Cloudflared aktualisiert.

Geänderte Ports

ServiceAltNeu
matrix.mana.how80084000
matrix-web51785180
element.mana.how808088

Bugfixes

FixBeschreibung
Matrix SSOloginToken Callback Handler
Bot Health Checkswget installiert in Docker
Crypto ModuleE2EE via pnpm override deaktiviert
Native Modulesnode:20-slim für Bot Images
CORS OriginsAlle Apps hinzugefügt
Questions Locale’de’ als Fallback

Test User Seeding

Neuer Test-User für Development.

// scripts/seed-dev.ts
await db.insert(users).values({
  email: '[email protected]',
  password: await hash('test1234'),
  verified: true,
});

Zusammenfassung

BereichCommitsHighlights
SSD Migration4PostgreSQL + MinIO
i18n3Alle Auth Pages DE/EN
Matrix Bots CI/CD219 Bots automatisiert
Grafana6Master Overview, Infinity
node-exporter3Host Metrics
OIDC8Production Ready
Cloudflared4Port Updates
Bugfixes12Docker, Matrix, Auth

Nächste Schritte

  1. Cross-Domain SSO für alle Web Apps
  2. Matrix Bots auf Mac Mini deployen
  3. Grafana Alerts konfigurieren
  4. Backup Workflow mit n8n

Tags

#ssd #migration #i18n #ci-cd #github-actions #matrix-bots #grafana #monitoring #oidc #production