Skip to content

MATEV 2026Projektdokumentation

Filament-Backend, Kirby-CMS + Nuxt-Frontend, Livewire-B2B-Portal — alles als Container hinter Caddy + FrankenPHP

MATEV 2026 ​

Willkommen in der Projektdokumentation. MATEV 2026 ist eine Multi-Service-Architektur: Filament-PIM, Kirby-CMS, Nuxt-Frontend und Livewire-B2B-Portal laufen als eigenständige Container, alle hinter einem zentralen Caddy-Reverse-Proxy mit Auto-SSL. PHP-Workloads (Filament, Kirby, B2B-Portal) nutzen FrankenPHP im Worker-Mode.

Auf dem Server liegt jeder Stack als docker-compose.yml in home/bengel/stacks/<stack>/. Portainer dient ausschließlich als Cockpit (Logs, Restart, Shell) — die Source of Truth ist immer der Compose-File im Git.

Stack-Übersicht (Server) ​

Zwei klar getrennte Hierarchien:

/home/bengel/stacks/                ← Compose + .env + persistente Volumes
├── proxy/    → caddy
├── mgmt/     → portainer (off-domain), matomo (+db)
├── git/      → forgejo (+db), woodpecker (+agent)
└── apps/     → admin (Filament), cms (Kirby), b2b (Livewire),
              staging (Nuxt), docs (Vitepress), storybook,
              search-stack (meili+opensearch+ollama),
              + Sub-Compose für penpot/ und taiga/

/var/www/                           ← Source-Code pro Service (bengel:www-data 2775)
└── admin/  cms/  b2b/  staging/  docs/  storybook/  ...

Der Build-Context im apps/docker-compose.yml zeigt auf /var/www/<service>/ — die Dockerfiles liegen direkt im Webroot. Vorlagen in home/bengel/stacks/apps/dockerfiles-reference/.

Details: Stacks-Referenz.

Tech-Stack ​

BereichTechnologieVersion
Backend / PIMLaravel 13 + Filament 513.x / 5.x
CMSKirby CMS + Kirby-Headless/GraphQL4.x
Frontend (Marketing)Nuxt 4 + Bun4.x / latest
B2B-PortalLaravel + Livewire 3 + Blade13.x / 3.x
Design SystemStorybook9.x
DokumentationVitePress (mit Bun)2.x
Design ToolPenpotlatest
AnalyticsMatomolatest
ProjektmanagementTaigalatest
PHP-RuntimeFrankenPHP + Laravel Octane (Worker)PHP 8.4
Reverse ProxyCaddy2.11.x
Containerisierung lokalDDEV + Dockerv1.25+
Containerisierung ServerDocker Compose (Git-based)latest
Container-UIPortainer CElatest
CI / CDWoodpecker CI + Forgejolatest
Git-HostingForgejo15.x
Package-Manager (JS)Bunlatest

Services & Routen (Server) ​

ServiceContainerDomainStack
Filament-PIMadminhttps://admin.matev.euapps
Kirby-CMS (+ GraphQL)cmshttps://cms.matev.euapps
Nuxt-Staging-Frontendstaginghttps://staging.matev.euapps
B2B-Händlerportal (Livewire)b2bhttps://b2b.matev.euapps
Storybookstorybookhttps://storybook.matev.euapps
Docs (VitePress)docshttps://docs.matev.euapps
Design (Penpot)designhttps://design.matev.euapps
Projekt (Taiga)taiga-gatewayhttps://project.matev.eutaiga
Analytics (Matomo)matomohttps://analytics.matev.eumgmt
Git (Forgejo)forgejohttps://git.matev.eugit
CI (Woodpecker)woodpeckerhttps://ci.matev.eugit
Portainerportainerhttps://<server-ip>:9443 (off-domain)mgmt

Portainer läuft bewusst nicht über Caddy / *.matev.eu, sondern direkt auf der Server-IP via Self-Signed-TLS — abgesichert per UFW-Whitelist oder VPN/Tailscale. So bleibt staging.matev.eu für die Nuxt-Demo frei.

Standard-Logins (Entwicklung) ​

ServiceLoginPasswort
Filament-Adminadmin@matev.euadmin
Forgejoadminadmin
Woodpeckervia Forgejo OAuth2—
TaigaSuperuser via docker exec ddev-matev-project-taiga-back python manage.py createsuperuser—
PenpotRegistrierung beim ersten Aufruf—
MatomoSetup-Wizard beim ersten Aufruf—
Kirby-PanelSetup beim ersten Aufruf—

WARNING

Diese Zugangsdaten gelten nur lokal. Auf Staging/Production müssen sichere Passwörter über .env gesetzt werden.

Schnellstart (lokal) ​

bash
git clone --recurse-submodules https://git.matev.eu/matev/infrastructure.git matev_2026
cd matev_2026
./setup.sh

Manuell siehe Lokales Setup.

Deployment (Server) ​

Per git pull + docker compose up -d im jeweiligen Stack-Verzeichnis — getriggert durch Woodpecker oder per Hand. Details siehe Deployment und Staging-Deploy.

Backup ​

Stack-Definitionen liegen in Git, Daten liegen in den *_data/-Verzeichnissen daneben. Backup-Strategie: tägliche Snapshots der Volumes + mysqldump/pg_dump aller DB-Container in einen Dump-Ordner, der mitgesichert wird. Details siehe Backup.