Skip to main content

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​

ModeTypical scenario
LocalPanel and browser on the same machine, loopback only
LANMultiple devices on the same network
Reverse proxyPublic access through Nginx, Caddy or Cloudflare Tunnel
SplitPanel on one machine, game server on another

Preparation​

  1. A host capable of running the panel (Windows or Linux).
  2. The panel release package.
  3. A domain and TLS certificate for public access.
  4. 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​

  1. Use strong passwords and rotate them.
  2. Enable HTTPS for public access.
  3. Restrict the panel port to trusted sources.
  4. Back up config.json, data/ and instance directories regularly.
  5. Do not grant command or file-write AI tools to regular users.
  6. Verify SHA256SUMS before upgrading.

Upgrade and rollback​

  1. Stop the panel and daemon.
  2. Back up configuration and data.
  3. Replace program files.
  4. 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.json from 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.