Context-Snapshot · other · abgelöst durch 0007-mittwald-staging-live.html

SOLCOM Mittwald Managed Hosting (mStudio)

TL;DR — Das Drupal-2.0-System läuft auf Mittwald als Managed-PHP-Hosting (kein Self-Hosting, kein Azure-App-Service, kein Kubernetes). Verwaltung über mStudio. Stand 2026-05-04: Greenfield-Setup — staging-App existiert, sonst alles leer. Dieser Snapshot ist abgelöst durch 0007-mittwald-staging-live.html.

Quell-Pointer

mStudio-Project (Name "Main")
https://studio.mittwald.de/app/projects/6709341f-37af-4ea7-a988-475dc49cecae
mStudio-App-Detail (staging)
App-Detail-Link
Mittwald-Project-UUID
6709341f-37af-4ea7-a988-475dc49cecae
Mittwald-Project-Short-ID
a-q7fxvm
Mittwald-App-UUID (staging)
61284ca9-0a65-495d-bda9-2edfe8bf26a1

Live-Befund staging (Stand 2026-05-04)

AspektWert
Project-NameMain
App-Namestaging (einzige App im Project — keine Production existiert)
App-Installationsverzeichnis/html/staging
PHP-Version8.4.18
PHP-Konfigurationsdatei~/.config/php/php.ini
SSH-Hostnamessh.altgemeinde.project.host
SSH-User-Pattern<email>@a-q7fxvm
Project-Domain (Mittwald-Default)p-nxm58l.project.spacekein Ziel zugewiesen
Datenbanken angelegtkeine (weder MySQL/MariaDB noch Redis)
Drupal-Code deployedunbekannt (nicht via mStudio-Frontend ersichtlich)
!
Das Mittwald-Project ist aktuell leer bis auf die staging-App selbst. Die erste Pipeline muss zuerst die Staging-Umgebung initialisieren. — Aktueller Stand: Siehe 0007-mittwald-staging-live.html.

Mittwald-Eigenheiten (für die Pipeline relevant)

PHP 8.4 — Kompatibilität prüfen composer.json

PHP 8.4 ist deutlich vorne — Drupal 11 / Drupal CMS unterstützt PHP 8.3+. composer.json und phpstan.neon sollten daraufhin geprüft werden.

IaC-Optionen REST-API / mw CLI

Mittwald hat offizielle IaC-Optionen: REST-API, GitHub Action, Terraform-Provider. Für Azure-DevOps-Pipelines: API-Token + mw CLI sind der primäre Hebel.

mw CLI — Sub-Kommandos

Installation: brew tap mittwald/cli && brew install mw (macOS) oder npm install -g @mittwald/cli. Auth via MITTWALD_API_TOKEN-Environment-Variable (kein interaktives Login).

  • mw app list — Apps im Project
  • mw app get <INSTALLATION-ID> — Details einer App
  • mw app upload <INSTALLATION-ID> — Lokales Verzeichnis via rsync hochladen
  • mw app exec <CMD> — Befehl in der App via SSH non-interaktiv ausführen
  • mw app ssh <INSTALLATION-ID> — Interaktive SSH-Session

Was Mittwald (managed) impliziert

PHP-Stack
Von Mittwald gemanaged — PHP-Version, Memory-Limits, OPcache, FastCGI-Worker werden im mStudio gesetzt, nicht im Repo.
Datenbank
MariaDB / MySQL als Managed-Datenbank, ebenfalls über mStudio konfiguriert.
Cloudflare
Als Edge-/CDN-Layer vorgelagert — die Origin-URL (Mittwald-Hostname) ist nicht der Production-Hostname für Endnutzer.

Bezug zum Repo

Deploy-Target für Azure-DevOps-Pipelines
Eine Build-Pipeline auf Azure DevOps muss nach Mittwald deployen (nicht in Azure-eigene Services). Empfohlen: mw app upload + mw app exec (Mittwald-API-Token als Pipeline-Secret). Alternativ SSH-Deploy-Job oder Terraform-Provider für DB-/Container-Bootstrap.
settings.php / settings.local.php
Mittwald-DB-Credentials werden über Environment-Variables nach settings.php injiziert, nicht im Repo.
Drush-Sequenz nach Deploy
drush updatedb, drush config:import, drush cache:rebuild — siehe Skill drupal-config-workflow.

Offene Fragen (TBD)

Memory-Limit, OPcache-Settings
Noch nicht erfasst (PHP 8.4.18 ist bekannt, aber Limits fehlen).
Production-App
Muss noch angelegt werden. Production-Hostname und welche öffentlichen Domains via Cloudflare auf Mittwald zeigen sollen — aktuell nichts gemappt.
Backup-/Snapshot-Strategie
mStudio-Backups vs. eigene Drush-Sql-Dumps — noch nicht inventarisiert.
Account-Inventur
Wer hat Schreibrechte im mStudio-Project — vollständige Liste nicht erfasst.

Re-Sync

Aktueller Stand
Dieser Eintrag ist durch 0007-mittwald-staging-live.html abgelöst. Hier nur noch als historisches Greenfield-Dokument.
Nächster Sync
Login: https://studio.mittwald.de → App-Detail-Link (siehe source-Meta oben). Bei Re-Sync prüfen ob PHP-/MariaDB-Versionen sich geändert haben. Wenn ja: neuer Snapshot mit höherer Nummer und supersedes-Pointer.