Knowledge Base

Installation Guide

Step-by-step instructions for installing and verifying the DICOM Router on Windows, including Windows Service setup.

Prerequisites

Operating system: Windows 10 (1909+), Windows 11, Windows Server 2019 or 2022 (recommended for production).

Runtime: .NET 9.0 Runtime (required).

Hardware:

Minimum Recommended
CPU 2 cores, 2.4 GHz 4+ cores, 3.0 GHz
RAM 4 GB 8–16 GB (32 GB+ high-throughput)
Storage 100 MB app + DICOM files SSD, 1 TB+, RAID 1/5/10
Network 100 Mbps 1 Gbps dedicated

Method 1 — Standalone

:: 1. Extract files to installation directory (e.g. C:\DicomProxy\)

:: 2. Verify .NET 9.0
dotnet --info

:: 3. Copy and edit configuration
copy appsettings.example.json appsettings.json

:: 4. Test run
DicomProxyRTWindows.exe

Method 2 — Windows Service

:: Run as Administrator
sc create "DICOM Proxy" binPath="C:\DicomProxy\DicomProxyRTWindows.exe" start=auto
sc description "DICOM Proxy" "Advanced DICOM Proxy/Router/PACS Service"

:: Auto-restart on failure
sc failure "DICOM Proxy" reset=86400 actions=restart/5000/restart/5000/restart/5000

sc start "DICOM Proxy"
sc query "DICOM Proxy"

Initial configuration

appsettings.json

{
  "DicomPort": 11112,
  "HttpPort": 8080,
  "HttpsPort": 8443,
  "StoragePath": "C:\\DicomStorage",
  "DatabasePath": "C:\\DicomStorage\\dicom.db",
  "LogLevel": "Info",
  "MaxStorageSizeGB": 1000,
  "CleanupIntervalHours": 24,
  "ThisModality": {
    "AE_Title": "DICOMPROXY",
    "Port": 11112,
    "IPAddress": "0.0.0.0",
    "MaxConnections": 50
  },
  "Security": {
    "EnableTLS": false,
    "CertificatePath": "",
    "CertificatePassword": "",
    "RequireAuthentication": false
  }
}

servers.json

{
  "servers": [
    {
      "id": "pacs1",
      "name": "Main PACS Server",
      "ae_title": "MAINPACS",
      "hostname": "192.168.1.100",
      "port": 11112,
      "enabled": true,
      "max_connections": 10,
      "timeout_seconds": 30,
      "priority": 1,
      "supported_services": ["C-STORE", "C-FIND", "C-GET", "C-MOVE", "C-ECHO"]
    }
  ]
}

Storage structure (auto-created)

C:\DicomStorage\
├── studies\
│   └── [StudyInstanceUID]\
│       └── [SeriesInstanceUID]\
│           └── [SOPInstanceUID].dcm
├── temp\
├── logs\
└── config\
    ├── dicom.db
    └── cache\

Network / firewall

Ports

Service Default port Protocol
DICOM SCP 11112 TCP
HTTP API 8080 TCP
HTTPS API 8443 TCP
DICOM TLS 11113 TCP

Firewall rules

:: Inbound
netsh advfirewall firewall add rule name="DICOM Proxy - DICOM" dir=in action=allow protocol=TCP localport=11112
netsh advfirewall firewall add rule name="DICOM Proxy - HTTP"  dir=in action=allow protocol=TCP localport=8080
netsh advfirewall firewall add rule name="DICOM Proxy - HTTPS" dir=in action=allow protocol=TCP localport=8443

:: Outbound
netsh advfirewall firewall add rule name="DICOM Proxy - Out DICOM" dir=out action=allow protocol=TCP remoteport=11112
netsh advfirewall firewall add rule name="DICOM Proxy - Out HTTP"  dir=out action=allow protocol=TCP remoteport=80,443

SSL/TLS

Generate a self-signed certificate (development)

$cert = New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
$certPath = "C:\DicomProxy\certificate.pfx"
Export-PfxCertificate -Cert $cert -FilePath $certPath `
  -Password (ConvertTo-SecureString "YourSecurePassword" -AsPlainText -Force)

Enable TLS in appsettings.json

{
  "Security": {
    "EnableTLS": true,
    "CertificatePath": "certificate.pfx",
    "CertificatePassword": "YourSecurePassword",
    "RequireAuthentication": true
  }
}

Place the DICOM TLS certificate at: C:\DicomProxy\dicomtls.pfx


Verification

# DICOM echo
echoscu localhost 11112 -aet TESTCLIENT -aec DICOMPROXY

# HTTP API
curl http://localhost:8080/api/studies
curl http://localhost:8080/openapi.json

# QIDO-RS
curl "http://localhost:8080/wado/studies?StudyDate=20240101-20241231"

# Storage
dir C:\DicomStorage\studies

Troubleshooting

Problem Diagnosis Fix
Port in use netstat -an | findstr :11112 taskkill /f /pid [PID]
Permission denied icacls "C:\DicomProxy" /grant "NT SERVICE\DICOM Proxy":(OI)(CI)F
.NET not found dotnet --info Reinstall .NET 9.0 Runtime
Service won't start Check Event Viewer → Windows Logs → Application Look for DICOM Proxy entries

Log file location: C:\DicomStorage\logs\dicom-proxy-[date].log

Key log messages:

  • Started DICOM server on port — DICOM OK
  • HTTP server started on — HTTP API OK
  • License validation successful — licence OK
  • Failed to connect to server — network issue

Next: Configuration Reference