Newer Older
133 lines | 5.063kb
Xdev Host Manager authored a week ago
1
# Jumper Deployment
2

            
Bogdan Timofte authored 5 days ago
3
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.
Xdev Host Manager authored a week ago
4

            
5
Vhost implicit:
6

            
7
```text
Bogdan Timofte authored 3 days ago
8
madagascar.xdev.ro
Xdev Host Manager authored a week ago
9
```
10

            
11
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.
12

            
13
## Pachete
14

            
15
Se folosesc doar pachete din distribuție:
16

            
17
- `perl`
Bogdan Timofte authored 4 days ago
18
- `perl-DBI` / `perl-DBD-SQLite` dacă nu sunt deja disponibile
19
- `sqlite`
Xdev Host Manager authored a week ago
20
- `nginx`
21

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

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

            
26
```bash
27
sudo dnf install nginx
28
```
29

            
30
## Layout recomandat
31

            
32
```text
33
/usr/local/xdev-host-manager
34
  config/hosts.yaml
Bogdan Timofte authored 4 days ago
35
  var/host-manager.sqlite
Xdev Host Manager authored a week ago
36
  scripts/host_manager.pl
Bogdan Timofte authored 4 days ago
37
  scripts/mdns_host_seed.pl
Xdev Host Manager authored a week ago
38
  scripts/sync_local_hosts.sh
Bogdan Timofte authored 3 days ago
39
  deploy/mikrotik/dhcp-lease-push.rsc
Xdev Host Manager authored a week ago
40

            
41
/etc/xdev/host-manager.env
42
/etc/systemd/system/host-manager.service
Bogdan Timofte authored 4 days ago
43
/etc/systemd/system/host-manager-mdns.service
Bogdan Timofte authored 2 days ago
44
/etc/systemd/system/host-manager-dns-publish.path
45
/etc/systemd/system/host-manager-dns-publish.service
Bogdan Timofte authored 3 days ago
46
/etc/nginx/conf.d/madagascar.xdev.ro.conf
Xdev Host Manager authored a week ago
47
```
48

            
49
## Instalare manuală
50

            
51
Pe jumper:
52

            
53
```bash
54
id -u host-manager >/dev/null 2>&1 || sudo useradd --system --home-dir /usr/local/xdev-host-manager --shell /usr/sbin/nologin host-manager
55
sudo install -d -o host-manager -g host-manager /usr/local/xdev-host-manager
56
sudo install -d -m 0750 /etc/xdev
57
sudo install -m 0644 deploy/jumper/host-manager.service /etc/systemd/system/host-manager.service
Bogdan Timofte authored 4 days ago
58
sudo install -m 0644 deploy/jumper/host-manager-mdns.service /etc/systemd/system/host-manager-mdns.service
Bogdan Timofte authored 2 days ago
59
sudo install -m 0644 deploy/jumper/host-manager-dns-publish.path /etc/systemd/system/host-manager-dns-publish.path
60
sudo install -m 0644 deploy/jumper/host-manager-dns-publish.service /etc/systemd/system/host-manager-dns-publish.service
Bogdan Timofte authored 3 days ago
61
sudo install -m 0644 deploy/jumper/nginx-host-manager.conf /etc/nginx/conf.d/madagascar.xdev.ro.conf
Xdev Host Manager authored a week ago
62
```
63

            
64
Copiază `deploy/jumper/host-manager.env.example` la `/etc/xdev/host-manager.env` și setează secretul TOTP real.
Bogdan Timofte authored 3 days ago
65
Nginx așteaptă certificatul TLS local CA la `/etc/pki/tls/certs/madagascar.xdev.ro.crt` și cheia la `/etc/pki/tls/private/madagascar.xdev.ro.key`.
Xdev Host Manager authored a week ago
66

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

            
69
```bash
70
sudo cat /etc/xdev/host-manager.totp-uri
71
```
72

            
73
Validare:
74

            
75
```bash
76
sudo systemctl daemon-reload
77
sudo systemctl enable --now host-manager
Bogdan Timofte authored 4 days ago
78
sudo systemctl enable --now host-manager-mdns
Bogdan Timofte authored 2 days ago
79
sudo systemctl enable --now host-manager-dns-publish.path
Xdev Host Manager authored a week ago
80
sudo nginx -t
81
sudo systemctl reload nginx
82
curl -fsS http://127.0.0.1:8088/healthz
Bogdan Timofte authored 3 days ago
83
curl -k -o /dev/null -w '%{http_code}\n' https://madagascar.xdev.ro/healthz
Bogdan Timofte authored 5 days ago
84
# trebuie să întoarcă 404; healthcheck-ul public nu este expus prin nginx
Xdev Host Manager authored a week ago
85
```
86

            
87
Verificări de securitate de bază:
88

            
89
```bash
Bogdan Timofte authored a day ago
90
curl -k -o /dev/null -w '%{http_code}\n' -X POST https://madagascar.xdev.ro/api/dns/publish
Xdev Host Manager authored a week ago
91
# trebuie să întoarcă 401 fără sesiune OTP
92
```
93

            
94
## DNS local
95

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

            
98
```text
Bogdan Timofte authored 3 days ago
99
madagascar.xdev.ro -> jumper.madagascar.xdev.ro
Xdev Host Manager authored a week ago
100
```
101

            
102
Nu se adaugă wildcard local. Doar acest nume exact trebuie publicat.
Bogdan Timofte authored 4 days ago
103

            
Bogdan Timofte authored a day ago
104
Schimbările DNS făcute prin aplicație ating `var/dns-publish.trigger`. Pe jumper,
Bogdan Timofte authored 2 days ago
105
`host-manager-dns-publish.path` pornește imediat
106
`host-manager-dns-publish.service`, care rulează:
107

            
108
```bash
109
/usr/local/xdev-host-manager/scripts/sync_local_hosts.sh --apply --verify
110
```
111

            
112
Serviciul oneshot rulează ca root prin systemd, deoarece publicarea atinge
113
`/etc/hosts`, `dnscrypt-proxy`, `systemd-resolved` și DNS-ul static de pe as01.
114

            
Bogdan Timofte authored 4 days ago
115
## Runtime store
116

            
117
`var/host-manager.sqlite` este sursa de adevăr pentru registry și Work Orders. La prima pornire, aplicația seed-uiește documentele lipsă din `config/hosts.yaml` și `config/work-orders.yaml`; ulterior push-urile de cod nu trebuie să înlocuiască baza runtime.
118

            
Bogdan Timofte authored 4 days ago
119
## mDNS discovery
120

            
Bogdan Timofte authored a day ago
121
`host-manager-mdns` este un listener separat care observă mDNS și scrie direct în tabelul SQLite `mdns_observations`. Listenerul nu modifică host registry-ul sau `config/hosts.yaml`. Sync-ul resolverului generează recorduri efemere din SQLite, nu dintr-un export static.
Bogdan Timofte authored 3 days ago
122

            
123
## DHCP lease push
124

            
125
Lease-urile DHCP de pe routerul `192.168.2.1` sunt colectate prin push HTTP de pe MikroTik către:
126

            
127
```text
Bogdan Timofte authored 3 days ago
128
POST https://192.168.2.100/api/collect/dhcp-leases
Bogdan Timofte authored 3 days ago
129
```
130

            
131
Setează `HOST_MANAGER_DHCP_PUSH_TOKEN` în `/etc/xdev/host-manager.env` și același token în `deploy/mikrotik/dhcp-lease-push.rsc` înainte de importul pe router. Endpoint-ul acceptă headerul `X-DHCP-Push-Token` sau `Authorization: Bearer ...` și scrie observații în `dhcp_leases`.
132

            
133
Scriptul RouterOS folosește `lease-script`, deci trimite evenimentele noi/modificate. Dacă routerul are deja un `lease-script`, îmbină manual codul din `deploy/mikrotik/dhcp-lease-push.rsc`.