Skip to main content

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

Installationskontext

Monica CRM wurde mithilfe des offiziellen Proxmox VE Community Scripts installiert.
Das bedeutet:

  • Monica läuft in einem Proxmox LXC-Container
  • PHP, Apache2 und die Verzeichnisstruktur folgen den Defaults des Community-Scripts
  • Konfigurationsänderungen (z. B. .env) werden innerhalb des LXC vorgenommen
  • HTTPS wird typischerweise außerhalb des Containers terminiert, z. B. über einen Reverse Proxy (Nginx Proxy Manager o. Ä.)

Aufgrund dieses Setups sind vertrauenswürdige Proxy-Header und korrekte HTTPS-Erkennung zwingend erforderlich, sonst geht Monica/Laravel fälschlicherweise von HTTP aus und generiert Mixed-Content-URLs.


Problem

Beim Zugriff auf Monica über HTTPS zeigt der Browser Warnungen wie:

  • CSS oder Bilder werden über http:// geladen
  • Assets werden blockiert oder nur teilweise geladen
  • DevTools meldet „Mixed Content“-Warnungen

Beispiel:

Die Seite unter https://monica.example.net hat unsicheren Inhalt von http://monica.example.net/… angefordert

Ursache

Monica (Laravel-basiert) glaubt weiterhin, auf HTTP zu laufen, obwohl sie über HTTPS via Reverse Proxy erreicht wird.

Typische Gründe:

  • APP_URL ist immer noch auf http:// gesetzt
  • Reverse-Proxy-Header werden nicht vertraut
  • Laravel-Konfigurations-Cache wurde nicht geleert

Lösung (empfohlene Reihenfolge)

Führe die Schritte der Reihe nach aus und teste jeweils. Am besten direkt nach einer frischen Installation durchführen.

Oft reicht schon Schritt 1+2. Falls nicht, weiter mit 3 ff.

1. Korrekte APP_URL setzen

Datei .env von Monica bearbeiten:

APP_URL=https://monica.example.net

Wichtige Hinweise:

  • Die endgültige öffentliche URL verwenden
  • Kein abschließender Slash
  • Muss exakt mit der Reverse-Proxy-Domain übereinstimmen

2. APP_ENV auf production setzen

In der .env-Datei von local auf production ändern:

# Zwei Möglichkeiten: local|production. local = Entwicklerversion, production = alles andere.
APP_ENV=production

3. Reverse-Proxy-Header vertrauen (sehr wichtig)

Falls die obigen Schritte nicht helfen, in .env ergänzen:

TRUSTED_PROXIES=*

Warum das entscheidend ist:

  • Monica steht hinter einem Reverse Proxy
  • HTTPS wird am Proxy terminiert
  • Intern erhält Apache nur HTTP
  • Ohne vertrauenswürdige Header geht Laravel von HTTP aus

4. Alle Caches löschen und neu aufbauen (Pflicht!)

Im Installationsverzeichnis von Monica 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

Diesen Schritt niemals überspringen!
Laravel cached URLs sehr aggressiv.

5. Dienste neu starten

LXC / Bare-Metal (Apache2)

systemctl restart apache2

Docker / Docker Compose (falls du später wechselst)

docker compose restart

6. Nginx Proxy Manager (häufigstes Setup)

  • Standardmäßig aktiviert
  • Host-Header nicht überschreiben
  • Kein Force-HTTP upstream
  • Bei Unsicherheit: benutzerdefinierte Proxy-Header entfernen

Apache benötigt keine spezielle Konfiguration, solange die Header korrekt weitergeleitet werden.

7. Im Browser überprüfen

  • Seite über HTTPS öffnen
  • Hard Refresh durchführen (Cmd + Shift + R)
  • DevTools → Network-Tab öffnen
  • Alle Assets müssen über https:// geladen werden

Direkter Test:

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

Es dürfen keine Weiterleitungen auf http:// mehr auftreten.


Zusammenfassung

Um Mixed-Content-Probleme bei Monica hinter einem Reverse Proxy (Apache2-Setup) zu beheben:

  • APP_URL auf HTTPS setzen
  • APP_ENV=production setzen
  • Proxy-Header vertrauen (TRUSTED_PROXIES=*)
  • Alle Laravel-Caches löschen & neu cachen
  • Apache neu starten (ggf. LXC rebooten)

Danach liefert Monica alle Assets korrekt über HTTPS aus.