# --- ADD TO TOP --- # Start capturing all output (Write-Host, errors, etc.) $FullLog = Start-Transcript -Path "$env:TEMP\docker_update_log.txt" -Force # ------------------ # ============================================================================== # CONFIGURATION # ============================================================================== $RootPath = "C:\Users\MohandL3G\Documents\Git\Docker-Compose" $ServicesToUpdate = @( "Cup", "Gitea", "Heimdall", "Immich", "Jellyfin", "Jellyseerr", "metube", "n8n", "Newt", "Nextcloud", "Nexterm", "NPM", "Portainer-CE", "Zerobyte" # "FutureApp" ) # ============================================================================== # EXECUTION LOGIC # ============================================================================== Write-Host "Starting Docker Stack Updates..." -ForegroundColor Cyan Write-Host "--------------------------------" -ForegroundColor Gray foreach ($Service in $ServicesToUpdate) { $ServicePath = Join-Path -Path $RootPath -ChildPath $Service if (Test-Path -Path $ServicePath) { Write-Host "`n[$Service] Checking..." -ForegroundColor Yellow Push-Location -Path $ServicePath try { # 1. PULL: Capture output but filter out the noisy progress bars Write-Host "Pulling images..." -ForegroundColor Gray # We filter out lines containing "Downloading", "Waiting", etc. to keep logs clean $pullLog = docker compose --progress plain pull 2>&1 | Where-Object { $_ -notmatch "Downloading|Waiting|Verifying|Pulling fs layer|Download complete" } | Out-String Write-Host $pullLog # 2. UP: Force no-colors and capture the "Running/Recreated" status $upLog = docker compose --ansi never up -d --remove-orphans --no-build 2>&1 | Out-String Write-Host $upLog Write-Host "[$Service] Done." -ForegroundColor Green } catch { Write-Host "[$Service] ERROR: Something went wrong." -ForegroundColor Red } finally { Pop-Location } } else { Write-Host "`n[$Service] WARNING: Folder not found at $ServicePath" -ForegroundColor Red } } # ============================================================================== # CLEANUP # ============================================================================== Write-Host "`n--------------------------------" -ForegroundColor Gray Write-Host "Cleaning up unused images..." -ForegroundColor Yellow # Redirection ensures the list of deleted IDs and space reclaimed is captured $cleanupLog = docker image prune -f 2>&1 | Out-String Write-Host $cleanupLog Write-Host "Cleanup Complete." -ForegroundColor Green Write-Host "All requested updates finished." -ForegroundColor Cyan # --- ADD TO BOTTOM --- Stop-Transcript $LogContent = Get-Content "$env:TEMP\docker_update_log.txt" -Raw # Send to n8n $WebhookUrl = "https://n8n.mohandl3g.ly/webhook/dockerupdater" # --- SECURITY CONFIGURATION --- $AuthHeaderName = "MohandL3G-Auth" $AuthHeaderValue = "Ms@199903" # ------------------------------ $Headers = @{ $AuthHeaderName = $AuthHeaderValue } $Body = @{ status = "complete" service = "DockerUpdater" output = $LogContent } # Added -Headers parameter here Invoke-RestMethod -Uri $WebhookUrl -Method Post -Body ($Body | ConvertTo-Json) -ContentType "application/json" -Headers $Headers # ---------------------