Docker-Installation (externes Nginx)
In diesem Setup laufen der NocoBase-App-Container und der Nginx-Container getrennt. Du kannst mit Docker-Installation (integriertes Nginx) starten und den Einstieg danach auf einen externen Nginx-Container umstellen.
Wann dieses Setup sinnvoll ist
- Du möchtest NocoBase und den Webserver getrennt betreiben
- Du möchtest die Nginx-Konfiguration und die freigegebenen Ports selbst 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 Nginx-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=nginxlegt fest, dass eine Nginx-Konfiguration erzeugt wirdNOCOBASE_PROXY_UPSTREAM_HOST=appermöglicht dem Nginx-Container den Zugriff auf den Dienstappüber das Compose-Netzwerk./storagemuss sowohl inappals auch innginxgemountet werden, damit Proxy-Konfiguration, statische Dateien und Uploads gemeinsam genutzt werden können- Der
nginx-Container sollte warten, bisnocobase.conferzeugt wurde, und die Datei dann mitln -sfnach/etc/nginx/conf.d/default.confverlinken - 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 - Wenn du einen externen Nginx-Container verwendest, sollte der
nginx-Container das Host-Port-Mapping übernehmen. Für Tests kannst du mit13000:80beginnen; in Produktion werden normalerweise die Host-Ports80und443direkt veröffentlicht, während der Dienstappkeinen Port zum Host veröffentlichen muss
Wenn du ein lokales Nginx auf dem Host verwendest
Wenn dein Nginx 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 Nginx 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 das lokale Nginx-Konfigurationsverzeichnis:
Wenn dein Host-Nginx kein conf.d-Verzeichnis verwendet, ersetze das Link-Ziel durch deinen eigenen Konfigurationspfad. In der Regel ist es sicherer, nocobase.conf als Datei zu behalten, die aus dem http {}-Kontext eingebunden wird, statt ihren Inhalt manuell zu kopieren.
Wenn du Nginx 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 Nginx-Reverse-Proxy.
Verwandte Links
- Docker-Installation (integriertes Nginx) — Starte mit dem Single-Container-Setup
- Statischer Ressourcen-Proxy mit Nginx — Mehr zur generierten Nginx-Konfiguration

