Skip to content

CloudzyVPS/slate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slate

A lean, self-hosted web hosting control panel — a clean, modern alternative to cPanel. One ~13 MB Go binary, ~5 MB RAM, no bloat.

Sites · PHP · SSL · Databases · Files · DNS · Email — the essential 20% of cPanel that 95% of hosting actually needs, with a modern UI and a security-first design.


Why Slate

cPanel and its clones are heavy, sprawling, and (some of them) have a track record of catastrophic unauthenticated RCEs. Slate takes the opposite approach:

  • One static binary. Pure-Go, no runtime dependencies, cross-compiles anywhere, ~5 MB RAM idle.
  • Security-first split. An unprivileged web process talks to a root agent over a root-only Unix socket using a fixed set of typed operations — there is no "run arbitrary command" path. Even if the web layer were fully compromised, an attacker can only invoke the operations Slate explicitly allows. This is the structural defense against the class of bugs that has mass-compromised other panels.
  • Multi-tenant-ready. Every row carries an account_id from day one, so per-customer isolation and reseller support can be switched on without a rewrite.
  • No SPA build step. Server-rendered Go templates + htmx. Clean, fast, hackable.

Features

Sites nginx vhost + isolated system user + document root per site
PHP real PHP-FPM execution with per-site version switching (8.1 / 8.2 / 8.3)
SSL one-click Let's Encrypt certificates with automatic renewal
Databases MySQL / MariaDB databases & users
Files web file manager (browse / edit / upload / mkdir / delete), scoped to each site
DNS authoritative BIND zones (A / AAAA / CNAME / MX / TXT)
Email Postfix + Dovecot virtual mailboxes (IMAP / SMTP)
UI modern dark sidebar with icons, audit log, first-run setup

Status

Early release (v0.x). Every feature listed above is implemented and has been verified working end-to-end on Ubuntu 24.04. However, Slate is not yet production-hardened for running a commercial multi-customer hosting business: there's no firewall/fail2ban automation, the multi-account/reseller UI isn't built yet (the data model is ready), there's no spam filtering or webmail, and automated test coverage is minimal.

Use it, self-host with it, kick the tires, and file issues — but please don't bet a business on it just yet.

Requirements

  • Ubuntu 24.04 LTS (x86_64)
  • Root access on the target server

Install

# Build from source (Go 1.25+)
git clone https://github.com/CloudzyVPS/slate
cd slate
go build -o slate ./cmd/slate

# Copy the binary to your Ubuntu server, then run the per-service installers as root:
./deploy/install.sh        # nginx + the slate-agent (root) and slate-web (unprivileged) services
./deploy/setup-php.sh      # PHP-FPM 8.1 / 8.2 / 8.3
./deploy/setup-mysql.sh    # MariaDB
./deploy/setup-ssl.sh      # certbot (Let's Encrypt)
./deploy/setup-dns.sh      # BIND9
./deploy/setup-email.sh    # Postfix + Dovecot

# Create the first admin account
sudo -u slate slate admin create-user --email you@example.com --password 'change-me'

The panel binds to 127.0.0.1:8123 by design — never expose it directly. Reach it via an SSH tunnel (ssh -L 8123:127.0.0.1:8123 your-server) or put a TLS reverse proxy in front (deploy/expose-tls.sh sets one up with a self-signed cert; swap in a real domain + Let's Encrypt for production).

Architecture

 browser ──HTTPS──> nginx ──> slate serve   (unprivileged web · SQLite · sessions · UI)
                                   │ typed RPC over a root-only Unix socket
                                   │ (fixed operation set — no arbitrary commands)
                                   ▼
                              slate agent    (root · validates every request)
                                   │
          nginx · PHP-FPM · MariaDB · certbot · BIND · Postfix/Dovecot · filesystem

One binary, two roles: slate serve (web) and slate agent (root). Deploy = copy a binary and two systemd units.

License

Slate is dual-licensed:

  • Open source — GNU AGPL-3.0. You may use, modify, and self-host Slate freely. If you run a modified version as a network service, you must make your modified source available to its users under the same license.
  • Commercial. If you want to embed Slate in a closed-source product or offer it as a SaaS without AGPL obligations, a commercial license is available. Contact office@cloudzy.com.

© 2026 Cloudzy. "Slate" and the Slate logo are trademarks of Cloudzy.

Contributing

Contributions welcome — see CONTRIBUTING.md. Please preserve the unprivileged-web / root-agent security boundary in any change.

About

A lean, self-hosted web hosting control panel — a clean, modern cPanel alternative in a single Go binary. Sites, PHP, SSL, databases, files, DNS, email.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors