Appearance
MATEV 2026Projektdokumentation
Filament-Backend, Kirby-CMS + Nuxt-Frontend, Livewire-B2B-Portal — alles als Container hinter Caddy + FrankenPHP
Filament-Backend, Kirby-CMS + Nuxt-Frontend, Livewire-B2B-Portal — alles als Container hinter Caddy + FrankenPHP
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.
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.
| Bereich | Technologie | Version |
|---|---|---|
| Backend / PIM | Laravel 13 + Filament 5 | 13.x / 5.x |
| CMS | Kirby CMS + Kirby-Headless/GraphQL | 4.x |
| Frontend (Marketing) | Nuxt 4 + Bun | 4.x / latest |
| B2B-Portal | Laravel + Livewire 3 + Blade | 13.x / 3.x |
| Design System | Storybook | 9.x |
| Dokumentation | VitePress (mit Bun) | 2.x |
| Design Tool | Penpot | latest |
| Analytics | Matomo | latest |
| Projektmanagement | Taiga | latest |
| PHP-Runtime | FrankenPHP + Laravel Octane (Worker) | PHP 8.4 |
| Reverse Proxy | Caddy | 2.11.x |
| Containerisierung lokal | DDEV + Docker | v1.25+ |
| Containerisierung Server | Docker Compose (Git-based) | latest |
| Container-UI | Portainer CE | latest |
| CI / CD | Woodpecker CI + Forgejo | latest |
| Git-Hosting | Forgejo | 15.x |
| Package-Manager (JS) | Bun | latest |
| Service | Container | Domain | Stack |
|---|---|---|---|
| Filament-PIM | admin | https://admin.matev.eu | apps |
| Kirby-CMS (+ GraphQL) | cms | https://cms.matev.eu | apps |
| Nuxt-Staging-Frontend | staging | https://staging.matev.eu | apps |
| B2B-Händlerportal (Livewire) | b2b | https://b2b.matev.eu | apps |
| Storybook | storybook | https://storybook.matev.eu | apps |
| Docs (VitePress) | docs | https://docs.matev.eu | apps |
| Design (Penpot) | design | https://design.matev.eu | apps |
| Projekt (Taiga) | taiga-gateway | https://project.matev.eu | taiga |
| Analytics (Matomo) | matomo | https://analytics.matev.eu | mgmt |
| Git (Forgejo) | forgejo | https://git.matev.eu | git |
| CI (Woodpecker) | woodpecker | https://ci.matev.eu | git |
| Portainer | portainer | https://<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.
| Service | Login | Passwort |
|---|---|---|
| Filament-Admin | admin@matev.eu | admin |
| Forgejo | admin | admin |
| Woodpecker | via Forgejo OAuth2 | — |
| Taiga | Superuser via docker exec ddev-matev-project-taiga-back python manage.py createsuperuser | — |
| Penpot | Registrierung beim ersten Aufruf | — |
| Matomo | Setup-Wizard beim ersten Aufruf | — |
| Kirby-Panel | Setup beim ersten Aufruf | — |
WARNING
Diese Zugangsdaten gelten nur lokal. Auf Staging/Production müssen sichere Passwörter über .env gesetzt werden.
git clone --recurse-submodules https://git.matev.eu/matev/infrastructure.git matev_2026
cd matev_2026
./setup.shManuell siehe Lokales Setup.
Per git pull + docker compose up -d im jeweiligen Stack-Verzeichnis — getriggert durch Woodpecker oder per Hand. Details siehe Deployment und Staging-Deploy.
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.