Complete reference for configuring and managing ProxyStack.
The main configuration file is proxystack.json in the ProxyStack root folder.
{
"settings": {
"httpPort": 80,
"httpsPort": 443,
"serverAdmin": "admin@localhost",
"environment": "development"
},
"sites": [...],
"apps": [...],
"security": {...},
"sentinel": {...}
}
GUI-specific settings are stored separately in proxystack.settings.json:
{
"autoStartApache": true,
"alertsEnabled": true,
"slackWebhook": "https://hooks.slack.com/services/...",
"alertEmail": "alerts@example.com"
}
Store profiles in profiles/ folder:
profiles/proxystack.development.jsonprofiles/proxystack.staging.jsonprofiles/proxystack.production.jsonSwitch profiles from the Security tab using the Environment dropdown.
{
"domain": "app.example.com",
"proxy": {
"target": "http://localhost:3000",
"timeout": 60,
"websocket": true
},
"ssl": {
"enabled": true,
"cert": "certs/app.example.com-crt.pem",
"key": "certs/app.example.com-key.pem"
},
"redirectHttpToHttps": true
}
{
"domain": "static.example.com",
"documentRoot": "sites/my-react-app/build",
"spaFallback": true,
"ssl": { "enabled": true, "cert": "...", "key": "..." }
}
{
"domain": "hybrid.example.com",
"documentRoot": "sites/frontend",
"spaFallback": true,
"proxyRoutes": [
{ "path": "/api", "target": "http://localhost:8000" },
{ "path": "/ws", "target": "ws://localhost:8001", "websocket": true }
],
"ssl": { "enabled": true, "cert": "...", "key": "..." }
}
proxystack.json are relative to the ProxyStack root folder. Use forward slashes: certs/cert.pem, not C:\ProxyStack\certs\cert.pem.| Field | Type | Description |
|---|---|---|
domain | string | Primary domain name |
aliases | string[] | Additional domain aliases |
proxy | object | Main reverse proxy target |
documentRoot | string | Static file directory |
proxyRoutes | array | Per-path proxy routes |
ssl | object | SSL certificate configuration |
redirectHttpToHttps | bool | Auto-redirect HTTP to HTTPS |
spaFallback | bool | Serve index.html for non-file routes |
{
"apps": [
{
"name": "My API",
"command": "npm run dev",
"workingDirectory": "apps/my-api",
"port": 3000,
"autoStart": true,
"autoRestart": true,
"subProcesses": [
{
"name": "Supabase",
"command": "npx supabase start",
"workingDirectory": null,
"port": 54321,
"autoStart": true
}
]
}
]
}
| Field | Type | Description |
|---|---|---|
name | string | Display name |
command | string | Command to run |
workingDirectory | string? | Working directory (inherits from parent if null) |
port | int | Port the sub-process listens on (0 if N/A) |
autoStart | bool | Start automatically with parent app |
All commands are launched with echo y | piped to stdin and npm_config_yes=true set in the environment to auto-accept prompts. Sub-processes start before the main command and are killed together when the app is stopped.
certs/Use the "Generate Self-Signed" option in the Certs tab. ProxyStack uses the bundled OpenSSL to create a certificate and key pair. Useful for local development.
When a site has SSL enabled but empty cert/key paths, ProxyStack automatically scans certs/ for matching files based on the domain name. Supported naming patterns:
{domain}-crt.pem, {domain}-cert.pem, {domain}.crt, {domain}-fullchain.pem{domain}-key.pem, {domain}.key, {domain}-privkey.pem{domain}-chain.pem, {domain}-chain-only.pemThe Docker tab provides comprehensive container management (requires Docker Desktop).
docker-compose.yml fileOne-click deploy for common services: NGINX, Apache, Caddy, PostgreSQL, MySQL, MongoDB, Redis, Node.js, Python, Go, Adminer, pgAdmin.
Real-time CPU usage, memory consumption, network I/O, and disk usage per container.
ProxyStack can manage a portable PostgreSQL instance without Docker.
postgres/ automatically| Path | Description |
|---|---|
postgres/pgsql/bin/ | PostgreSQL binaries |
postgres/data/ | Database data directory |
postgres/data/log/ | PostgreSQL logs |
Go to Advanced tab → Database Console. Enter connection details and execute SQL queries directly from the GUI.
{
"security": {
"enableHSTS": true,
"enableXFrameOptions": true,
"enableXContentTypeOptions": true,
"enableXXSSProtection": true,
"ipWhitelist": ["192.168.1.0/24"],
"ipBlacklist": ["10.0.0.5"]
}
}
ProxyStack automatically adds security headers to all HTTPS responses: X-Content-Type-Options, X-Frame-Options, and Referrer-Policy. Additional headers (HSTS, XSS Protection) can be enabled in the Security tab.
Configure IP whitelists and blacklists to restrict access to your sites.
The Secrets & Tools tab provides an encrypted vault for storing sensitive values like API keys, database passwords, and tokens.
Enable "Start ProxyStack with Windows" and "Auto-start Apache" in the Security tab to run ProxyStack as a background service.
Enable the API from Security tab → "Enable REST API (port 9090)".
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/status | Apache status and version |
| GET | /api/health | Health check for all services |
| GET | /api/config | Configuration summary |
| GET | /api/sites | List all configured sites |
| GET | /api/apps | List all configured apps |
| POST | /api/apache/start | Start Apache |
| POST | /api/apache/stop | Stop Apache |
| POST | /api/apache/restart | Restart Apache |
| GET | /api/certs | SSL certificate status |
| GET | /api/metrics | Performance metrics |
| POST | /api/backup | Trigger manual backup |
| GET | /api/plugins | List installed plugins |
For production use, enable API key authentication in the Production tab. Include the header X-API-Key: your-key with all requests.
# PowerShell
Invoke-RestMethod -Uri "http://localhost:9090/api/status"
Invoke-RestMethod -Uri "http://localhost:9090/api/apache/restart" -Method POST
# curl
curl http://localhost:9090/api/health
curl -X POST http://localhost:9090/api/apache/restart
# Node.js
const res = await fetch('http://localhost:9090/api/status');
const status = await res.json();
All endpoints return JSON. Errors include an error field. HTTP status codes: 200 (success), 401 (unauthorized), 404 (not found), 500 (internal error).
| Channel | Setup |
|---|---|
| Slack | Enter Slack Incoming Webhook URL in Security tab |
Configure SMTP settings in proxystack.settings.json |
Default 5-minute cooldown prevents alert spam for flapping services. Each service has an independent cooldown timer.
Extend ProxyStack with plugins from the Plugin Marketplace (Advanced tab).
Plugin configs are stored as JSON files in the plugins/ directory. Each plugin has its own configuration schema.
The Team tab supports multi-user access with role-based permissions.
| Role | Permissions |
|---|---|
| Admin | Full access to all features |
| Developer | Manage sites, apps, and configuration |
| Operator | Start/stop services, view logs |
| Viewer | Read-only access |
All actions (site changes, config updates, service starts/stops) are recorded in the audit log with timestamp, user, action, and details. Stored in team.json.
| Tab | Purpose |
|---|---|
| Dashboard | Start/Stop Apache, status cards, quick actions, update checker |
| Logs | Real-time Apache access and error log viewer |
| Config | Edit proxystack.json directly, validate configuration |
| Sites | Add/edit/remove domains, proxy targets, SSL settings |
| Certs | SSL certificate management, Let's Encrypt, self-signed generation |
| Apps | Backend process manager with sub-processes |
| Docker | Container management, Compose, PostgreSQL, templates |
| Monitor | CPU/RAM/Disk monitoring, service health checks |
| Security | Headers, IP lists, REST API, auto-start, environment profiles |
| Secrets & Tools | Encrypted vault, Port Scanner |
| Production | Backups, rate limiting, SSL expiry monitoring, remote management |
| Team | Users, roles, audit log |
| Observability | Request tracing, metrics, service dependency graph |
| Advanced | Rewriting, caching, API gateway, plugins, database console |
| File/Folder | Purpose |
|---|---|
proxystack.json | Main configuration |
proxystack.settings.json | GUI settings |
team.json | Users and audit log |
plugins.json | Installed plugins list |
config/httpd.conf | Generated Apache config |
config/vhosts.conf | Generated virtual hosts |
certs/ | SSL certificates |
logs/ | Apache and application logs |
backups/ | Configuration backups |
profiles/ | Environment profiles |
sites/ | Static site files |
plugins/ | Plugin configuration files |
postgres/ | Portable PostgreSQL (Full edition) |
apache/ | Bundled Apache binaries |
win-acme/ | Let's Encrypt ACME client |
sentinel/ | SentinelAI agent files |
netstat -ano | findstr :80logs/error.logtaskkill /F /IM httpd.exenslookup yourdomain.comdocker --version and docker psnetstat -ano | findstr :5432postgres/pgsql/bin/pg_ctl.exe existspostgres/data/log/ for errorscurl http://localhost:9090/api/statuslogs/access.loglogs/error.loglogs/{domain}-access.log, logs/{domain}-error.logpostgres/data/log/