jk13xyz / cloudlog-docker

Dockerizing Cloudlog
MIT License
0 stars 0 forks source link

Installation behind a web-proxy doesn't seem to work #15

Open StoffelCPR opened 4 days ago

StoffelCPR commented 4 days ago

I've installed using your docker-compose and everything is et up.. I can get to the install page but after installing behind an nginx proxy with ssl termination

https://cloudlog.my.domain -> http://localhost:7373 it just blanks and I can't do anything!?

jk13xyz commented 4 days ago

Hi,

ich bin mal frech und gehe mal davon aus, dass du Deutsch kannst. Ein paar Fragen:

  1. Meinst du mit "nginx proxy" den recht beliebten "NGINX Proxy Manager" oder hast du manuell einen Proxy mit NGINX aufgesetzt? Läuft das ganze bare metal oder in Docker?
  2. Falls in Docker, welchen Port hast du für die Cloudlog-Instanz gewählt?
  3. Hat deine URL für die Instanz mit der URL übereinstimmt, die bei der Installation angezeigt wurde? Welches Ergebnis bekommst du angezeigt wenn du das hier in einem Terminal deiner Wahl auf dem Docker-Host ausführst bzw. stimmt es mit deiner URL überein?

docker exec -it cloudlog-main cat /var/www/html/application/config/config.php | grep 'base_url'

  1. Es kann sein, dass du deinen (Reverse) Proxy erst whitelisten musst:

docker exec -it cloudlog-main sed -i "s/\$config\['proxy_ips'\] = '';/\$config['proxy_ips'] = '10.1.2.3';/" /var/www/html/application/config/config.php

Ersetze die IP mit der IP deines Proxies. Schau ggf. ins Docker Log des Containers, welche IP da angezeigt wird.

StoffelCPR commented 4 days ago

Hey,

Da liegst du richtig:

Whitelisten hab ich noch nicht probiert. Ehrlich gesagt sehe ich die IP des nginx auch nicht.. Der nginx läuft außerhalb auf dem system..

$config['base_url'] = 'https://cloudlog.my.domain';

Ich setze einfach den nginx web server ein. Der läuft bei mir für alle services und macht einen proxy_pass auf localhost:7373

StoffelCPR commented 4 days ago

Nvm. war nur blind.

Hab jetzt das gesamte 192.168.X.X netz whitelisted, da bei nem docker-compose down das netzwerk neu erstellt wird.

Apache gibt nen 305 zurück

Und selbst wenn ich direkt meine Server IP addresse nehme und direkt den port benutze geht das auf dem server auch nciht

jk13xyz commented 4 days ago

Probier für die Whitelist mal:

docker inspect cloudlog-main | grep Gateway

Falls dir zwei IPs angezeigt bekomme, nehm die erste.

Kann aber auch sein, dass es an NGINX liegt. Ohne die Config von dir zu kennen ist das aber schwer zu beurteilen. Setzt du mit NGINX irgendwelche Proxy Header (bspw. "X-Forwarded-For")?

StoffelCPR commented 4 days ago

Ja. Alle "normalen" header für nen proxy_pass.

location / {
        proxy_pass http://localhost:7373;
        proxy_set_header Host                   $host;
        proxy_set_header X-Real-IP              $remote_addr;
        proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto      $scheme;
}

Das ist nur ein "extrakt"

Aber wie gesagt.. Auf dem server funktioniert das auch nicht, wenn ich die ip-addresse direkt verwende ohne proxy dazwischen

jk13xyz commented 4 days ago

Okay. Ich mach mir mal ein Test-Setup und versuche das zu reproduzieren.

jk13xyz commented 4 days ago

Ich hab jetzt mal ein einfaches Test-Setup gemacht ohne viel Firlefanz. Dein wirkliches Setup kann ich wahrscheinlich eh net nachbauen, aber here we go:

Schritte zur Reproduktion:

NGINX-Config gespeichert für cloudlog.domain.xyz (Beispiel) unter /etc/nginx/sites-available/cloudlog.domain.xyz:

`server { listen 80; server_name cloudlog.domain.xyz;

    location / {
            proxy_pass http://127.0.0.1:7373;
            proxy_set_header Host                   $host;
            proxy_set_header X-Real-IP              $remote_addr;
            proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto      $scheme;
    }

} `

Im nächsten Schritt hab ich einen Symlink von dieser Datei zu /etc/nginx/sites-enabled/cloudlog.domain.xyz erstellt, eine leere index.cloudlog.domain.xyz.html-Datei unter /var/www/html mit "touch" erstellt.

Ein Reload von NGINX mit "sudo nginx -s reload" durchgeführt.

Abschließend wurde der Docker-Stack von Cloudlog mit der Compose-Datei aus dem Repo gestartet.

Resultat:

  1. Cloudlog konnte über die Domain aufgerufen werden
  2. Die Installation ließ sich problemlos durchführen
  3. Nach der Installation wurde erwartungsgemäß zum Login umgeleitet. Der Login über den Standartaccount funktionierte.

Ich musste kein Eintrag in der Whitelist vornehmen o. ä. Alles hat "out-of-the-box" funktioniert.

Ich bin daher am Kopf kratzen... Insbesondere frage ich mich, wieso Apache überhaupt USE_PROXY auswirft.

Frage:

EDIT: Ich vermute mittlerweile, dass Apache durch die Whitelist jetzt den 305er auswirft. Mach das vielleicht mal rückgängig und benutze danach nochmal curl.