[MIGRATE] Migrazione a nis2.agile.software
- Tutti i riferimenti nis2.certisource.it → nis2.agile.software - Apache vhost HTTP nis2.agile.software attivo su Hetzner - Script setup-nis2-agile-software.sh: certbot SSL + redirect da vecchio dominio - .env server: APP_URL aggiornato a https://nis2.agile.software - CLAUDE.md, docs commerciali, integrazioni, API docs aggiornati DNS da aggiungere in Cloudflare: nis2.agile.software A 135.181.149.254 (proxy OFF) Poi eseguire: bash /opt/devenv/scripts/setup-nis2-agile-software.sh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0fcc69ee85
commit
07c1a71685
@ -37,7 +37,7 @@ Target: PMI, Enterprise, Consulenti/CISO.
|
||||
- AI: Anthropic Claude API (claude-sonnet-4-5-20250929)
|
||||
- Server: Hetzner CPX31 (135.181.149.254)
|
||||
- VCS: Gitea (git.certisource.it)
|
||||
- URL Produzione: https://nis2.certisource.it/
|
||||
- URL Produzione: https://nis2.agile.software/
|
||||
|
||||
|
||||
## Visibilita Cross-Project
|
||||
@ -280,7 +280,7 @@ Schema: `docs/sql/` (9 migrazioni: 001→009)
|
||||
### Cronologia Commit
|
||||
```
|
||||
7080695 [FEAT] Ruolo Consulente + Wizard Registrazione v2
|
||||
ba21534 [DEPLOY] Migrazione a subdomain nis2.certisource.it
|
||||
ba21534 [DEPLOY] Migrazione a subdomain nis2.agile.software
|
||||
92f9366 Merge branch 'main'
|
||||
d3eac7c [CORE] Rimosso credenziali da CLAUDE.md + aggiunto docs/DB_ACCESS.md
|
||||
a0fd543 [CORE] Aggiunto settings Claude Code con permessi ampi
|
||||
@ -295,7 +295,7 @@ bcc5a2b [FIX] E2E testing - fix router, EmailService, frontend data mapping
|
||||
|
||||
## API Endpoints Completi
|
||||
|
||||
Base: `/api/{controller}/{action}/{id?}` (su subdomain https://nis2.certisource.it/)
|
||||
Base: `/api/{controller}/{action}/{id?}` (su subdomain https://nis2.agile.software/)
|
||||
|
||||
### Auth: POST register, login, logout, refresh, change-password | GET me | PUT profile
|
||||
### Organizations: POST create, classify | GET current, list, {id}/members | PUT {id} | POST {id}/invite | DELETE {id}/members/{sid}
|
||||
@ -341,7 +341,7 @@ Tutti i moduli sono implementati e testati:
|
||||
| **Browser** | https://certisource.it/dev-nis2-browser/ |
|
||||
| **Porte** | 8454 / 3046 / 3047 / 6091 |
|
||||
| **Password IDE** | Nis2AgileDev2026! |
|
||||
| **Produzione** | https://nis2.certisource.it/ |
|
||||
| **Produzione** | https://nis2.agile.software/ |
|
||||
|
||||
## Documentazione Commerciale
|
||||
|
||||
|
||||
@ -724,7 +724,7 @@ class ServicesController extends BaseController
|
||||
'license' => ['name' => 'Proprietary', 'url' => 'https://agile.software'],
|
||||
],
|
||||
'servers' => [
|
||||
['url' => 'https://nis2.certisource.it', 'description' => 'Production'],
|
||||
['url' => 'https://nis2.agile.software', 'description' => 'Production'],
|
||||
],
|
||||
'security' => [
|
||||
['ApiKeyHeader' => []],
|
||||
|
||||
@ -670,7 +670,7 @@
|
||||
<a class="btn btn-ghost" href="https://agentai.certisource.it/">
|
||||
<i class="fa-solid fa-arrow-left"></i> Catalogo
|
||||
</a>
|
||||
<a class="btn btn-primary" href="https://nis2.certisource.it/">
|
||||
<a class="btn btn-primary" href="https://nis2.agile.software/">
|
||||
<i class="fa-solid fa-arrow-right-to-bracket"></i> Accedi alla piattaforma
|
||||
</a>
|
||||
</div>
|
||||
@ -692,7 +692,7 @@
|
||||
Piattaforma SaaS multi-tenant per la compliance alla Direttiva NIS2 e D.Lgs. 138/2024. Gap analysis con 80 domande Art.21, risk management ISO 27005, incident response Art.23 e policy generate con Claude AI.
|
||||
</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-primary" href="https://nis2.certisource.it/" style="padding: 14px 32px; font-size: 16px;">
|
||||
<a class="btn btn-primary" href="https://nis2.agile.software/" style="padding: 14px 32px; font-size: 16px;">
|
||||
<i class="fa-solid fa-arrow-right-to-bracket"></i> Accedi alla piattaforma
|
||||
</a>
|
||||
<a class="btn btn-ghost" href="mailto:presidenza@agile.software?subject=Demo%20NIS2%20Agile" style="padding: 14px 28px; font-size: 16px;">
|
||||
@ -723,7 +723,7 @@
|
||||
<div class="dot dot-red"></div>
|
||||
<div class="dot dot-yellow"></div>
|
||||
<div class="dot dot-green"></div>
|
||||
<span class="hero-url">nis2.certisource.it — Dashboard</span>
|
||||
<span class="hero-url">nis2.agile.software — Dashboard</span>
|
||||
</div>
|
||||
<div class="hero-mock">
|
||||
<div class="mock-header">
|
||||
@ -984,7 +984,7 @@
|
||||
Accedi alla piattaforma o richiedi una demo guidata con il nostro team.
|
||||
</p>
|
||||
<div class="cta-buttons">
|
||||
<a class="btn btn-primary" href="https://nis2.certisource.it/" style="padding: 16px 36px; font-size: 16px;">
|
||||
<a class="btn btn-primary" href="https://nis2.agile.software/" style="padding: 16px 36px; font-size: 16px;">
|
||||
<i class="fa-solid fa-arrow-right-to-bracket"></i> Accedi alla piattaforma
|
||||
</a>
|
||||
<a class="btn btn-ghost" href="mailto:presidenza@agile.software?subject=Demo%20NIS2%20Agile" style="padding: 16px 28px; font-size: 16px;">
|
||||
|
||||
@ -666,7 +666,7 @@
|
||||
<span class="cover-badge">Multi-Tenant SaaS</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cover-date">Presentazione Commerciale · Febbraio 2026 · nis2.certisource.it</div>
|
||||
<div class="cover-date">Presentazione Commerciale · Febbraio 2026 · nis2.agile.software</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 2 — PROBLEMA / OPPORTUNITÀ ══ -->
|
||||
@ -702,7 +702,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 3 — TARGET ══ -->
|
||||
@ -762,7 +762,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 4 — MODULI ══ -->
|
||||
@ -822,7 +822,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 5 — AI ══ -->
|
||||
@ -880,7 +880,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 6 — COMPLIANCE COPERTURA ══ -->
|
||||
@ -913,7 +913,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 7 — SICUREZZA ══ -->
|
||||
@ -961,7 +961,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 8 — ROI ══ -->
|
||||
@ -1033,7 +1033,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 9 — ROADMAP ══ -->
|
||||
@ -1075,7 +1075,7 @@
|
||||
<div class="roadmap-content">
|
||||
<div class="roadmap-title">Production Deploy + E2E Testing <span class="roadmap-badge done">Completato</span></div>
|
||||
<ul class="roadmap-items">
|
||||
<li>Migrazione a subdomain dedicato nis2.certisource.it (Hetzner)</li>
|
||||
<li>Migrazione a subdomain dedicato nis2.agile.software (Hetzner)</li>
|
||||
<li>E2E testing completo, bug fixing, UI polish, Docker verificato</li>
|
||||
<li>6 migrazioni SQL, indici performance, soft delete, trigger immutabili</li>
|
||||
</ul>
|
||||
@ -1109,7 +1109,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.certisource.it</span></div>
|
||||
<div class="slide-footer"><span>NIS2 Agile — Presentazione Commerciale 2026</span><span>nis2.agile.software</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════ SLIDE 10 — CHIUSURA ══ -->
|
||||
@ -1122,11 +1122,11 @@
|
||||
</div>
|
||||
<div class="closing-title">La compliance NIS2<br>inizia <em>oggi</em>.</div>
|
||||
<div class="closing-sub">NIS2 Agile è pronto in produzione, audit-ready e scalabile. Con AI integrata, sicurezza by design e copertura completa degli obblighi D.Lgs. 138/2024, riduce il tempo di compliance dell'80% rispetto alle alternative manuali.</div>
|
||||
<a href="https://nis2.certisource.it" class="closing-cta">Accedi alla Piattaforma →</a>
|
||||
<a href="https://nis2.agile.software" class="closing-cta">Accedi alla Piattaforma →</a>
|
||||
<div class="closing-contact">
|
||||
<div class="closing-contact-item">
|
||||
<strong>Piattaforma</strong>
|
||||
nis2.certisource.it
|
||||
nis2.agile.software
|
||||
</div>
|
||||
<div class="closing-contact-item">
|
||||
<strong>Versione</strong>
|
||||
|
||||
@ -486,7 +486,7 @@
|
||||
<div class="footer">
|
||||
<div>
|
||||
<div class="footer-brand">NIS2 Agile</div>
|
||||
<div class="footer-url">nis2.certisource.it</div>
|
||||
<div class="footer-url">nis2.agile.software</div>
|
||||
</div>
|
||||
<div class="footer-compliance">
|
||||
Conforme a D.Lgs. 138/2024 (recepimento Direttiva UE 2022/2555)<br>
|
||||
|
||||
@ -339,7 +339,7 @@
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="version-badge">v1.0 — Febbraio 2026</div>
|
||||
<p>nis2.certisource.it</p>
|
||||
<p>nis2.agile.software</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -447,7 +447,7 @@
|
||||
<div class="section-num">3</div>
|
||||
<div class="section-title">API REST — Endpoint Principali</div>
|
||||
</div>
|
||||
<p style="font-size:10px;color:#6b7280;margin-bottom:8px;">Base URL: <code style="background:#f8faff;padding:1px 5px;border-radius:3px;font-size:10px;">https://nis2.certisource.it/api/{controller}/{action}/{id?}</code> — Auth: Bearer JWT + X-Organization-Id header</p>
|
||||
<p style="font-size:10px;color:#6b7280;margin-bottom:8px;">Base URL: <code style="background:#f8faff;padding:1px 5px;border-radius:3px;font-size:10px;">https://nis2.agile.software/api/{controller}/{action}/{id?}</code> — Auth: Bearer JWT + X-Organization-Id header</p>
|
||||
<table class="api-table">
|
||||
<thead>
|
||||
<tr>
|
||||
@ -590,7 +590,7 @@
|
||||
<div class="deploy-card">
|
||||
<div class="deploy-type">Cloud SaaS</div>
|
||||
<ul class="deploy-specs">
|
||||
<li>Hosting su nis2.certisource.it</li>
|
||||
<li>Hosting su nis2.agile.software</li>
|
||||
<li>Zero configurazione client</li>
|
||||
<li>Aggiornamenti automatici</li>
|
||||
<li>Backup giornaliero incluso</li>
|
||||
@ -649,7 +649,7 @@
|
||||
Piattaforma SaaS compliance NIS2 per PMI e Enterprise
|
||||
</div>
|
||||
<div class="footer-right">
|
||||
nis2.certisource.it<br>
|
||||
nis2.agile.software<br>
|
||||
Versione 1.0 · Febbraio 2026<br>
|
||||
24.000+ righe di codice · 50+ file sorgente
|
||||
</div>
|
||||
|
||||
@ -161,14 +161,14 @@
|
||||
<p>API REST per integrare NIS2 Agile con SIEM, GRC, piattaforme ESG e strumenti di compliance.</p>
|
||||
<div class="version-badge">
|
||||
<svg viewBox="0 0 20 20" fill="currentColor" width="12" height="12"><path fill-rule="evenodd" d="M10 2a8 8 0 100 16A8 8 0 0010 2zm0 14a6 6 0 110-12 6 6 0 010 12zm-1-5a1 1 0 012 0v2a1 1 0 11-2 0v-2zm0-4a1 1 0 112 0 1 1 0 01-2 0z" clip-rule="evenodd"/></svg>
|
||||
v1.0.0 — Produzione: https://nis2.certisource.it/
|
||||
v1.0.0 — Produzione: https://nis2.agile.software/
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h2 class="section-title">Panoramica</h2>
|
||||
<p class="section-desc">NIS2 Agile espone due famiglie di API: <strong>Services API</strong> per lettura dati di compliance in tempo reale, e <strong>Webhook API</strong> per notifiche push su eventi NIS2.</p>
|
||||
<div class="base-url">Base URL: https://nis2.certisource.it/api</div>
|
||||
<div class="base-url">Base URL: https://nis2.agile.software/api</div>
|
||||
<div class="info-box info">
|
||||
<strong>Rate Limiting:</strong> Services API: 100 richieste/ora per API Key. Webhook delivery: max 1000/ora per subscription.
|
||||
</div>
|
||||
@ -682,7 +682,7 @@ if not hmac.compare_digest(expected, received):
|
||||
|
||||
<div style="padding-top:40px; border-top:1px solid var(--border); color:var(--text-muted); font-size:0.8rem;">
|
||||
NIS2 Agile API Reference v1.0.0 — © 2026 CertiSource Srl —
|
||||
<a href="https://nis2.certisource.it" style="color:var(--primary);">nis2.certisource.it</a>
|
||||
<a href="https://nis2.agile.software" style="color:var(--primary);">nis2.agile.software</a>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
@ -80,7 +80,7 @@
|
||||
|
||||
<span style="color:#f1fa8c;">$apiKey</span> = getenv(<span style="color:#86efac;">'NIS2_API_KEY'</span>);
|
||||
<span style="color:#f1fa8c;">$orgId</span> = getenv(<span style="color:#86efac;">'NIS2_ORG_ID'</span>);
|
||||
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.certisource.it/api'</span>;
|
||||
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.agile.software/api'</span>;
|
||||
<span style="color:#f1fa8c;">$allriskOrgId</span> = getenv(<span style="color:#86efac;">'ALLRISK_ORG_ID'</span>);
|
||||
|
||||
<span style="color:#7dd3fc;">// Fetch rischi HIGH/CRITICAL aperti da NIS2</span>
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
|
||||
<span style="color:#f1fa8c;">$apiKey</span> = getenv(<span style="color:#86efac;">'NIS2_API_KEY'</span>); <span style="color:#7dd3fc;">// nis2_abc123...</span>
|
||||
<span style="color:#f1fa8c;">$orgId</span> = getenv(<span style="color:#86efac;">'NIS2_ORG_ID'</span>);
|
||||
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.certisource.it/api'</span>;
|
||||
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.agile.software/api'</span>;
|
||||
|
||||
<span style="color:#f1fa8c;">function</span> nis2Get(<span style="color:#f1fa8c;">string $endpoint</span>, array <span style="color:#f1fa8c;">$query</span> = []): array {
|
||||
global <span style="color:#f1fa8c;">$apiKey</span>, <span style="color:#f1fa8c;">$orgId</span>, <span style="color:#f1fa8c;">$baseUrl</span>;
|
||||
@ -172,7 +172,7 @@ http_response_code(200);</pre>
|
||||
<svg viewBox="0 0 24 24" fill="#06b6d4" width="18" height="18"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z"/></svg>
|
||||
NIS2 Compliance (Preview widget)
|
||||
</div>
|
||||
<span style="font-size:0.7rem; color:#64748b;">nis2.certisource.it</span>
|
||||
<span style="font-size:0.7rem; color:#64748b;">nis2.agile.software</span>
|
||||
</div>
|
||||
<div style="display:flex; align-items:center; gap:24px;">
|
||||
<div class="score-ring">73%</div>
|
||||
@ -191,7 +191,7 @@ http_response_code(200);</pre>
|
||||
<div id="nis2-widget"></div>
|
||||
<script>
|
||||
(async () => {
|
||||
const r = await fetch('https://nis2.certisource.it/api/services/compliance-summary', {
|
||||
const r = await fetch('https://nis2.agile.software/api/services/compliance-summary', {
|
||||
headers: {
|
||||
'X-API-Key': '<span style="color:#86efac;">nis2_YOUR_KEY</span>',
|
||||
'X-Organization-Id': '<span style="color:#86efac;">YOUR_ORG_ID</span>'
|
||||
|
||||
@ -84,7 +84,7 @@
|
||||
|
||||
<span style="color:#f1fa8c;">$apiKey</span> = getenv(<span style="color:#86efac;">'NIS2_API_KEY'</span>);
|
||||
<span style="color:#f1fa8c;">$orgId</span> = getenv(<span style="color:#86efac;">'NIS2_ORG_ID'</span>);
|
||||
<span style="color:#f1fa8c;">$base</span> = <span style="color:#86efac;">'https://nis2.certisource.it/api'</span>;
|
||||
<span style="color:#f1fa8c;">$base</span> = <span style="color:#86efac;">'https://nis2.agile.software/api'</span>;
|
||||
|
||||
<span style="color:#f1fa8c;">$headers</span> = [
|
||||
<span style="color:#86efac;">'X-API-Key: '</span> . <span style="color:#f1fa8c;">$apiKey</span>,
|
||||
@ -123,7 +123,7 @@ EsgKpiService::updateCyberGovernance([
|
||||
<pre><!-- SustainAI: sezione Governance → Cybersecurity KPIs -->
|
||||
<div id="nis2-esg-widget" style="padding:20px; border:1px solid #e2e8f0; border-radius:8px; background:#f0fdf4;"></div>
|
||||
<script>
|
||||
fetch('https://nis2.certisource.it/api/services/compliance-summary', {
|
||||
fetch('https://nis2.agile.software/api/services/compliance-summary', {
|
||||
headers: { 'X-API-Key': '<span style="color:#86efac;">nis2_YOUR_KEY</span>', 'X-Organization-Id': '<span style="color:#86efac;">ORG_ID</span>' }
|
||||
}).then(r => r.json()).then(({ data }) => {
|
||||
document.getElementById('nis2-esg-widget').innerHTML = `
|
||||
@ -141,7 +141,7 @@ fetch('https://nis2.certisource.it/api/services/compliance-summary', {
|
||||
<div style="font-size:.7rem; color:#64748b;">Incidenti Art.23</div></div>
|
||||
</div>
|
||||
<p style="font-size:.7rem; color:#94a3b8; margin-top:12px; text-align:right;">
|
||||
Fonte: NIS2 Agile — nis2.certisource.it — Aggiornato: ${new Date().toLocaleDateString('it')}
|
||||
Fonte: NIS2 Agile — nis2.agile.software — Aggiornato: ${new Date().toLocaleDateString('it')}
|
||||
</p>`;
|
||||
});
|
||||
</script></pre>
|
||||
|
||||
@ -37,8 +37,8 @@ define('IS_WEB', !IS_CLI);
|
||||
|
||||
// URL base API — rileva automaticamente ambiente
|
||||
if (IS_CLI) {
|
||||
// Sul server Hetzner: Apache serve /var/www/nis2-agile su https://nis2.certisource.it/
|
||||
define('API_BASE', getenv('NIS2_API_BASE') ?: 'https://nis2.certisource.it/api');
|
||||
// Sul server Hetzner: Apache serve /var/www/nis2-agile su https://nis2.agile.software/
|
||||
define('API_BASE', getenv('NIS2_API_BASE') ?: 'https://nis2.agile.software/api');
|
||||
} else {
|
||||
// In web: usa URL relativo allo stesso host
|
||||
$proto = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
|
||||
|
||||
Loading…
Reference in New Issue
Block a user