Install on Windows Server
Deploy CollectorCtrl on Windows Server 2016+ with native Windows Service integration.
Install on Windows Server
Deploy CollectorCtrl on Windows with the interactive installer (.exe). It configures CollectorCtrl as a background Windows Service — no manual service registration needed.
Prerequisites
- Windows Server 2016+ or Windows 10/11 (64-bit)
- Administrator privileges
- OpenTelemetry Collector binary (
otelcol.exe) available on agent machines - Ports
4320and4321available
Part 1: Install the Management Server
Step 1: Download the Installer
Download the newest release from the releases page (pick the latest tag, e.g. v0.2.6-beta):
- Standard Edition (SQLite):
collectorctrl-server_0.2.6_windows_amd64.exe— zero configuration, good for testing and smaller fleets - PostgreSQL Edition:
collectorctrl-server-postgres_0.2.6_windows_amd64.exe— for production fleets
Step 2: Run the Installer
- Double-click the
.exe(or right-click → Run as Administrator) and follow the setup wizard - Choose the installation directory (default:
C:\Program Files\CollectorCtrl) - PostgreSQL Edition only: enter your PostgreSQL host (
127.0.0.1), port (5432), user (postgres), and password - Finish the wizard and leave "Launch CollectorCtrl Web Console" checked
The installer registers and starts a Windows Service named CollectorCtrl, then opens your browser automatically.
Step 3: Access the Dashboard
Your browser opens at 👉 http://localhost:4321
Or use your server's IP/hostname if accessing remotely: http://YOUR_SERVER_IP:4321
Default credentials:
- Username:
admin - Password:
admin
⚠️ The dashboard is served over plain HTTP by default — not HTTPS. Change the default password immediately after first login, and see Optional: Enable Production HTTPS below before exposing the UI to a network.
Part 2: Managing the Windows Service
You can start, stop, or check the status of CollectorCtrl via Services (services.msc) or PowerShell (as Administrator):
# Check service status
PS >Get-Service CollectorCtrl
# Restart service
PS >Restart-Service CollectorCtrl
# Stop service
PS >Stop-Service CollectorCtrl
Optional: Enable Production HTTPS
By default, CollectorCtrl listens on http://localhost:4321. For production HTTPS you have two options:
Option A: Reverse Proxy (Recommended)
Terminate TLS on port 443 using IIS, Nginx, or Caddy, and forward traffic to http://localhost:4321. This gives you managed certificates, standard ports, and keeps TLS config out of the app.
Option B: Built-in TLS
Set the COLLECTORCTRL_UI_HTTPS environment variable on the Windows Service:
PS >Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CollectorCtrl" -Name Environment -Value "COLLECTORCTRL_UI_HTTPS=true" -Type MultiString
PS >Restart-Service CollectorCtrl
Part 3: Install the Supervisor Agent
Repeat these steps on every server where you want to manage an OpenTelemetry Collector.
⚡ Recommended: use the Get Started wizard. Open Get Started (🧭) in the dashboard — it generates a PowerShell one-liner with your server address pre-filled, downloads the correct installer (from the server's mirror first, so agent machines need no internet access), and registers the service. The steps below are the manual equivalent.
Step 1: Download the Supervisor Installer
Download collectorctrl-supervisor_0.2.6_windows_amd64.exe from the releases page (pick the newest release tag).
Step 2: Run the Installer
- Right-click
collectorctrl-supervisor_0.2.6_windows_amd64.exeand select Run as Administrator - Server Connection Page:
- Server OpAMP Endpoint: Enter your CollectorCtrl server's OpAMP URL
- Example:
ws://192.168.1.10:4320/v1/opamp - Use
ws://for plain connections (the default) orwss://for TLS
- Example:
- Server OpAMP Endpoint: Enter your CollectorCtrl server's OpAMP URL
- Collector Configuration Page:
- OpenTelemetry Collector Binary: Select the path to your
otelcol.exe- Default:
C:\Program Files\otelcol\otelcol.exe
- Default:
- Initial Config (optional): Select an initial YAML config if you have one
- OpenTelemetry Collector Binary: Select the path to your
- Complete the wizard
The installer:
- Writes
supervisor.yamltoC:\Program Files\CollectorCtrl Supervisor\ - Registers the
CollectorCtrlSupervisorWindows Service - Starts the service automatically
Step 3: Verify the Agent Appears in the Dashboard
Within 30 seconds, the agent should appear in the Fleet Overview at http://YOUR_SERVER_IP:4321.
Part 4: Manual Service Registration (Alternative)
If you prefer command-line or need to deploy via Group Policy/SCCM:
# Create the service
PS >New-Service -Name 'CollectorCtrlSupervisor' \`
PS > -BinaryPathName '"C:\Program Files\CollectorCtrl Supervisor\supervisor.exe" --config "C:\Program Files\CollectorCtrl Supervisor\supervisor.yaml"' \`
PS > -DisplayName 'CollectorCtrl Supervisor' \`
PS > -StartupType Automatic
# Start the service
PS >Start-Service -Name 'CollectorCtrlSupervisor'
# Verify
PS >Get-Service -Name 'CollectorCtrlSupervisor'
Configuration Reference
Default Paths
| Component | Path |
|---|---|
| Server binary | C:\Program Files\CollectorCtrl\server.exe |
| Server config | C:\ProgramData\CollectorCtrl\ |
| Server logs | C:\ProgramData\CollectorCtrl\logs\server.log |
| Supervisor binary | C:\Program Files\CollectorCtrl Supervisor\supervisor.exe |
| Supervisor config | C:\Program Files\CollectorCtrl Supervisor\supervisor.yaml |
| Supervisor logs | C:\ProgramData\CollectorCtrlSupervisor\supervisor.log |
| Database (SQLite) | C:\ProgramData\CollectorCtrl\collectorctrl.db |
supervisor.yaml Template
server:
endpoint: 'ws://YOUR_SERVER_IP:4320/v1/opamp'
token: 'YOUR_API_TOKEN'
tls:
insecure_skip_verify: true
capabilities:
reports_effective_config: true
reports_own_metrics: true
reports_own_logs: true
reports_own_traces: true
reports_health: true
accepts_remote_config: true
reports_remote_config: true
accepts_restart_command: true
accepts_packages: true
agent:
executable: 'C:\Program Files\OpenTelemetry Collector\otelcol.exe'
passthrough_logs: true
config_files:
- 'C:\Program Files\OpenTelemetry Collector\config.yaml'
storage:
directory: 'C:\ProgramData\CollectorCtrlSupervisor\storage'
telemetry:
logs:
level: info
output_paths:
- 'C:\ProgramData\CollectorCtrlSupervisor\supervisor.log'
Note: Use wss:// instead of ws:// when your server terminates TLS for OpAMP. Escape backslashes in YAML as \\ or use forward slashes.
Firewall Requirements
Ensure the following ports are open:
| Port | Direction | Purpose |
|---|---|---|
| 4320 (TCP/WS) | Inbound to Server | OpAMP agent communication |
| 4321 (TCP/HTTP) | Inbound to Server | Admin UI and REST API |
| 13133 (TCP) | Localhost only | OTel Collector health check |
No inbound ports need to be opened on agent machines — they connect outbound to the server.
Troubleshooting
| Problem | Solution |
|---|---|
Browser shows "can't reach" via https:// | The UI is plain HTTP — use http://localhost:4321 |
| Service won't start | Check C:\ProgramData\CollectorCtrl\logs\server.log for errors |
| Agent not appearing | Verify server IP and port 4320 are reachable: Test-NetConnection -ComputerName SERVER_IP -Port 4320 |
| TLS errors | If using self-signed certs, set insecure_skip_verify: true in supervisor.yaml |
| Config not applying | Ensure otelcol.exe path is correct and the binary is executable |
CollectorCtrl