Logo
Marco Freiberger
05.04.2024 - 02:29

Ein MedusaJS-Projekt mit Coolify einrichten

Eine Schritt-für-Schritt-Anleitung zur Einrichtung eines MedusaJS-Projekts mit Coolify.

Einleitung

Medusa ist ein modernes Open-Source-E-Commerce-Framework, das Entwicklern hilft, komplexe und maßgeschneiderte Online-Shops zu erstellen. Mit seiner modularen Architektur und einer Vielzahl von integrierten Features ermöglicht MedusaJS eine schnelle Entwicklung und einfache Skalierung von E-Commerce-Projekten.

Coolify ist eine Open-Source Self-Hosted-Plattform, die das Hosten und Verwalten von Anwendungen vereinfacht. Mit Coolify können Entwickler ihre Projekte auf eigenen Servern hosten, ohne sich um die Einrichtung und Verwaltung von Infrastruktur kümmern zu müssen.

Die Kombination von MedusaJS und Coolify ermöglicht eine effiziente Entwicklung, Bereitstellung und Verwaltung von E-Commerce-Projekten. In diesem Blogpost werde ich eine schrittweise Anleitung zur Einrichtung eines MedusaJS-Projekts mit Coolify präsentieren.

Voraussetzungen

Bevor wir beginnen, gibt es einige Voraussetzungen, die erfüllt sein müssen, um diesem Tutorial folgen zu können:

  • Grundkenntnisse in Webentwicklung und JavaScript/TypeScript.
  • Ein Server, auf dem Coolify bereits installiert ist. Wenn Coolify noch nicht installiert ist, findest du die Installationsanleitung auf der offiziellen Website.

Optional, aber hilfreich wäre auch:

  • Vorherige Erfahrung mit MedusaJS und/oder Coolify.

Im nächsten Abschnitt werden wir MedusaJS installieren und ein neues Projekt einrichten.

Vorbereitung (Optional)

Bevor wir mit der Einrichtung von MedusaJS beginnen, müssen wir die benötigten Datenbanken installieren und konfigurieren, da die Datenbank-Credentials während des Setups abgefragt werden.

Auf Windows mit WSL:

  1. Installiere WSL und eine Linux-Distribution deiner Wahl aus dem Microsoft Store.
  2. Öffne die Linux-Distribution und installiere Postgres und Redis mit dem Paketmanager deiner Distribution.
  3. Starte die Dienste und richte die Datenbanken gemäß der Medusa-Dokumentation ein.

Auf Linux:

  1. Installiere Postgres und Redis mit dem Paketmanager deiner Distribution.
  2. Starte die Dienste und richte die Datenbanken gemäß der Medusa-Dokumentation ein.

Nach der Einrichtung der Datenbanken können wir nun mit der Installation und Konfiguration von MedusaJS fortfahren.

Installation und Einrichtung von MedusaJS

Jetzt werden wir ein neues Medusa-Projekt erstellen. Stell sicher, dass du Node.js und Yarn auf deinem Computer installiert hast, und führe dann die folgenden Befehle aus, um ein neues Medusa-Projekt zu erstellen und in das Projektverzeichnis zu wechseln:

pnpm dlx create-medusa-app@latest
# or
npx create-medusa-app@latest

cd my-medusa-project

Wenn die Installation erfolgreich war, so sollte deine .env aussehen:

DATABASE_TYPE=postgres
DATABASE_URL=postgres://postgres:yourpassword@localhost/medusa-5n1w
MEDUSA_ADMIN_ONBOARDING_TYPE=default
STORE_CORS=http://localhost:8000,http://localhost:7001

Sollte ein Datenbankfehler mit create-medusa-app auftreten (z.B. falsche Postgres-Zugangsdaten), kann die Option --skip-db mit create-medusa-app verwendet werden, um die DB nach der Erstellung des Medusa-Servers einzurichten. Wenn du die --skip-db Option verwendest, musst du die Datenbank-Zugangsdaten manuell in der .env-Datei angeben.

Änderungen an medusa-config.js

