Docker-Installation (externes Caddy)
In diesem Setup laufen der NocoBase-App-Container und der Caddy-Container getrennt. Du kannst mit Docker-Installation (integriertes Nginx) starten und den Einstieg danach auf einen externen Caddy-Container umstellen.
Wann dieses Setup sinnvoll ist
- Du möchtest NocoBase und den Webserver getrennt betreiben
- Du möchtest Reverse Proxy und HTTPS mit Caddy einfacher verwalten
- Du möchtest nur den Proxy-Container öffentlich erreichbar machen
Beispiel für docker-compose.yml
Wenn du das full-Image brauchst, ersetze latest-no-nginx durch latest-full-no-nginx.
Das Mapping 13000:80 ist nur für lokale Tests gedacht, damit die Standardports des Hosts nicht direkt belegt werden. In Produktion wird 13000:80 normalerweise nicht beibehalten; stattdessen mappt der externe Caddy-Container direkt auf die Host-Ports 80 und 443.
Wichtige Punkte
NOCOBASE_EXTRACT_CLIENT_ASSETS=trueextrahiert die Client-Assets und erzeugt die Proxy-KonfigurationNOCOBASE_PROXY_PROVIDER=caddylegt fest, dass eine Caddy-Konfiguration erzeugt wirdNOCOBASE_PROXY_UPSTREAM_HOST=appermöglicht dem Caddy-Container den Zugriff auf den Dienstappüber das Compose-Netzwerk./storagemuss sowohl inappals auch incaddygemountet werden, damit Proxy-Konfiguration, statische Dateien und Uploads gemeinsam genutzt werden können- Der
caddy-Container sollte warten, bisnocobase.caddyerzeugt wurde, und die Datei dann mitln -sfnach/etc/caddy/Caddyfileverlinken - Die erzeugte Konfiguration leitet sowohl die
/files/-Route unterAPP_PUBLIC_PATHals auch die Root-Route/files/an NocoBase weiter, damit Dateivorschau und Downloads authentifiziert werden können - Nach außen sollte nur der Port des Caddy-Containers freigegeben werden. Für Tests kannst du mit
13000:80beginnen; in Produktion werden normalerweise die Host-Ports80und443direkt veröffentlicht, während der Dienstappkeinen Port zum Host veröffentlichen muss
Wenn du ein lokales Caddy auf dem Host verwendest
Wenn dein Caddy direkt auf dem Host installiert ist und nicht in einem Docker-Container läuft, solltest du besser ein separates docker-compose.yml verwenden. Dabei muss der Dienst app einen Port zum Host veröffentlichen, und die Proxy-Variablen müssen aus Host-Sicht gesetzt werden.
Du kannst ein docker-compose.yml wie dieses verwenden:
In dieser Variante:
NOCOBASE_PROXY_STORAGE_PATHsollte der absolute Host-Pfad desstorage-Verzeichnisses seinNOCOBASE_PROXY_UPSTREAM_HOSTsollte127.0.0.1sein- Der Dienst
appmussportsbehalten, damit das lokale Caddy die Anwendung über127.0.0.1:13000erreichen kann
Nachdem der app-Container gestartet wurde, warte auf die Generierung der Konfigurationsdatei und verlinke sie dann in den lokalen Caddy-Konfigurationspfad:
Wenn dein Host-Caddy nicht /etc/caddy/Caddyfile verwendet, ersetze das Link-Ziel durch deinen eigenen Konfigurationspfad. In der Regel ist es sicherer, nocobase.caddy als Haupteinstiegsdatei zu behalten, statt ihren Inhalt manuell zu kopieren.
Wenn du Caddy selbst verwaltest und nicht die erzeugte Konfiguration verwendest, stelle sicher, dass /files/* und die entsprechende Route unter APP_PUBLIC_PATH vor den SPA-Fallback-Regeln an NocoBase weitergeleitet werden. Ein vollständiges Beispiel findest du unter Caddy-Reverse-Proxy.
Verwandte Links
- Docker-Installation (integriertes Nginx) — Starte mit dem Single-Container-Setup
- Statischer Ressourcen-Proxy mit Caddy — Mehr zur generierten Caddy-Konfiguration

