Skip to main content

Monica CRM – Fix mixed content (HTTP assets on HTTPS)

Installation contextInstallationskontext

Monica CRM waswurde installedmithilfe using thedes officialoffiziellen Proxmox VE Community ScriptScripts.

Thisinstalliert.
means:Das bedeutet:

  • Monica runsläuft insidein aeinem Proxmox LXC containerLXC-Container
  • PHP, Apache2, andund thedie directoryVerzeichnisstruktur structurefolgen follow theden communityDefaults scriptdes defaultsCommunity-Scripts
  • Configuration changesKonfigurationsänderungen (suchz. asB. .env) are madewerden insideinnerhalb thedes LXC vorgenommen
  • HTTPS iswird typically terminatedtypischerweise outsideaußerhalb thedes containerContainers viaterminiert, az. reverseB. proxyüber einen Reverse Proxy (e.g. Nginx Proxy Manager)Manager o. Ä.)

BecauseAufgrund ofdieses thisSetups setup,sind trustedvertrauenswürdige proxyProxy-Header headersund andkorrekte HTTPSHTTPS-Erkennung detectionzwingend are mandatoryerforderlich, otherwisesonst geht Monica/Laravel willfälschlicherweise incorrectly assumevon HTTP andaus generateund mixed-contentgeneriert Mixed-Content-URLs.


Problem

WhenBeim accessingZugriff auf Monica viaüber HTTPS,HTTPS thezeigt browserder mayBrowser showWarnungen warnings like:wie:

  • CSS oroder imagesBilder arewerden loaded viaüber http:// geladen
  • Assets arewerden blockedblockiert oroder onlynur partiallyteilweise loadedgeladen
  • DevTools showsmeldet “mixed„Mixed content”Content“ warnings-Warnungen

Example:Beispiel:

TheDie pageSeite atunter https://monica.example.net requestedhat insecureunsicheren contentInhalt fromvon http://monica.example.net/… angefordert

CauseUrsache

Monica (Laravel-based)basiert) stillglaubt thinksweiterhin, it is running onauf HTTP, evenzu thoughlaufen, itobwohl issie accessed viaüber HTTPS throughvia aReverse reverseProxy proxy.erreicht wird.

TypicalTypische reasons:Gründe:

  • APP_URL isist stillimmer setnoch toauf http:// gesetzt
  • ReverseReverse-Proxy-Header proxywerden headersnicht are not trustedvertraut
  • LaravelLaravel-Konfigurations-Cache configurationwurde cachenicht was not clearedgeleert

SolutionLösung (recommendedempfohlene order)Reihenfolge)

FollowFühre die stepsSchritte inder orderReihe nach andaus test.und Bestteste donejeweils. afterAm abesten freshdirekt newnach install.einer frischen Installation durchführen.

ItOft couldreicht beschon enoughSchritt to1+2. justFalls setnicht, theweiter mit 3 ff.

1. Korrekte APP_URL and the APP_ENV. But maybe it doesn't, then you can also try steps 2++.


1. Set correct APP_URL

setzen

Edit Monica’sDatei .env file:von Monica bearbeiten:

APP_URL=https://monica.example.net

ImportantWichtige notes:Hinweise:

  • Use theDie finalendgültige publicöffentliche URL verwenden
  • Kein abschließender Slash
  • NoMuss trailingexakt slash
  • mit
  • Mustder matchReverse-Proxy-Domain the reverse proxy domainübereinstimmen

2. Set APP_ENV toauf production

 setzen

EditIn Monica'sder .env-Datei file and change fromvon local toauf production: ändern:

# TwoZwei choices:Möglichkeiten: local|production. Use local if= you want to install Monica as a
# development version. UseEntwicklerversion, production otherwise.= alles andere.
APP_ENV=production

3. TrustReverse-Proxy-Header reverse proxy headersvertrauen (verysehr important)

wichtig)

IfFalls thedie aboveobigen doesSchritte notnicht work,helfen, add this toin .env: ergänzen:

TRUSTED_PROXIES=*

WhyWarum thisdas matters:entscheidend ist:

  • Monica issteht behindhinter aeinem reverseReverse proxyProxy
  • HTTPS iswird terminatedam atProxy the proxyterminiert
  • Intern erhält Apache receives HTTP internally
  • Without trusted headers, Laravel assumesnur HTTP
  • Ohne vertrauenswürdige Header geht Laravel von HTTP aus

4. ClearAlle andCaches rebuildlöschen allund cachesneu aufbauen (mandatory)

Pflicht!)

FromIm theInstallationsverzeichnis von Monica installation directory:ausführen:

php artisan optimize:clear
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan config:cache

DoDiesen notSchritt niemals überspringen! skip this step.
Laravel cachescached URLs aggressively.sehr aggressiv.


5. RestartDienste services

neu

starten

LXC / bare metalBare-Metal (Apache2)

systemctl restart apache2

Docker / Docker Compose

 (falls du später wechselst)

docker compose restart

6.

Nginx Proxy Manager (commonhäufigstes setup)Setup)

  • EnabledStandardmäßig by defaultaktiviert
  • DoHost-Header notnicht überschreiben override Host headers
  • DoKein not force Force-HTTP upstream
  • RemoveBei customUnsicherheit: proxybenutzerdefinierte headersProxy-Header if unsureentfernen

Apache doesbenötigt notkeine needspezielle specialKonfiguration, configurationsolange fordie thisHeader askorrekt longweitergeleitet as the headers are passed correctly.werden.


7. VerifyIm inBrowser the browser

überprüfen
  • OpenSeite the site withüber HTTPS öffnen
  • Hard refreshRefresh durchführen (Cmd + Shift + R)
  • Open DevTools → NetworkNetwork-Tab öffnen
  • AllAlle assetsAssets mustmüssen load viaüber https:// geladen werden

TestDirekter directly:Test:

https://monica.example.net/css/app-ltr.css

NoEs redirectsdürfen tokeine Weiterleitungen auf http:// shouldmehr occur.auftreten.


SummaryZusammenfassung

ToUm fixMixed-Content-Probleme mixed content issues inbei Monica behindhinter aeinem reverseReverse proxyProxy (Apache2Apache2-Setup) setup):zu beheben:

  • Set APP_URL toauf HTTPS setzen
  • Set APP_ENVAPP_ENV=production to productionsetzen
  • TrustProxy-Header proxyvertrauen headers(TRUSTED_PROXIES=*)
  • Clear allAlle LaravelLaravel-Caches cacheslöschen & neu cachen
  • Restart Apache andneu orstarten reboot.(ggf. LXC rebooten)

OnceDanach done,liefert Monica willalle correctlyAssets servekorrekt all assets overüber HTTPS. aus.