In der medusa-config.js-Datei müssen wir einige Änderungen an der Konfiguration vornehmen. Entferne die Kommentierung bei eventBus und cacheService innerhalb des Modulobjekts:

const modules = {
  eventBus: {
    resolve: "@medusajs/event-bus-redis",
    options: {
      redisUrl: REDIS_URL
    }
  },
  cacheService: {
    resolve: "@medusajs/cache-redis",
    options: {
      redisUrl: REDIS_URL
    }
  },
};

Redis ist eine Voraussetzung für Produktionseinsätze!

Du musst auch Redis in Zeile 80 aktivieren:

const projectConfig = {
  jwtSecret: process.env.JWT_SECRET,
  cookieSecret: process.env.COOKIE_SECRET,
  store_cors: STORE_CORS,
  database_url: DATABASE_URL,
  admin_cors: ADMIN_CORS,
  // Uncomment the following lines to enable REDIS
  redis_url: REDIS_URL // <-- Uncomment this line
};

Jetzt, da wir die notwendigen Änderungen an der Konfiguration vorgenommen haben, können wir mit dem lokalen Testen des Medusa-Servers fortfahren.

Lokales Testen

Sobald die Datenbanken und der Medusa-Server eingerichtet sind, können wir das Medusa-Projekt lokal testen. Stelle sicher, dass alle Konfigurationen in der medusa-config.js korrekt sind, und starte dann den Medusa-Server mit einem der folgenden Befehle:

yarn start
# or
medusa develop

Jetzt besuche entweder das Admin-Panel unter http://localhost:9000/app (bei Verwendung von yarn start) oder http://localhost:7001 (bei Verwendung von medusa develop).

Du kannst auch den Produkt-Endpunkt des Servers ansprechen, um zu testen, ob du eine Antwort erhältst: http://localhost:9000/store/products

Medusa Store Endpunkte

Projekt auf GitHub pushen

Nachdem du dein Medusa-Projekt erstellt hast, ist der nächste Schritt, das Projekt auf GitHub zu pushen. Je nachdem, welche Entwicklungsumgebung oder welches Tool du verwendest, kann der Prozess zum Hochladen des Projekts auf GitHub variieren. Unabhängig von der Methode, die du wählst, solltest du am Ende ein neues GitHub-Repository mit deinem Medusa-Projekt haben.

Coolify Services einrichten

Coolify bietet eine praktische Möglichkeit, alle benötigten Services für einen Medusa-Server selbst zu hosten und zu erstellen, einschließlich Postgres, Redis, Meilisearch und mehr. In diesem Abschnitt werden wir die benötigten Datenbanken für unser Medusa-Projekt auf Coolify einrichten.

Datenbanken erstellen

  1. Melde dich bei deinem Coolify-Server an.
  2. Navigiere zu "Create new resource" und wähle dann "Databases".
  3. Wähle zuerst "Postgresql" aus der Liste der verfügbaren Datenbanktypen. Befolge die Anweisungen, und starte anschließend die Datenbank.
  4. Wiederhole den gleichen Prozess für Redis, indem du "Redis" aus der Liste der verfügbaren Datenbanktypen wählst.
New database
Select databae

Nun sind die Datenbanken bereit und laufen, und wir können mit der Einrichtung unseres Medusa-Projektes auf Coolify fortfahren.

Medusa-Server auf Coolify einrichten

Nachdem die benötigten Datenbanken eingerichtet und gestartet wurden, können wir nun den Medusa-Server auf Coolify einrichten.

Anwendung erstellen

  1. Navigiere zu "Create new resource" und wähle dann "Application".
  2. Wähle bei "Integrated with Git App" den Account aus, auf dem das Medusa-Projekt gepusht wurde.
  3. Wähle das entsprechende Repo und den Branch aus, und klicke auf "Save".
  4. Im nächsten Schritt wählst du den Build Pack aus. Da Medusa auf Node.js läuft, wähle "Node.js" aus der Liste der verfügbaren Build Packs.

