Self-hosting
This page describes deploying SCWebManager on your own server and exposing it securely through a domain. It applies to both co-located and split deployments.
Deployment modes
| Mode | Typical scenario |
|---|---|
| Local | Panel and browser on the same machine, loopback only |
| LAN | Multiple devices on the same network |
| Reverse proxy | Public access through Nginx, Caddy or Cloudflare Tunnel |
| Split | Panel on one machine, game server on another |
Preparation
- A host capable of running the panel (Windows or Linux).
- The panel release package.
- A domain and TLS certificate for public access.
- A reverse proxy for public access; do not expose the panel port directly.
Install the panel
Windows:
powershell -ExecutionPolicy Bypass -File .\install.ps1
Linux:
sudo bash install.sh
Confirm both the panel and daemon are running:
systemctl status scwebmanager
On Windows, check the daemon service in the service manager.
Reverse proxy
Nginx
server {
listen 443 ssl http2;
server_name panel.example.com;
ssl_certificate /etc/nginx/certs/panel.crt;
ssl_certificate_key /etc/nginx/certs/panel.key;
location / {
proxy_pass http://127.0.0.1:18233;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 3600s;
}
}
SSE requires response buffering to be disabled. proxy_buffering off and a long proxy_read_timeout are required.
Caddy
panel.example.com {
reverse_proxy 127.0.0.1:18233 {
flush_interval -1
}
}
flush_interval -1 flushes SSE data immediately.
Cloudflare Tunnel
cloudflared tunnel --url http://127.0.0.1:18233
Bind a domain to the tunnel in the Cloudflare dashboard. The panel sets no-transform and heartbeats for tunnel and CDN scenarios to avoid buffered real-time data.
Access scope and client IP
The panel decides access by request source. When running behind a reverse proxy, ensure X-Forwarded-For is forwarded; otherwise the panel sees only the proxy address and may misjudge the source.
Choose the appropriate scope under Settings → Panel:
- Loopback only: local machine.
- Allow LAN: local and private network.
- Allow public: any source; use only behind a reverse proxy with strong credentials.
Security recommendations
- Use strong passwords and rotate them.
- Enable HTTPS for public access.
- Restrict the panel port to trusted sources.
- Back up
config.json,data/and instance directories regularly. - Do not grant command or file-write AI tools to regular users.
- Verify
SHA256SUMSbefore upgrading.
Upgrade and rollback
- Stop the panel and daemon.
- Back up configuration and data.
- Replace program files.
- Start and verify instances and plugin connectivity.
If a new version fails, restore the previous program files and configuration.
Data migration
When moving to a new host, copy:
config.jsonfrom the installation directory.- The
data/directory. - Instance and backup directories.
If ports or paths change, update them in panel settings and restart instances.
Common issues
Page loads but live data does not update
Check that the reverse proxy disables buffering and forwards X-Forwarded-For.
Signed in but permission denied
Verify the account role and instance grants. Regular users cannot access all instances by default.
Instance fails to start
Read the server output in the instance log and confirm the working directory and program path.
Plugin not connected
Confirm the plugin DLL is loaded, the instance was restarted, and ports from 18235 are not blocked by a firewall.