README

Jumper Deployment

Host Manager rulează pe jumper ca serviciu Perl local, ascultând numai pe 127.0.0.1:8088. Nginx publică aplicația prin vhost HTTPS pe IP-ul de management 192.168.2.100:443; portul 80 redirecționează către HTTPS.

Vhost implicit:

hosts.madagascar.xdev.ro

Instanța curentă este instalată pe jumper în /usr/local/xdev-host-manager și publicată prin nginx. /opt rămâne rezervat pentru aplicații 3rd party/vendor.

Pachete

Se folosesc doar pachete din distribuție:

  • perl
  • nginx

Nu se instalează npm, pip sau CPAN direct pe host.

Dacă nginx nu este instalat pe jumper, se instalează din repo-ul distribuției:

sudo dnf install nginx

Layout recomandat

/usr/local/xdev-host-manager
  config/hosts.yaml
  config/local-hosts.tsv
  scripts/host_manager.pl
  scripts/sync_local_hosts.sh

/etc/xdev/host-manager.env
/etc/systemd/system/host-manager.service
/etc/nginx/conf.d/hosts.madagascar.xdev.ro.conf

Instalare manuală

Pe jumper:

id -u host-manager >/dev/null 2>&1 || sudo useradd --system --home-dir /usr/local/xdev-host-manager --shell /usr/sbin/nologin host-manager
sudo install -d -o host-manager -g host-manager /usr/local/xdev-host-manager
sudo install -d -m 0750 /etc/xdev
sudo install -m 0644 deploy/jumper/host-manager.service /etc/systemd/system/host-manager.service
sudo install -m 0644 deploy/jumper/nginx-host-manager.conf /etc/nginx/conf.d/hosts.madagascar.xdev.ro.conf

Copiază deploy/jumper/host-manager.env.example la /etc/xdev/host-manager.env și setează secretul TOTP real.

La instalarea inițială se poate genera automat secretul TOTP. URI-ul de bootstrap rămâne doar pe jumper, root-only:

sudo cat /etc/xdev/host-manager.totp-uri

Validare:

sudo systemctl daemon-reload
sudo systemctl enable --now host-manager
sudo nginx -t
sudo systemctl reload nginx
curl -fsS http://127.0.0.1:8088/healthz
curl -k -o /dev/null -w '%{http_code}\n' https://hosts.madagascar.xdev.ro/healthz
# trebuie să întoarcă 404; healthcheck-ul public nu este expus prin nginx

Verificări de securitate de bază:

curl -k -o /dev/null -w '%{http_code}\n' -X POST https://hosts.madagascar.xdev.ro/api/render/local-hosts-tsv
# trebuie să întoarcă 401 fără sesiune OTP

DNS local

Vhost-ul trebuie să existe în registrul intern:

hosts.madagascar.xdev.ro -> 192.168.2.100

Nu se adaugă wildcard local. Doar acest nume exact trebuie publicat.