Commit Graph

5 Commits

Author SHA1 Message Date
njomac d54bb27021 fix: login u Web GUI izbacivao van panela + nginx rate limit prenizak
1) Nakon uspjesnog logina redirect je isao na sirovi 'next' parametar.
   'next' dolazi iz request.path, dakle bez SCRIPT_NAME prefiksa, pa je
   /guacadmin/login?next=/ nakon prijave vodio na / -> /guacamole/.
   Korisnik bi se prijavio i zavrsio na Guacamole login ekranu umjesto
   na dashboardu. Sad se dodaje request.script_root, uz provjeru da je
   next relativna putanja (open-redirect).

2) limit_req_zone je bio rate=10r/m - deset zahtjeva po MINUTI.
   Guacamole je Angular SPA i na jedno otvaranje ispali desetke
   zahtjeva, pa je nginx redom vracao 503 na app.js, app.css,
   api/tokens i translations. Podignuto na 10r/s, burst 50.
   Brute-force i dalje pokrivaju basic auth + fail2ban.

Provjereno: /guacadmin/ -> login -> /guacadmin/dashboard (200), svih
osam GUI stranica 200, 40 paralelnih zahtjeva na Guacamole API sve 200.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 20:15:17 +02:00
njomac 0d96852947 fix: Web GUI je vracao 404 iza nginx prefiksa
Flask slusa na rootu, a nginx ga proxira na ${GUI_PATH} (/guacadmin/).
Bez SCRIPT_NAME-a svi redirecti i url_for pozivi generirali su putanje
izvan prefiksa - / je redirectao na /login, sto nginx ne poznaje, pa je
GUI bio potpuno nedostupan (404 odmah nakon otvaranja).

Dodan PrefixMiddleware koji postavlja SCRIPT_NAME iz nove GUI_PATH
env varijable; systemd unit je sad prosljedjuje. Isto primijenjeno na
webgui/app.py i na inline kopiju u install.sh.

Provjereno: /guacadmin/ -> /guacadmin/login -> login -> /guacadmin/dashboard
(200), svi navigacijski linkovi ostaju pod prefiksom.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 16:57:49 +02:00
njomac 43e8234af6 fix: TOTP 2FA se nikad nije ucitavao
- Preuzimanje je gadalo .jar, a Apache distribuira ekstenzije kao
  .tar.gz -> wget je ostavljao 0-bajtni jar u extensions/.
- Volume ./extensions je montiran na /etc/guacamole/extensions, ali
  stvarni GUACAMOLE_HOME u imageu je /home/guacamole/.guacamole, pa
  se taj direktorij uopce nije citao.

Image vec sadrzi TOTP jar u /opt/guacamole/totp, pa se rucno
preuzimanje mice i koristi TOTP_ENABLED=true. GUACAMOLE_HOME je
postavljen na /etc/guacamole da montirani extensions/ posluzi kao
predlozak koji start.sh kopira - custom ekstenzije tako i dalje rade.

Provjereno: 'Extension "TOTP TFA Authentication Backend" (totp) loaded.'

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 16:54:33 +02:00
njomac 5a7e74156e fix: dvije greske koje su rusile instalaciju
- POSTGRES_PASS generiranje: `tr ... </dev/urandom | head -c 32` puca
  na SIGPIPE (exit 141). Uz `set -euo pipefail` install.sh je tiho
  izlazio prije nego sto je ista instalirao. Zamijenjeno ogranicenim
  citanjem: `head -c 512 /dev/urandom | tr -dc ... | cut -c1-32`.

- docker-compose.yml: guacamole/guacamole:1.5.5 trazi POSTGRESQL_USER,
  a compose je postavljao POSTGRESQL_USERNAME. Kontejner je zavrsavao
  u restart petlji s "FATAL: Missing required environment variables".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 16:44:05 +02:00
njomac 50c125e0db Initial commit — GuacPanel v1.0
All-in-one installer za Apache Guacamole s Nginx reverse proxy,
fail2ban, SSL (Let's Encrypt / Self-signed), GeoIP blokiranjem
i Flask web GUI za upravljanje.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 11:21:44 +02:00