Complete installation and configuration guide for running ContentWing on Windows Server. Includes Docker Desktop and native installation methods with IIS integration.
Ensure your Windows server meets these requirements before installation:
| Component | Minimum | Recommended | Notes |
|---|---|---|---|
| Operating System | Windows Server 2016 / Windows 10 Pro | Windows Server 2019+ / Windows 11 Pro | 64-bit versions only, Hyper-V capable |
| CPU | 2 cores, 2.0 GHz | 4+ cores, 2.5+ GHz | Intel VT-x or AMD-V required for Docker |
| Memory (RAM) | 8 GB | 16+ GB | Windows requires more RAM than Linux |
| Storage | 50 GB free space | 100+ GB SSD | NTFS file system required |
| Network | Stable internet connection | 100+ Mbps bandwidth | Windows Firewall configuration required |
Select the installation method that best fits your Windows environment:
Quick setup using Docker Desktop for Windows
Setup time: 20 minutes
Direct installation with IIS integration
Setup time: 45-60 minutes
Follow these steps for a Docker-based installation on Windows:
Enable Windows features required for Docker Desktop
# Run PowerShell as Administrator
# Enable Hyper-V and Containers features
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All
# Restart computer when prompted
Restart-ComputerDownload and install Docker Desktop for Windows
# Download Docker Desktop from official website
# https://www.docker.com/products/docker-desktop
# Or use Chocolatey package manager
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install docker-desktop -y
# Start Docker Desktop and complete setupSet up the ContentWing configuration files
# Create application directory
New-Item -ItemType Directory -Path 'C:\ContentWing' -Force
Set-Location 'C:\ContentWing'
# Download docker-compose.yml
Invoke-WebRequest -Uri 'https://releases.contentwing.com/latest/docker-compose.yml' -OutFile 'docker-compose.yml'
# Download environment template
Invoke-WebRequest -Uri 'https://releases.contentwing.com/latest/.env.example' -OutFile '.env.example'
Copy-Item '.env.example' '.env'Configure the application environment settings
# Edit environment file
notepad .env
# Required settings (edit in notepad):
# APP_URL=https://your-domain.com
# DATABASE_URL=postgresql://user:pass@db:5432/contentwing
# JWT_SECRET=your-super-secret-key-here
# REDIS_URL=redis://redis:6379
# Save and close notepadLaunch the ContentWing application stack
# Start all services in detached mode
docker-compose up -d
# Check service status
docker-compose ps
# View application logs
docker-compose logs -f app
# Access at http://localhost:3000For advanced users who prefer direct Windows installation with full system integration:
Install Node.js, PostgreSQL, and Redis dependencies
# Install Node.js 18+ using Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install nodejs -y
# Install PostgreSQL
choco install postgresql -y --params '/Password:secure_password'
# Install Redis (or use Redis on Windows)
choco install redis-64 -y
# Restart PowerShell to refresh PATHSet up the PostgreSQL database for ContentWing
# Start PostgreSQL service
Start-Service postgresql-x64-14
# Connect to PostgreSQL (using installed psql)
& 'C:\Program Files\PostgreSQL\14\bin\psql.exe' -U postgres
# In PostgreSQL shell, create database:
CREATE DATABASE contentwing;
CREATE USER contentwing_user WITH PASSWORD 'secure_password';
GRANT ALL PRIVILEGES ON DATABASE contentwing TO contentwing_user;
\qDownload and install the ContentWing application
# Create application directory
New-Item -ItemType Directory -Path 'C:\ContentWing' -Force
Set-Location 'C:\ContentWing'
# Download latest release
Invoke-WebRequest -Uri 'https://releases.contentwing.com/latest/contentwing-windows.zip' -OutFile 'contentwing.zip'
Expand-Archive -Path 'contentwing.zip' -DestinationPath '.' -Force
Remove-Item 'contentwing.zip'
# Install dependencies
npm install --productionConfigure the application settings and database
# Copy configuration template
Copy-Item '.env.example' '.env'
# Edit configuration file
notepad .env
# Set database connection:
# DATABASE_URL=postgresql://contentwing_user:secure_password@localhost:5432/contentwing
# JWT_SECRET=your-super-secret-key-here
# REDIS_URL=redis://localhost:6379
# Run database migrations
npm run db:migrateSet up ContentWing as a Windows service
# Install PM2 process manager globally
npm install -g pm2
npm install -g pm2-windows-service
# Create PM2 service
pm2 start ecosystem.config.js
pm2 save
pm2-service-install -n ContentWing
# Start the service
Start-Service ContentWingConfigure IIS as a reverse proxy for professional Windows hosting:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ContentWing" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="http://localhost:3000/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>1. Save this as web.config in your IIS site root directory
2. Ensure ContentWing is running on localhost:3000
3. Configure SSL certificate in IIS Manager
4. Test the configuration by visiting your domain
Secure your Windows ContentWing installation with these essential measures:
# Allow inbound HTTP traffic on port 3000
New-NetFirewallRule -DisplayName 'ContentWing HTTP' -Direction Inbound -Port 3000 -Protocol TCP -Action Allow
# Allow inbound HTTPS traffic on port 443
New-NetFirewallRule -DisplayName 'ContentWing HTTPS' -Direction Inbound -Port 443 -Protocol TCP -Action Allow
# Allow PostgreSQL traffic (local only)
New-NetFirewallRule -DisplayName 'PostgreSQL Local' -Direction Inbound -Port 5432 -Protocol TCP -RemoteAddress LocalSubnet -Action AllowKeep your Windows ContentWing installation healthy with these monitoring commands:
Monitor ContentWing Windows service status
# Check service status
Get-Service -Name 'ContentWing'
# View service details
Get-WmiObject -Class Win32_Service -Filter "Name='ContentWing'"
# Check PM2 processes
pm2 list
pm2 monitMonitor system resources and performance
# Check system performance
Get-Counter '\Processor(_Total)\% Processor Time'
Get-Counter '\Memory\Available MBytes'
# Monitor disk usage
Get-WmiObject -Class Win32_LogicalDisk | Select-Object Size,FreeSpace,DeviceID
# View application logs
Get-EventLog -LogName Application -Source 'ContentWing' -Newest 50docker-compose up -d - Start servicesdocker-compose down - Stop servicesdocker-compose logs -f - View logsdocker system prune - Clean upGet-Service ContentWing - Check statusRestart-Service ContentWing - Restart servicepm2 restart all - Restart PM2 processespm2 logs - View application logsDocker Desktop fails to start or shows Hyper-V errors.
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-AllContentWing Windows service fails to start.
Get-EventLog -LogName System -Source Service*IIS not properly forwarding requests to ContentWing.
Your Windows server is now ready! Continue with these guides:
Your ContentWing server is now running on Windows. Start creating amazing content!