Konfiguration vornehmen

  1. Gib eine FQDN-URL an, unter der der Server erreichbar sein wird, z.B. medusa.deinedomain.dev (stelle sicher, dass die richtigen DNS-Records eingestellt sind).
  2. Aktiviere den Toggle "Generate SSL for www and non-www?".
  3. Im Bereich "Configurations":
    Trage die Build- und Install-Commands ein.
    Setze bei "Deployment Image" die Node-Version auf die gewünschte Version, falls notwendig.
  4. Klicke oben auf "Save", um die Konfiguration zu speichern.

Konfigurationsbeispiel:

App config
Medusa Config

Secrets einpflegen

  1. Navigiere in der linken Sidebar zu "Secrets":
    Ein Screenshot der linken Sidebar mit dem "Secrets"-Tab könnte hier hilfreich sein.
  2. Pflege die .env Variablen ein:
    Für REDIS_URL und DATABASE_URL kannst du den Connection-String von den beiden vorher gestarteten Datenbanken kopieren und einfügen.

So sollten deine Secrets aussehen:

Medusa secrets

Achtung: Solltest du Probleme beim Verbinden von Redis mit dem Medusa Server haben, musst du höchstwahrscheinlich ein Doppelpunkt im Connection String ergänzen. Also z.B. redis://BCDK9... sollte zu redis://:BCDK9... geändert werden.

Deployment

Zum Deployment des Medusa-Servers folge den untenstehenden Schritten:

  1. Navigiere in der linken Sidebar zu "Build" und setze den Haken bei "Enable debug logs".
  2. Klicke anschließend oben rechts auf "Deploy" und beobachte den Deployment-Prozess.

Wenn während des Deployment-Prozesses keine Build-Probleme auftreten, ist das Deployment erfolgreich abgeschlossen und der Server ist unter der angegebenen FQDN-URL erreichbar.

Tipps & Tricks

Hier sind einige nützliche Tipps & Tricks, wenn Du mit einem Medusa-Server auf Coolify arbeitest.

Ausführen von Medusa-Befehlen

Wenn Du einige Befehle ausführen musst (wie "medusa user" oder "medusa seed"), musst Du Dich in Deine Coolify-Instanz einloggen und dann in den Docker-Container des Medusa-Servers wechseln.

Logge Dich in Deinen Server ein, auf dem Coolify installiert ist, und führe den folgenden Befehl aus:

sudo docker exec -it container-name /bin/bash

Bevor du nützliche Befehle ausführen kannst (z. B. medusa), musst du auch den Container aktualisieren und die Medusa CLI installieren:

apt-get update && apt-get upgrade

yarn global add @medusajs/medusa-cli

Nachdem du den Container aktualisiert und die Medusa CLI installiert hast, kannst du Befehle im Docker-Container ausführen.

Um einen neuen Admin-Benutzer hinzuzufügen:

medusa user -u youradmin@user.com -p supersecretpassword

Um die Datenbank zu befüllen (vorausgesetzt, du hast eine seed.json):

medusa seed --seed-file=data/seed.json

Zusammenfassung und Abschluss

In diesem Tutorial haben wir Schritt für Schritt durch den Prozess der Einrichtung eines MedusaJS-Projekts mit Coolify geführt. Wir haben die notwendigen Voraussetzungen besprochen, die Datenbanken vorbereitet, das Medusa-Projekt lokal eingerichtet und getestet, und schließlich das Projekt auf Coolify deployed.

Durch die Nutzung von Coolify können Entwickler die Vorteile eines Self-Hosted-Systems nutzen und gleichzeitig die Komplexität der Infrastrukturverwaltung reduzieren. MedusaJS und Coolify bilden zusammen eine leistungsstarke und flexible Lösung für die Entwicklung, Bereitstellung und Verwaltung von E-Commerce-Projekten.

Herzlichen Glückwunsch! Du hast nun ein laufendes MedusaJS-Projekt, das mit Coolify gehostet wird. Mit dem erworbenen Wissen kannst du nun beginnen, deinen eigenen Online-Shop zu entwickeln und zu optimieren. Die Möglichkeiten sind endlos, und es gibt noch viel mehr zu entdecken und zu lernen in der Welt von MedusaJS und Coolify.

Viel Erfolg mit deinem neuen MedusaJS-Projekt!