Start

Overview

StackPanel is a self-hosted, cPanel-style control panel for a single Ubuntu 24.04 server. Deploy Laravel, PHP or static projects from git, point domains at them with free SSL, create databases, schedule cron jobs, keep queue workers running and keep an eye on the server, all from one focused interface.

What it does

AreaWhat you get
DashboardLive CPU, memory, disk and load with 24-hour history, public and private IPs, OS and kernel, service health with one-click restart, and a "needs attention" list (failed deploys, expiring certificates, stopped workers).
ProjectsWizard: git repo → deploy key → domains → database → setup & deploy scripts → review, with a live setup log. Deploy button and history, editable deploy script (default git pull, one-click Laravel preset), .env editor, GitHub/GitLab webhook auto-deploy.
DomainsOne nginx vhost per domain; sub-domains and www aliases; domains without a project are parked on a built-in page or listed for sale; Let's Encrypt certificates with DNS checks and auto-renewal.
DatabasesWizard to create a MySQL database, user, strong password and grants (all / read-write / read-only / custom). Reveal and rotate passwords, adopt existing databases, Adminer built in behind the panel login.
File managerBrowse, view, edit, upload (drag & drop), create, rename, move, delete, zip download and extract, jailed to the home path with .ssh folders hidden.
FTP accountsOne-click pure-ftpd install, then FTP logins jailed to a single folder (usually a project), with TLS required, quotas, disable/enable, password reset and live sessions.
BackupsScheduled per-project bundles (files zip plus a compressed dump of each database), separate schedules for databases and files, kept on the server for N days and pushed to SFTP, FTPS, FTP or Dropbox. History with live logs, download, retry push and Backup now.
Cron & workersVisual schedule builder with plain-English preview and next run times; Laravel scheduler template; run-now and output logs. Supervisor workers with queue:work, Horizon and Reverb templates.
StorageEvery disk and DigitalOcean volume with usage; format and mount volumes; move all projects onto a volume and back, verified and rollback-safe.
PHP versionsInstalled versions with FPM state, memory and extensions; what uses each one; move usages between versions; add and remove versions.
MemoryRAM per service and per process, with copy-paste suggestions for MySQL, unused PHP versions, snapd and swap.
LogsServer logs (nginx, PHP-FPM, MySQL, Supervisor, SSL, system) and per-domain logs. Each project gets its own Logs tab with storage/logs (Laravel entries grouped, with level filters) and live follow.
Fail2banJails and banned IPs, unban, manual bans, a persistent whitelist and one-click "whitelist my IP".
UsersA main administrator from the server's .env, plus panel users with mandatory two-factor authentication.

How it fits together

The panel runs in a single Docker container with host networking. Everything it manages lives on the server itself; the container reaches the host through nsenter. Your sites are served by the host's nginx and PHP-FPM, so they keep running even when the panel is stopped.

Browser :8090 / panel domain StackPanel container privileged · pid: host · network: host nginx → Laravel API + React UI queue workers (deploys, SSL, backups) scheduler (metrics, cert expiry) Adminer · SQLite state (/data) Ubuntu 24.04 host nginx :80 / :443 PHP-FPM 8.x MySQL certbot cron.d Supervisor /home/deploy/<project> nginx root → <project>/public only nsenter 127.0.0.1

Because the container can act as root on the server, the panel's login is the security boundary. Use a strong password, turn on two-factor authentication and, once a panel domain with SSL is set up, bind the port to 127.0.0.1. See the security checklist.

Tech stack

Laravel 13 (PHP 8.4 in the container), a React 19 + React Router 7 single-page app, Tailwind CSS 4, SQLite for the panel's own state, a database-backed queue for long-running jobs, and Adminer for database browsing.