Riešenie problému so zobrazením IP adresy 127.0.0.1 v Nextcloud AIO za Nginx Proxy Managerom

:shield: Riešenie problému so zobrazením IP adresy 127.0.0.1 v Nextcloud AIO za Nginx Proxy Managerom

:envelope: Ú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:

  1. Nakonfigurovať Apache, aby správne prebral IP adresu klienta.
  2. Pridať IP adresu proxy medzi dôveryhodné proxy (trusted proxies) v konfigurácii Nextcloudu.

:puzzle_piece: 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.

:hammer_and_wrench: 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.

:wrench: 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

:file_folder: 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

:repeat_button: 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

:test_tube: Krok 4: Overenie

  1. Prihláste sa do Nextcloudu ako administrátor.
  2. Prejdite do Nastavenia > Prehľad (Overview).
  3. Overte, že sa zobrazuje skutočná IP klienta (napr. 192.168.1.x) a nie 127.0.0.1.

:white_check_mark: 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.