<# Deploy embycovers to an Asustor NAS over SSH/SCP from Windows PowerShell. Syncs project files to the NAS, then runs `docker compose build` and `docker compose up -d` on the remote. All runtime configuration (Emby URL, API key, ports, volumes) comes from docker-compose.yml — edit it there. Prerequisites on your Windows machine: - OpenSSH Client installed. Test with: ssh -V - SSH enabled on the Asustor NAS. - Docker / Docker Compose available on the Asustor NAS. Example: .\deploy.ps1 -NasHost MATT-NAS -NasUser ssh #> param( [Parameter(Mandatory = $true)] [string]$NasHost, [Parameter(Mandatory = $true)] [string]$NasUser, [string]$RemoteAppDir = "/share/Docker/embycovers" ) $ErrorActionPreference = "Stop" function Require-Command($Name) { if (-not (Get-Command $Name -ErrorAction SilentlyContinue)) { throw "$Name was not found. Install or enable it first." } } Require-Command ssh Require-Command scp $LocalDir = Split-Path -Parent $MyInvocation.MyCommand.Path $Remote = "$NasUser@$NasHost" Write-Host "Deploying embycovers to ${Remote}:$RemoteAppDir" ssh $Remote @" set -e mkdir -p '$RemoteAppDir' '$RemoteAppDir/output' '$RemoteAppDir/cache' '$RemoteAppDir/static/studios' '$RemoteAppDir/templates' "@ # Copy top-level project files. scp ` "$LocalDir/app.py" ` "$LocalDir/Dockerfile" ` "$LocalDir/docker-compose.yml" ` "$LocalDir/requirements.txt" ` "${Remote}:$RemoteAppDir/" # Copy templates and static assets recursively. scp -r "$LocalDir/templates/." "${Remote}:$RemoteAppDir/templates/" scp -r "$LocalDir/static/." "${Remote}:$RemoteAppDir/static/" # Copy any loose logo images that live at the repo root. $LogoFiles = Get-ChildItem -Path $LocalDir -File | Where-Object { $_.Extension -in @('.png','.jpg','.jpeg') } if ($LogoFiles) { $LogoArgs = $LogoFiles | ForEach-Object { "`"$($_.FullName)`"" } $ScpCmd = "scp $($LogoArgs -join ' ') `"${Remote}:$RemoteAppDir/`"" Invoke-Expression $ScpCmd } # Build and run on the NAS using values from docker-compose.yml. $RemoteCommands = @" set -e cd '$RemoteAppDir' if command -v docker-compose >/dev/null 2>&1; then docker-compose build docker-compose up -d else docker compose build docker compose up -d fi "@ ssh $Remote $RemoteCommands Write-Host "Deployment complete." Write-Host "To view logs:" Write-Host " ssh $Remote 'cd $RemoteAppDir && docker compose logs -f'"