Kapitel 3
Mandanten-Onboarding
Wie aus einem interessierten Weingut ein laufender Shop wird. Die technischen Schritte sind weitgehend automatisiert und dauern zusammen unter einer Stunde — der eigentliche Aufwand steckt im Branding und im Sortiment.
Der Ablauf
Sechs Schritte, in dieser Reihenfolge. Die ersten beiden laufen per Skript, der dritte ist Handarbeit, der vierte gehört dem Weingut, der fünfte braucht Geduld, und der sechste ist die eigentliche Arbeit.
- 1
Medusa-Entitäten anlegen
ca. 5 Min.Sales Channel, Publishable API Key, Region und Cockpit-Benutzer entstehen per Skript.
- 2
Storefront erzeugen
ca. 15 Min.Das Template wird kopiert, parametrisiert, gebaut und als Container gestartet.
- 3
Branding setzen
2 – 4 Std.Farben, Logo, Schriftpaarung, Hero-Bild und die Texte der Startseite — Handarbeit.
- 4
Stripe Connect verbinden
ca. 10 Min.Das Weingut verbindet sein eigenes Stripe-Konto über den Connect-Flow im Cockpit.
- 5
DNS eintragen
10 Min. + WartezeitA-Record oder CNAME beim Provider des Weinguts. Danach holt Traefik das Zertifikat.
- 6
Sortiment einpflegen
1 – 2 TageWeine einzeln anlegen oder als CSV importieren, dann Lagen, Rebsorten und Profil.
Schritt 1 — Medusa-Entitäten
Bevor es eine Storefront geben kann, muss Medusa den Mandanten kennen. scripts/new-winery.sh legt alles Nötige an:
- einen Sales Channel — die Mandantengrenze
- einen Publishable API Key, eingeschränkt auf genau diesen Channel
- die Verknüpfung von Key und Channel
- eine Region mit Währung, Steuersatz und Lieferländern
- den Cockpit-Benutzer mit der
sales_channel_idin den Metadaten
cd /root/repos/wein-onlineshop
./scripts/new-winery.shSchritt 2 — Storefront erzeugen
scripts/new-storefront.sh kopiert das Template nach storefronts/<slug>/, trägt die Umgebungsvariablen des Mandanten ein,
legt Dockerfile und Compose-Datei an, baut das Image und startet den Container.
cd /root/repos/wein-onlineshop
./scripts/new-storefront.sh
# Danach erreichbar unter:
# https://shop-<slug>.raspb.eu| Skript | Funktion |
|---|---|
| scripts/new-winery.sh | Legt Sales Channel, Publishable Key, Region und Benutzer in Medusa an |
| scripts/new-storefront.sh | Kopiert das Template, parametrisiert es, baut und deployt den Container |
| scripts/update-storefronts.sh | Rollt Template-Änderungen auf bestehende Mandanten aus |
| scripts/seed-rebsorten.ts | Schreibt den Grundstock an Rebsorten für einen Mandanten |
| scripts/seed-winzer.ts | Legt ein leeres Winzer-Profil zum Befüllen an |
Schritt 3 — Branding
Hier wird bewusst nicht automatisiert. Ein Shop, der aussieht wie ein Baukasten, verkauft Wein wie ein Baukasten. Was pro Weingut eingestellt wird:
- Farben — Primär- und Akzentfarbe, abgeleitet aus Etikett oder Hausfarbe
- Logo — im Cockpit hochgeladen, mit Auswahl, wo es erscheint: Rechnung, E-Mail, Website, Header
- Schriftpaarung — eine Serifenschrift für Überschriften, eine ruhige Grotesk für den Text
- Hero-Bild — der Weinberg, der Hof oder der Keller, nicht das Stockfoto
- Texte der Startseite — Anrede, Tonfall, Region
Der Shop soll aussehen wie unser Hof, nicht wie ein Onlineshop, der zufällig Wein führt.
Der Demoshop unter shop-sonnenhang.raspb.eu ist ein bewusst erfundenes
Weingut. Er zeigt, wie weit sich das Template treiben lässt, ohne dass ein echtes
Weingut dafür herhalten muss.
Schritt 4 — Stripe Connect
Das Weingut verbindet sein eigenes Stripe-Konto im Cockpit unter Einstellungen → Zahlungen. Der Connect-Flow führt zu Stripe, dort wird zugestimmt oder ein neues Konto angelegt, danach geht es zurück ins Cockpit.
Warum Standard-OAuth und nicht Express
Viele Weingüter haben bereits ein Stripe-Konto — für den Hofverkauf, für Veranstaltungen oder aus einem früheren Shop. Mit Standard-OAuth bleibt dieses Konto ihres: eigenes Dashboard, eigene Auszahlungsregeln, eigene Belege. Bei Express-Accounts läge die Kontrolle bei der Plattform. Das wollen wir nicht, und die Weingüter wollen es auch nicht.
Was technisch passiert
- Das Cockpit fordert eine Connect-URL an; Medusa erzeugt dabei ein kurzlebiges State-Token gegen CSRF
- Nach der Zustimmung ruft Stripe die Callback-Route auf, das Token wird geprüft und verbraucht
- Die
stripe_user_idlandet in den Benutzer-Metadaten und alsTENANT_STRIPE_ACCOUNT_IDin der Storefront-Konfiguration
Schritt 5 — DNS
Solange das Weingut mit shop-<slug>.raspb.eu zufrieden ist, gibt es
hier nichts zu tun. Für eine eigene Domain wird ein Eintrag beim Domain-Provider des
Weinguts nötig.
# Eigene Domain, Shop auf einer Subdomain
shop.ihr-weingut.de. A <SERVER-IP>
# Alternativ: gesamte Domain auf den Shop
ihr-weingut.de. A <SERVER-IP>
www.ihr-weingut.de. CNAME ihr-weingut.de.
# Prüfen, ob der Eintrag greift
dig +short shop.ihr-weingut.de| Anbieter | Menüpfad | Eintrag |
|---|---|---|
| IONOS | Domains & SSL → Domain → DNS | A-Record „shop“ auf die Server-IP |
| Strato | Domainverwaltung → Verwalten → DNS | A-Record „shop“ auf die Server-IP |
| Hetzner DNS | DNS Console → Zone → Add Record | Typ A, Name „shop“, Value = Server-IP |
| Namecheap | Domain List → Manage → Advanced DNS | A Record, Host „shop“ |
| GoDaddy | Meine Produkte → DNS → Verwalten | Typ A, Name „shop“ |
Schritt 6 — Sortiment
Jetzt kommen die Weine in den Shop. Zwei Wege stehen offen: einzeln im Weinbuch anlegen oder als CSV beziehungsweise XLSX importieren. Der Import zeigt vor dem Speichern eine Vorschau und erkennt Duplikate; ein Export in dasselbe Format gibt es ebenfalls.
Danach die Inhalte, die den Unterschied machen: Lagen mit Bodenart und Exposition, Rebsorten-Steckbriefe, das Winzer-Profil mit Historie, Team und Werten und die ersten Beiträge. Wie das im Cockpit aussieht, steht im Quick-Start-Guide.
Abnahme-Checkliste
Diese zehn Punkte werden vor jedem Go-live durchgegangen. Erst wenn alle stimmen, wird der DNS-Eintrag umgelegt.
- Shop über HTTPS erreichbar, kein Zertifikatshinweis
- Katalog zeigt Produkte, Filter nach Lage und Rebsorte funktionieren
- Produktdetailseite vollständig: Bild, Preis, Grundpreis, Allergene, Alkoholgehalt
- Testbestellung im Stripe-Testmodus erfolgreich abgeschlossen
- Bestellbestätigung per E-Mail angekommen
- Rechnungs-PDF trägt Logo, Adresse und korrekt ausgewiesene Mehrwertsteuer
- Versandkosten und Lieferländer stimmen
- Impressum, Datenschutz, Widerruf und Versandinformationen sind gefüllt
- Winzer hat Cockpit-Zugang und hat sich einmal angemeldet
- Das nächtliche Backup erfasst den neuen Mandanten