Riešenie problému so zobrazením IP adresy 127.0.0.1
v Nextcloud AIO za Nginx Proxy Managerom
Úvod
Ak používate Nextcloud AIO za reverzným proxy serverom, ako je napríklad Nginx Proxy Manager (NPM), môže sa stať, že v administrácii Nextcloudu vidíte všetky pripojenia ako prichádzajúce z 127.0.0.1
. Tento problém je častý a spôsobuje ho to, že Apache vo vnútri kontajnera Nextcloudu nevie správne prečítať hlavičku X-Forwarded-For
, ktorú nastavuje proxy server.
Tento návod vám ukáže, ako:
- Nakonfigurovať Apache, aby správne prebral IP adresu klienta.
- Pridať IP adresu proxy medzi dôveryhodné proxy (trusted proxies) v konfigurácii Nextcloudu.
Prečo sa to deje?
Keď používateľ pristupuje k Nextcloudu cez reverzný proxy (napr. NPM), proxy pošle požiadavku ďalej do Nextcloud AIO kontajnera. Apache však vidí len IP adresu proxy servera (napr. 127.0.0.1
), nie reálnu IP používateľa.
Dôsledky:
- Brute-force ochrana nefunguje správne.
- Všetky požiadavky sa javia ako pochádzajúce z localhostu.
- Záznamy v logoch nezobrazujú správne IP adresy.
- Ochrana pred útokmi môže blokovať vlastný proxy server.
Požiadavky
- Spustený Nextcloud AIO ako Docker kontajner.
- Reverzný proxy server Nginx Proxy Manager (NPM).
- Poznáte IP adresu svojho NPM (napr.
192.168.1.157
). - Prístup na server cez SSH a oprávnenia na spúšťanie Docker príkazov.
Krok 1: Nastavenie Apache – aktivácia mod_remoteip
Apache musí byť nakonfigurovaný tak, aby akceptoval IP adresu z hlavičky X-Forwarded-For
.
1.1 Vstúpte do Apache kontajnera:
docker exec -it nextcloud-aio-apache bash
1.2 Aktivujte modul mod_remoteip
:
a2enmod remoteip
1.3 Vytvorte konfiguračný súbor:
nano /etc/apache2/conf-available/remoteip.conf
A vložte:
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1
RemoteIPTrustedProxy ::1
RemoteIPTrustedProxy 192.168.1.157
Nahraďte
192.168.1.157
IP adresou vášho Nginx Proxy Managera.
1.4 Povoľte konfiguráciu:
a2enconf remoteip
1.5 Reštartujte Apache v kontajneri:
apachectl restart
Krok 2: Nastavenie Nextcloudu – trusted_proxies
Nextcloud musí vedieť, ktorej proxy dôverovať, aby akceptoval jej IP.
2.1 Vstúpte do kontajnera Nextcloudu ako root:
docker exec -u 0 -it nextcloud-aio-nextcloud bash
2.2 Otvorte konfiguračný súbor:
nano /var/www/html/config/config.php
2.3 Pridajte alebo upravte blok trusted_proxies
:
'trusted_proxies' =>
array (
0 => '127.0.0.1',
1 => '::1',
2 => '192.168.1.157',
3 => '172.21.0.0/16',
),
IP
172.21.0.0/16
predstavuje predvolený rozsah bridge siete Dockeru. Prispôsobte podľa potreby.
2.4 Uložte a zatvorte súbor.
2.5 Ukončite kontajner:
exit
Krok 3: Reštart kontajnerov
Reštartujte Apache a Nextcloud kontajner:
docker restart nextcloud-aio-apache nextcloud-aio-nextcloud
Alebo celý AIO stack:
docker compose restart
Krok 4: Overenie
- Prihláste sa do Nextcloudu ako administrátor.
- Prejdite do Nastavenia > Prehľad (Overview).
- Overte, že sa zobrazuje skutočná IP klienta (napr.
192.168.1.x
) a nie127.0.0.1
.
Záver
Týmto postupom zabezpečíte:
- Apache vie správne prečítať IP z hlavičky
X-Forwarded-For
. - Nextcloud dôveruje vašej proxy.
- Brute-force ochrana a logy fungujú korektne.
- Vyriešený problém so zobrazením
127.0.0.1
v administrácii.
Toto riešenie je potrebné pre každého, kto používa Nextcloud AIO za Nginx Proxy Managerom, prípadne za iným reverzným proxy serverom.