iride-setup/README.md

5.4 KiB

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) e license.argosdefense.io (licenze, heartbeat); per i canali: Meta, Telegram, provider SMS, OpenAI.
  • Ingresso: 443 dal pubblico se i canali usano webhook (WhatsApp, Telegram in webhook), 8888 solo dal tuo IP durante il wizard, 22 solo dagli IP admin.
  • Una licenza IRIDE emessa da Tecnotel per il machine_id del 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:

  1. Licenza — copia il machine_id, invialo a Tecnotel, carica license.json. Il wizard verifica firma Ed25519, prodotto (iride), machine_id, scadenza e presenza del token Gitea.
  2. Cliente — nome breve, nome completo, tipo, contesto per l'assistente, logo.
  3. 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).
  4. Intelligenza artificiale — provider del modello testuale: fake (demo, nessuna chiave), OpenAI o Anthropic con API key. Modificabile dal portale.
  5. Utente admin — primo accesso al portale (password ≥ 12 caratteri, hash bcrypt).
  6. 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.