|
|
||
|---|---|---|
| checks | ||
| .gitignore | ||
| README.md | ||
| VERSION | ||
| bootstrap.sh | ||
| dev-setup.sh | ||
| first-setup.sh | ||
| setup.html | ||
| setup_server.py | ||
README.md
IRIDE — Setup & Installer
Tecnotel Servizi SRL — www.tecnotelsrl.com
Repository pubblico con l'installer di prima fase e il Web Installer di IRIDE,
sullo schema di argos-setup. Non contiene segreti: solo la chiave pubblica con cui
si verifica la licenza. Il software è nel repository privato tecnotel/iride,
raggiungibile con il token di sola lettura incluso nella licenza.
Flusso
curl bootstrap.sh | sudo bash
└─ first-setup.sh sistema, Node 22, utente iride, sudoers ristretti,
/opt/iride/*, UFW, fail2ban, nginx temporaneo
└─ Web Installer http://IP:8888 — wizard in 6 step
└─ install() licenza → clone iride → venv → iride.json/users.json →
migrazioni → (frontend) → SSL → nginx → systemd →
licenza in /opt/iride/data → chiude la 8888 e si rimuove
Prerequisiti
- VM Ubuntu 24.04 o 26.04 LTS pulita (Python 3.12/3.14), accesso
sudo. - Sizing minimo: 2 vCPU / 4 GB RAM / 40 GB disco (il DB è SQLite, niente broker).
- Uscita verso
repo.argosdefense.io(codice e aggiornamenti) elicense.argosdefense.io(licenze, heartbeat); per i canali: Meta, Telegram, provider SMS, OpenAI. - Ingresso:
443dal pubblico se i canali usano webhook (WhatsApp, Telegram in webhook),8888solo dal tuo IP durante il wizard,22solo dagli IP admin. - Una licenza IRIDE emessa da Tecnotel per il
machine_iddel server (lo mostra il wizard al primo step).
Installazione
curl -fsSL https://repo.argosdefense.io/tecnotel/iride-setup/raw/branch/main/bootstrap.sh | sudo bash
Manuale equivalente:
sudo apt update && sudo apt install -y git
git clone https://repo.argosdefense.io/tecnotel/iride-setup.git /opt/iride-setup-pkg
cd /opt/iride-setup-pkg && sudo bash first-setup.sh
Poi apri http://<IP>:8888:
- Licenza — copia il
machine_id, invialo a Tecnotel, caricalicense.json. Il wizard verifica firma Ed25519, prodotto (iride),machine_id, scadenza e presenza del token Gitea. - Cliente — nome breve, nome completo, tipo, contesto per l'assistente, logo.
- Rete & SSL — hostname pubblico, alias, certificato:
- Let's Encrypt (automatico, richiede DNS pubblico già puntato alla VM),
- certificato esistente (upload
.crt+.key, es. wildcard aziendale), - autofirmato (RSA 4096, 10 anni, SAN con hostname, alias e IP: LAN e demo; non per WhatsApp, che richiede un certificato valido).
- Intelligenza artificiale — provider del modello testuale:
fake(demo, nessuna chiave), OpenAI o Anthropic con API key. Modificabile dal portale. - Utente admin — primo accesso al portale (password ≥ 12 caratteri, hash bcrypt).
- Installa — riepilogo e avvio; il log dell'installazione scorre nella pagina.
A fine wizard la porta 8888 viene chiusa e /opt/iride-setup-pkg rimosso.
Aggiornamenti successivi: sudo bash /opt/iride/app/scripts/update.sh (usa il token
della licenza, mai credenziali personali). Verifica rapida: iride-health.
Layout risultante
/opt/iride/app repository tecnotel/iride (utente iride)
/opt/iride/config iride.json, users.json, channels.json, credentials.json (0600)
/opt/iride/data iride.db (WAL), license.json, heartbeat, stato update
/opt/iride/logs demoni e nginx (logrotate)
/opt/iride/certs certificati TLS
/opt/iride/backups snapshot pre-update e giornalieri
Servizi: iride-api (8080), iride-worker, iride-scheduler; iride-voice (8081)
solo dopo il POC-01. nginx su 80/443.
Hardening applicato (stesso di argos-setup)
Aggiornamento completo del sistema, UFW con default deny (22, 80, 443; 8888 chiusa a
fine setup), fail2ban, utente di servizio senza privilegi con sudoers limitati al
restart dei demoni IRIDE e a update.sh, configurazione e licenza in file 0600,
token Gitea mai in .git/config (URL autenticato solo per clone e fetch),
Strict-Transport-Security e rate limit sulle API in nginx.
Server di sviluppo (solo Tecnotel)
Lo stesso server può ospitare l'istanza demo, il checkout di sviluppo e il runner CI:
sudo bash /opt/iride-setup-pkg/dev-setup.sh --token <REGISTRATION_TOKEN>
Installa l'ultimo Gitea Runner (ex act_runner) in modalità host con label
ubuntu-latest:host, come utente gitea-runner, servizio gitea-runner.service.
Il token si crea su Gitea in Impostazioni → Actions → Runners. Va lanciato
prima del wizard (che a fine install rimuove /opt/iride-setup-pkg).
Il checkout di sviluppo è un normale git clone nella home dell'utente.
Contenuto del repository
| File | Scopo |
|---|---|
bootstrap.sh |
One-liner: scarica il repo e avvia first-setup.sh |
first-setup.sh |
Installer ambiente base: sistema, utente, firewall, nginx temporaneo, avvia il wizard |
setup_server.py |
Backend del Web Installer (porta 8888, self-contained) |
setup.html |
Frontend del Web Installer, wizard in 6 step |
dev-setup.sh |
Gitea Runner in modalità host per il server di sviluppo |
checks/health.sh |
Verifica dell'istanza (copiato in /usr/local/bin/iride-health) |
Repository correlati
tecnotel/iride— codice di IRIDE (privato, accessibile con licenza).
Versioning
SemVer, tag vX.Y.Z, allineato al repository iride.