Windows Binary Installation
SolidPing can be run on Windows systems as a standalone executable or as a Windows Service.
Download
Download the latest Windows release from GitHub:
- Go to the SolidPing Releases page
- Download
solidping-windows-amd64.exe - Rename to
solidping.exefor convenience
Or use PowerShell:
# Download the latest release
Invoke-WebRequest -Uri "https://github.com/fclairamb/solidping/releases/latest/download/solidping-windows-amd64.exe" -OutFile "solidping.exe"
Verify the checksum (recommended)
Every release also publishes solidping-checksums.txt, covering all five
published binaries:
Invoke-WebRequest -Uri "https://github.com/fclairamb/solidping/releases/latest/download/solidping-checksums.txt" -OutFile "solidping-checksums.txt"
# The checksums file lists the sha256 for each platform's binary — find the
# solidping-windows-amd64.exe line and compare it to the hash below.
Get-FileHash solidping.exe -Algorithm SHA256
Get-Content solidping-checksums.txt | Select-String "solidping-windows-amd64.exe"
postgres-embedded (the bundled PostgreSQL supervisor available on Linux and
macOS) is not available on Windows — use sqlite or an external postgres
database instead, as covered above and below.
Running
Quick Start with SQLite
Open Command Prompt or PowerShell in the directory containing solidping.exe:
# Run with SQLite (data stored in current directory)
.\solidping.exe serve
With PostgreSQL
# Set environment variables
$env:SP_DB_TYPE = "postgres"
$env:SP_DB_URL = "postgresql://user:password@localhost:5432/solidping"
# Run the server
.\solidping.exe serve
Run Database Migrations
.\solidping.exe migrate
Windows Service
Using NSSM (Recommended)
NSSM (Non-Sucking Service Manager) is the easiest way to run SolidPing as a Windows Service.
- Download NSSM from https://nssm.cc/download
- Extract and add to your PATH, or use the full path
Install the service:
# Install the service
nssm install SolidPing "C:\Program Files\SolidPing\solidping.exe" serve
# Set environment variables
nssm set SolidPing AppEnvironmentExtra SP_DB_TYPE=postgres
nssm set SolidPing AppEnvironmentExtra +SP_DB_URL=postgresql://user:password@localhost:5432/solidping
nssm set SolidPing AppEnvironmentExtra +SP_SERVER_LISTEN=:4000
# Set working directory
nssm set SolidPing AppDirectory "C:\Program Files\SolidPing"
# Configure logging
nssm set SolidPing AppStdout "C:\Program Files\SolidPing\logs\stdout.log"
nssm set SolidPing AppStderr "C:\Program Files\SolidPing\logs\stderr.log"
# Start the service
nssm start SolidPing
Manage the service:
# Check status
nssm status SolidPing
# Stop service
nssm stop SolidPing
# Restart service
nssm restart SolidPing
# Remove service
nssm remove SolidPing confirm
Using sc.exe (Native)
You can also use the native Windows Service Control Manager:
# Create the service
sc.exe create SolidPing binPath= "C:\Program Files\SolidPing\solidping.exe serve" start= auto
# Note: Environment variables must be set system-wide or use a wrapper script
Directory Structure
Recommended directory structure:
C:\Program Files\SolidPing\
├── solidping.exe
├── config.yml (optional)
├── data\
│ └── solidping.db (if using SQLite)
└── logs\
├── stdout.log
└── stderr.log
Create the directories:
New-Item -ItemType Directory -Path "C:\Program Files\SolidPing\data" -Force
New-Item -ItemType Directory -Path "C:\Program Files\SolidPing\logs" -Force
Configuration File
Instead of environment variables, you can use a configuration file:
Create C:\Program Files\SolidPing\config.yml:
db:
type: postgres
url: postgresql://user:password@localhost:5432/solidping
server:
listen: ":4000"
email:
enabled: true
host: smtp.example.com
port: 587
username: noreply@example.com
password: smtp-password
from: noreply@example.com
Firewall
Allow incoming connections through Windows Firewall:
# Allow inbound on port 4000
New-NetFirewallRule -DisplayName "SolidPing" -Direction Inbound -Protocol TCP -LocalPort 4000 -Action Allow
Or through the Windows Firewall GUI:
- Open "Windows Defender Firewall with Advanced Security"
- Click "Inbound Rules" → "New Rule"
- Select "Port" → TCP → Specific port: 4000
- Allow the connection
- Name it "SolidPing"
IIS Reverse Proxy
If you're using IIS, you can configure it as a reverse proxy:
- Install the URL Rewrite and Application Request Routing modules
- Enable proxy in ARR
- Add a rewrite rule in
web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="SolidPing Proxy" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:4000/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
SolidPing gzip-compresses its own responses (SP_SERVER_COMPRESSION, default
true), so IIS needs no compression module of its own for this — and turning
one on anyway is harmless, since a response that already carries
Content-Encoding passes through untouched.
Logs
View logs:
# View stdout log
Get-Content "C:\Program Files\SolidPing\logs\stdout.log" -Tail 100 -Wait
# View stderr log
Get-Content "C:\Program Files\SolidPing\logs\stderr.log" -Tail 100 -Wait
Updating
# Stop the service
nssm stop SolidPing
# Download new version
Invoke-WebRequest -Uri "https://github.com/fclairamb/solidping/releases/latest/download/solidping-windows-amd64.exe" -OutFile "C:\Program Files\SolidPing\solidping.exe"
# Start the service
nssm start SolidPing
Troubleshooting
Service Won't Start
- Check the logs in
C:\Program Files\SolidPing\logs\ - Verify environment variables are set correctly
- Ensure the database is accessible
- Check port 4000 is not in use:
netstat -an | findstr :4000
Permission Issues
Run PowerShell as Administrator when installing the service or modifying Program Files.
File Storage
Alongside the database, SolidPing writes a handful of blobs — org logos,
status-page assets, incident screenshots — under SP_FILESTORAGE_LOCAL_ROOT
(default ./data/files, relative to the working directory). With the service
setup above, that resolves under the persistent AppDirectory, so there is
nothing extra to configure here — this only matters for containerized
deployments. See File Storage for the S3
backend, useful once you run more than one node.
Next Steps
- Configuration Guide - All configuration options
- Check Types - Configure your first checks