# WidgeTDC Windows Deployment Script # Kører på din host maskine for at omgå container-begrænsninger # Usage: .\scripts\deploy_windows.ps1 Write-Host "Starting WidgeTDC Deployment Protocol (Windows Mode)..." -ForegroundColor Cyan # 1. Setup Directories $DataDir = ".\data" $CivicSchemaDir = "$DataDir\civic_schema" $ThreatFeedDir = "$DataDir\threat_feeds" $SourceIntelDir = ".\source_intel" if (-not (Test-Path $CivicSchemaDir)) { New-Item -ItemType Directory -Force -Path $CivicSchemaDir | Out-Null } if (-not (Test-Path $ThreatFeedDir)) { New-Item -ItemType Directory -Force -Path $ThreatFeedDir | Out-Null } # 2. Data Sanitization (The Scrubber) $SourceSql = "$DataDir\full_schema.sql" $TargetSql = "$CivicSchemaDir\init.sql" if (Test-Path $SourceSql) { Write-Host "Scrubbing 'full_schema.sql'..." -ForegroundColor Yellow $content = Get-Content $SourceSql -Raw $content = $content -replace 'cia_user', 'civic_reader' $content = $content -replace 'cia', 'civic_vault' $content = $content -replace 'Citizen Intelligence Agency', 'Civic Insight Node' Set-Content -Path $TargetSql -Value $content Write-Host "Civic Vault Sanitized." -ForegroundColor Green } else { Write-Host "'full_schema.sql' not found in $DataDir. Civic Node will start empty." -ForegroundColor Red # Create dummy init to prevent crash "CREATE TABLE IF NOT EXISTS system_status (status VARCHAR(50)); INSERT INTO system_status VALUES ('WAITING_FOR_DATA');" | Set-Content $TargetSql } # 3. Threat Feed Staging if (Test-Path $SourceIntelDir) { $feeds = Get-ChildItem "$SourceIntelDir\*.md" if ($feeds) { Write-Host "Staging Threat Intelligence..." -ForegroundColor Yellow Copy-Item "$SourceIntelDir\*.md" -Destination $ThreatFeedDir -Force Write-Host "Intel Feeds staged." -ForegroundColor Green } else { Write-Host "No .md files found in $SourceIntelDir." -ForegroundColor Gray } } # 3.5 Ensure Dockerfiles Exist (Fix for Sync Issues) $FrontendDockerfile = "apps\matrix-frontend\Dockerfile" if (-not (Test-Path $FrontendDockerfile)) { Write-Host "Repairing missing Frontend Dockerfile..." -ForegroundColor Yellow $dockerContent = @" FROM node:20-alpine AS builder WORKDIR /app COPY package.json package-lock.json ./ COPY apps/matrix-frontend/package.json ./apps/matrix-frontend/ COPY apps/backend/package.json ./apps/backend/ COPY packages/mcp-types/package.json ./packages/mcp-types/ COPY packages/domain-types/package.json ./packages/domain-types/ RUN npm ci --legacy-peer-deps COPY . . WORKDIR /app/apps/matrix-frontend RUN npm run build FROM nginx:alpine COPY --from=builder /app/apps/matrix-frontend/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] "@ Set-Content -Path $FrontendDockerfile -Value $dockerContent Write-Host "Frontend Dockerfile restored." -ForegroundColor Green } # 4. Launch Docker Write-Host "Launching Containers..." -ForegroundColor Cyan docker-compose up -d --build Write-Host "SYSTEM ONLINE." -ForegroundColor Green Write-Host " - Civic Node: Port 5433" Write-Host " - Backend: Port 3001"