GLAUK Media Panel

Sign in to manage your streaming servers

📘 New Windows Server — Setup Guide

Run these rows top-to-bottom on the new Windows machine (Admin PowerShell). Every block is copy-paste.

ROW 0 — Before you start
ROW 1 — Bootstrap everything (Node, ffmpeg, MediaMTX, agent, PATH, firewall)
New-Item -ItemType Directory -Force -Path C:\gms\logs | Out-Null
if (-not (Get-Command node -ErrorAction SilentlyContinue)) { winget install OpenJS.NodeJS.LTS -e --accept-source-agreements --accept-package-agreements }
if (-not (Test-Path C:\gms\ffmpeg.exe)) {
  iwr "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.zip" -OutFile C:\gms\ff.zip
  Expand-Archive C:\gms\ff.zip C:\gms\ffx -Force
  Copy-Item (Get-ChildItem C:\gms\ffx -Recurse -Filter ffmpeg.exe | Select -First 1).FullName C:\gms\ffmpeg.exe -Force
}
if (-not (Test-Path C:\gms\mediamtx.exe)) {
  $r = iwr "https://api.github.com/repos/bluenviron/mediamtx/releases/latest" -UseBasicParsing | ConvertFrom-Json
  $a = $r.assets | Where-Object { $_.name -like "*windows_amd64*" } | Select -First 1
  iwr $a.browser_download_url -OutFile C:\gms\mtx.zip
  Expand-Archive C:\gms\mtx.zip C:\gms\mtx -Force
  Copy-Item C:\gms\mtx\mediamtx.exe C:\gms\mediamtx.exe -Force
}
iwr "https://panel.glaukott.com/gms/agent.js" -OutFile C:\gms\agent.js
$env:Path += ";C:\gms"
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path","Machine") + ";C:\gms", "Machine")
New-NetFirewallRule -DisplayName "GMS SRT ingest 5001" -Direction Inbound -Protocol UDP -LocalPort 5001 -Action Allow | Out-Null
New-NetFirewallRule -DisplayName "GMS RTMP 1936" -Direction Inbound -Protocol TCP -LocalPort 1936 -Action Allow | Out-Null
New-NetFirewallRule -DisplayName "GMS HLS 8095" -Direction Inbound -Protocol TCP -LocalPort 8095 -Action Allow | Out-Null
New-NetFirewallRule -DisplayName "GMS SRT outs 6000-6199" -Direction Inbound -Protocol UDP -LocalPort 6000-6199 -Action Allow | Out-Null
Write-Host "bootstrap done" -ForegroundColor Green
ROW 2 — Register the server
node C:\gms\agent.js --key GLM-XXXX-XXXX-XXXX

Expected: registered srv-… · [mediamtx] port 1936 ready · [heartbeat-ok] 200. Keep window open (or ROW 6).

ROW 3 — Panel: create the stream (ingest)

Servers → this server → Streams → Add: name marlind · proto SRT · port 5001.
vMix then pushes to srt://PUBLIC_IP:5001.

ROW 4 — Panel: create outputs (your ports)
PurposeProtocolPortClient URL
Single device, plainSRT playback6005srt://IP:6005
Many clientsSRT multi-client6006srt://IP:6006?streamid=read:marlind
Web / mobile (auto)HLS—http://IP:8095/live/marlind/index.m3u8
Boxes / encoders (auto)RTMP—rtmp://IP:1936/live/marlind
ROW 5 — Verify
netstat -ano | findstr ":5001 :1936 :8095 :6005 :6006"
ffmpeg -i "srt://127.0.0.1:6006?streamid=read:marlind" -f null -
ROW 6 — Survive reboots (boot task)
$action  = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -WindowStyle Hidden -Command `"if (-not (Get-Process node -ErrorAction SilentlyContinue)) { Start-Process node -ArgumentList 'C:\gms\agent.js --key GLM-XXXX-XXXX-XXXX' -WindowStyle Hidden }`""
$trigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName "GMS Agent Boot" -Action $action -Trigger $trigger -User SYSTEM -RunLevel Highest -Force
ROW 7 — Troubleshoot cheat-row
SymptomFix
Server Offline in panelagent not running → node C:\gms\agent.js --key …
port 1936 NOT readyRemove-Item C:\gms\mediamtx.yml → restart agent
Output stuck on 6000old agent → re-download agent.js + restart node
Port busynetstat -ano | findstr :PORT → kill PID → recreate output