Skip to content

Commit f758073

Browse files
docs: v3.4.0 — README + release notes for Go/Node.js Projects, Website Import wizard, FFmpeg/Memcached, RHEL-family + arm64 fixes, modal/layout system overhaul
1 parent af65e1c commit f758073

5 files changed

Lines changed: 148 additions & 22 deletions

File tree

README.md

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div align="center">
22

3-
<img src="https://img.shields.io/badge/VortexPanel-v3.3-6c7fff?style=for-the-badge&logo=lightning&logoColor=white" alt="VortexPanel v3.3">
3+
<img src="https://img.shields.io/badge/VortexPanel-v3.4-6c7fff?style=for-the-badge&logo=lightning&logoColor=white" alt="VortexPanel v3.4">
44
<img src="https://img.shields.io/badge/Python-3.8+-3776ab?style=for-the-badge&logo=python&logoColor=white">
55
<img src="https://img.shields.io/badge/Flask-3.x-000000?style=for-the-badge&logo=flask">
66
<img src="https://img.shields.io/badge/Alpine.js-3.14-8bc0d0?style=for-the-badge">
@@ -42,6 +42,8 @@ Built with Python/Flask + Alpine.js. No Node.js build step. No bloat. 2-minute i
4242
| **Docker UI** |||||| **✅ Built-in** |
4343
| **RHEL/AlmaLinux/Rocky** ||| Partial | Partial || **✅ 9 distros** |
4444
| **Web Terminal** |||||| **✅ Built-in** |
45+
| **Go/Node.js app hosting** |||||| **✅ Built-in, one-click** |
46+
| **Import from cPanel/aaPanel/Hestia** |||||| **✅ Built-in wizard** |
4547
| **Open source** ||| Partial ||| **✅ MIT** |
4648

4749
---
@@ -54,6 +56,21 @@ Built with Python/Flask + Alpine.js. No Node.js build step. No bloat. 2-minute i
5456
- Reverse proxy, custom directives, PHP version per site, Composer integration
5557
- One-click WordPress/Laravel/Symfony deploy
5658
- PHP webshell scanner integrated with the File Manager
59+
- **Per-site disk usage** (lazy-loaded, won't slow down servers with many/large sites)
60+
- **Global SSL expiry alerts** on the Dashboard, aggregated across every site
61+
62+
### 🔵 Go Projects & 💚 Node.js Projects
63+
Deploy compiled Go binaries and Node.js apps with the same one-click simplicity as WordPress — a capability none of cPanel, Plesk, aaPanel, or HestiaCP offer out of the box:
64+
- **Go**: binary-only deployment, Go SDK manager (multiple versions side by side), GOPROXY config, systemd auto-restart, resource limits (`MemoryMax`/`CPUQuota`), on-demand TCP health checks, binary version history with one-click rollback
65+
- **Node.js**: PM2 or systemd per project, nvm-based version switching, current LTS reality (v24 Active, v22 Maintenance, v18/v20 correctly blocked as EOL)
66+
- Both: reverse proxy on all 4 webservers with **WebSocket support**, Let's Encrypt SSL per domain, firewall integration, all 9 supported distros
67+
68+
### 📥 Website Import Wizard
69+
Migrate a site off cPanel, aaPanel, or HestiaCP by uploading its backup archive — no SSH pull required:
70+
- **Detect → confirm → import** flow — every auto-detected field (domain, PHP version, document root, database) is editable before anything executes
71+
- Imported sites use the exact same code path as "New Website", so they're indistinguishable from natively-created ones
72+
- Fresh random database password generated on import (originals are never in a backup dump)
73+
- Files + database in this release; email/cron/SSL migration not yet included
5774

5875
### 🔷 WP Toolkit
5976
Full WordPress lifecycle management — install, manage, secure, stage, back up — no separate plugin or paid add-on:
@@ -84,9 +101,9 @@ Full WordPress lifecycle management — install, manage, secure, stage, back up
84101
- phpMyAdmin integration (auto-configured on its own port, separate PHP version)
85102

86103
### 📦 App Store
87-
- 25+ one-click installs: Nginx, Apache, OpenLiteSpeed, Caddy, PHP (multi-version), MySQL, MariaDB, PostgreSQL, MongoDB, Redis, Docker, Node.js, Python, Composer, Fail2ban, ClamAV, ModSecurity, Roundcube, Supervisor, Pure-FTPd, BIND9 DNS, and more
104+
- **27** one-click installs: Nginx, Apache, OpenLiteSpeed, Caddy, PHP (multi-version), MySQL, MariaDB, PostgreSQL, MongoDB, Redis, **Memcached**, **FFmpeg** (multi-version, side by side), Docker, Node.js, Python, Composer, Fail2ban, ClamAV, ModSecurity, Roundcube, Supervisor, Pure-FTPd, BIND9 DNS, and more
88105
- **Live installation terminal** — every install, uninstall, and version switch streams real-time output line-by-line (like aaPanel's task terminal)
89-
- Automatic conflict detection, RHEL-family package manager support
106+
- Automatic conflict detection, RHEL-family package manager support**all 5 previously-broken RHEL install paths (nginx, MySQL, Caddy, MongoDB, PostgreSQL) fixed**, tested on both x86_64 and arm64
90107
- **Safe database version policy** — databases (MariaDB/MySQL/PostgreSQL/MongoDB) require uninstall-first to prevent data corruption; version switching kept for non-data modules
91108

92109
### ⚙ Settings — redesigned card-based control center
@@ -103,11 +120,11 @@ Full WordPress lifecycle management — install, manage, secure, stage, back up
103120
- `app.js` 150KB → ~40KB, `index.html` 350KB → ~70KB over the wire
104121

105122
### 🔧 Everything else
106-
- **Docker** — container management, 45+ pre-configured image catalog
123+
- **Docker** — container management, 45+ pre-configured image catalog, **domain assignment + automatic SSL** (reuses the same reverse-proxy code as Go/Node.js Projects, no Traefik needed)
107124
- **DNS** — BIND9 zone management + Cloudflare DDNS
108125
- **Mail** — Postfix + Dovecot, domains, accounts, Roundcube webmail
109126
- **CDN** — Cloudflare, BunnyCDN, Akamai, CloudFront, KeyCDN
110-
- **Monitoring**real-time CPU/RAM/Disk/Network, process list, bandwidth
127+
- **Monitoring & Dashboard**realtime CPU/RAM/Network charts, process list, bandwidth, **login audit log viewer**
111128
- **File Manager** — code editor, chmod, AES-encrypted zip support, ClamAV scan
112129
- **Web Terminal** — full PTY shell in browser over WebSocket
113130
- **Backups** — website + database, restore, S3-compatible cloud backup
@@ -180,26 +197,30 @@ python3 app.py # runs on :8888
180197

181198
## 🗺 Roadmap
182199

183-
**v3.3 (current) — shipped:**
184-
- [x] Visual design overhaul — coloured stat cards, sidebar icon pills
185-
- [x] HTTP/3 QUIC — full multi-webserver support (nginx upgrade, Caddy/OLS auto, Apache blocked)
186-
- [x] Live installation terminal — real-time SSE streaming for all App Store actions
187-
- [x] Two-webserver conflict detection — dashboard warning banner
188-
- [x] Mail forwarding domain selector + log filter/search
189-
- [x] Session persistence across gunicorn restarts (flask-session filesystem)
190-
- [x] nginx stream module auto-install across all 9 distros
191-
- [x] MariaDB 12.x versions added; optimization tab fixed
192-
- [x] Node.js v24 as default LTS; EOL v18/v20 removed; switch bug fixed
193-
194-
**v3.4 (next):**
200+
**v3.4 (current) — shipped:**
201+
- [x] Go Projects — binary deployment, Go SDK manager, WebSocket proxy, Let's Encrypt per-domain, resource limits, health checks, version rollback
202+
- [x] Node.js Projects — PM2 + systemd, nvm version switching
203+
- [x] Website Import wizard — cPanel, aaPanel, HestiaCP backup upload (files + database)
204+
- [x] FFmpeg Manager — multi-version side-by-side install (7.1/8.1/nightly), x86_64 + arm64
205+
- [x] Memcached — full Service/Config/Switch Version/Load Status/Optimization management
206+
- [x] Docker container domain assignment + automatic SSL (no Traefik)
207+
- [x] Dashboard realtime CPU/RAM/Network charts, global SSL expiry alerts
208+
- [x] Settings → Login audit log viewer
209+
- [x] Per-site disk usage
210+
- [x] RHEL-family install fixes — nginx, MySQL, Caddy, MongoDB, PostgreSQL now install correctly on RHEL/CentOS/Fedora/AlmaLinux/Rocky
211+
- [x] arm64 fixes — MongoDB and PostgreSQL RHEL install paths
212+
- [x] Modal/layout system overhaul — centering, horizontal scrollbar, cross-component scoping bugs
213+
214+
**v3.5 (next):**
195215
- [ ] Bandwidth Monitor — per-domain traffic graphs (daily/weekly/monthly)
196216
- [ ] Website-level Backup — files + database together in one click per domain
197217
- [ ] Dark mode — toggle with full dark variable set
198218
- [ ] Onboarding wizard — guided first-run flow
199219
- [ ] Mobile responsiveness — sidebar + layout for small screens
200220
- [ ] PHP Webshell Scanner — scan web roots for obfuscated shells
201-
- [ ] Disk usage analyzer (visual tree, delete from panel)
221+
- [ ] Disk usage analyzer visual tree, delete from panel
202222
- [ ] Alerting — CPU/RAM/SSL-expiry notifications (email/webhook)
223+
- [ ] Website Import — email, cron, and SSL migration (currently files + database only)
203224

204225
---
205226

RELEASE_NOTES_v3.4.0.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# VortexPanel v3.4.0 — Go/Node.js Project Manager, FFmpeg & Memcached, Website Import, Nine-Distro Reliability
2+
3+
**Release date:** July 2026
4+
5+
The biggest release since v3.2.0's security overhaul. Two entirely new deployment managers (Go and Node.js binary/app hosting — something none of cPanel, Plesk, aaPanel, or HestiaCP offer out of the box), a full Website Import wizard for migrating off other panels, two new App Store modules, and a broad reliability pass across all nine supported distros and both x86_64/arm64 architectures.
6+
7+
---
8+
9+
## 🚀 Go Projects & Node.js Projects — New Deployment Managers
10+
11+
VortexPanel can now host compiled Go binaries and Node.js applications directly, with the same one-click simplicity as a WordPress install.
12+
13+
### Go Projects
14+
- **Binary-only deployment** — point at a compiled Go binary, VortexPanel handles the rest
15+
- **Go SDK manager** — install/switch between multiple Go versions side by side, GOPROXY configuration (official/goproxy.io/goproxy.cn/direct)
16+
- **systemd service** — auto-restart on crash, enable-on-boot, journal logging
17+
- **Reverse proxy on all 4 webservers** — nginx, Apache, OpenLiteSpeed, and Caddy, auto-detected
18+
- **WebSocket support** — proper `Upgrade`/`Connection` header handling on nginx and Apache (needed for `gorilla/websocket`, gRPC-Web, etc.) — the shared nginx `$connection_upgrade` map is written once and reused across every proxied project
19+
- **Let's Encrypt SSL per domain** — nginx/Apache use certbot's native plugin, OpenLiteSpeed uses `certonly` + manual vhost wiring, Caddy is detected as already-automatic (no action needed)
20+
- **Resource limits**`MemoryMax` / `CPUQuota` in the systemd unit, so a runaway process gets capped instead of taking down the whole server
21+
- **On-demand health checks** — real TCP connect to the app's port, catching the case `Restart=always` can't: a hung process still holding the port open
22+
- **Binary version history + rollback** — every start/restart snapshots the binary (skipped if unchanged, via SHA-256 hash), keeps the last 5 versions, one-click revert
23+
- Firewall integration (UFW + firewalld), all 9 supported distros
24+
25+
### Node.js Projects
26+
- **PM2 + systemd** — choose either process manager per project
27+
- **nvm-based version switching** — install and switch Node versions without affecting other projects
28+
- Same reverse-proxy-on-all-4-webservers support as Go Projects
29+
- Current LTS reality reflected: **v24 Active LTS** default, v22 Maintenance, v18/v20 correctly blocked as EOL
30+
31+
---
32+
33+
## 📥 Website Import Wizard — Migrate from cPanel, aaPanel, HestiaCP
34+
35+
A new "Import Website" flow on the Websites page, upload-based (no SSH pull required):
36+
37+
1. **Upload** the backup archive exported from your old panel
38+
2. **Detect** — VortexPanel extracts it and makes a best-effort guess at the domain, PHP version, document root, and database dump
39+
3. **Confirm** — every detected field is editable before anything happens; nothing is auto-executed blind
40+
4. **Import** — creates the site + nginx vhost (the exact same code path as "New Website", so imported sites are indistinguishable from natively-created ones), copies files, creates the database and imports the dump, generates a fresh random DB password (originals are never in a backup dump, so there's nothing to recover)
41+
42+
Supports **cPanel** (`cpmove`/full-backup format, `userdata` YAML domain detection), **aaPanel** (domain-folder detection + `.sql`/`.sql.gz` filename matching), and **HestiaCP** (`v-backup-user`'s nested `web.tar`/`mysql.tar` format). Files + database only in this release — email, cron, and SSL migration are not yet included.
43+
44+
---
45+
46+
## 📦 App Store — 2 New Modules
47+
48+
- **FFmpeg Manager** — install multiple FFmpeg versions side by side (7.1, 8.1, and nightly master), each with its own command alias (`ffmpeg7`, `ffmpeg8`). Sourced from BtbN/FFmpeg-Builds — the provider ffmpeg.org's own download page links to for Linux static builds — with full x86_64 and arm64 support
49+
- **Memcached** — full management UI: Service (start/stop/restart/reload), Config File editor, Switch Version, Load Status (live stats via Memcached's own `stats` protocol), and Optimization (bind IP/port/cache size/max connections)
50+
51+
App Store module count: **27** (up from 25).
52+
53+
---
54+
55+
## 🖥 Dashboard & Monitoring
56+
57+
- **Realtime charts** — CPU/RAM history and Network I/O, client-side rolling window, no backend polling changes needed
58+
- **Global SSL expiry banner** — aggregates certificate expiry across every site, warns at 14 days with severity-graded colour coding (yellow → orange → red-for-expired)
59+
- **Settings → Audit Log viewer** — last 200 login attempts (time/status/IP/user/note) — the backend already existed, it just had no UI until now
60+
- **Per-site disk usage** — lazy-loaded (only fires when you open a site's Directory tab, so it doesn't slow down the Websites list on servers with many/large sites)
61+
62+
---
63+
64+
## 🐳 Docker — Domain Assignment Without Traefik
65+
66+
Containers can now be assigned a domain + automatic SSL directly from the Docker page, reusing the exact same reverse-proxy code already built for Go/Node.js Projects. No new moving parts, no Traefik dependency — just point a domain at a container's exposed port.
67+
68+
---
69+
70+
## 🛠 Reliability — RHEL-Family & arm64 Fixes
71+
72+
A full audit turned up (and fixed) install-time failures that were silently breaking on real-world server configurations:
73+
74+
- **RHEL/CentOS/Fedora/AlmaLinux/Rocky****nginx, MySQL, Caddy, MongoDB, and PostgreSQL** were previously **completely uninstallable** on any RHEL-family distro. The install scripts only had a Debian-specific GPG-keyring + `sources.list` code path; on RHEL this produced garbage commands (`dpkg -i` on a distro with no `dpkg`, Debian package names fed to `dnf`, etc.). All 5 now have proper distro-aware install paths — MySQL uses RHEL's built-in AppStream module stream (no external repo needed at all), PostgreSQL correctly disables the conflicting built-in module before installing PGDG's versioned packages.
75+
- **arm64** — MongoDB and PostgreSQL RHEL install paths had hardcoded `x86_64` in the repo URLs, silently breaking on ARM servers. MongoDB now uses `dnf`'s auto-resolving `$basearch`; PostgreSQL detects the real architecture via `uname -m`.
76+
- **A pre-existing Caddy bug** (not new — this predates the audit) was piping a fetched GPG key into `rm -f` instead of `gpg --dearmor`, producing an empty/invalid keyring on **Debian too**, not just RHEL. Fixed.
77+
- All module install/uninstall cycles audited for safety on repeat runs — GPG keys and repo files are now properly cleaned up on uninstall, preventing reinstall failures.
78+
79+
---
80+
81+
## 🎨 UI System — Modal & Layout Fixes
82+
83+
A cluster of related frontend bugs, all traced to the same root causes and fixed together:
84+
85+
- **Modal centering** — the underlying issue was `position:fixed` breaking when nested inside a scrolling ancestor (`overflow-y:auto` containers). All modals are now rendered as direct children of `<body>` via a shared global portal pattern, using explicit `width:100vw;height:100vh` so they're immune to any ancestor's overflow settings.
86+
- **Horizontal scrollbar shifting the entire panel** — a classic flexbox `min-width:auto` trap: `.main-area` and `.page-content` were `flex:1` with no `min-width:0`, so a single unconstrained `<select>` dropdown with long option text (App Store version pickers) could force the *whole layout* wider instead of scrolling internally. Fixed at the source, plus a body-level safety net.
87+
- **Cross-component scoping bugs** — several modals had their interactive functions defined inside the wrong Alpine.js component (a page's own scope instead of the global scope the portal actually renders in), causing buttons to silently do nothing. Standardized on the same pattern used by `toast()`/`get()`/`post()`: plain global functions, reachable from any component.
88+
- Eight pages (`dashboard`, `docker`, `settings`, `files`, `mail`, `bandwidth`, `security`, `caddy`) had dead method calls in their tab-refresh event listeners from an earlier bulk edit — switching to those tabs was silently failing. All fixed.
89+
90+
---
91+
92+
## 🔩 Smaller Fixes
93+
94+
- Self-hosted SVG brand logos for all App Store modules — zero CDN dependency for icons
95+
- nginx version bump — Stable 1.30.3, Mainline 1.31.2 (security patch)
96+
- Update-check false positive (was comparing git hash against semver)
97+
- Databases page now auto-detects MongoDB/PostgreSQL correctly with engine-aware columns
98+
- Install/uninstall hang fixes — proper timeouts (10min install, 5min uninstall, 8min switch), service-stop-before-remove ordering
99+
- `install.sh` now clones to a permanent `/root/Vortexpanel` instead of `/tmp` (which gets wiped on reboot, silently orphaning git tracking) — and auto-generates a correctly-pathed `deploy.sh` during install
100+
101+
---
102+
103+
## Upgrade Notes
104+
105+
No breaking changes. Existing sites, databases, and App Store installs are unaffected. Simply re-run `deploy.sh` or pull the latest and restart the `vortexpanel` service.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.3.0
1+
3.4.0

panel/routes/update.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def pkg_remove(p): return f'apt-get remove -y --purge {p} && apt-get autoremove
1616
def req(): return 'user' in session
1717

1818
GITHUB_REPO = 'BrowserlessAPI/VortexPanel'
19-
CURRENT_VERSION = 'v3.3.0'
19+
CURRENT_VERSION = 'v3.4.0'
2020
VERSION_FILE = '/opt/vortexpanel/version.txt'
2121
INSTALL_DIR = '/opt/vortexpanel'
2222
REPO_DIR = '/root/Vortexpanel'

web/templates/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
</div>
8989

9090
<div style="margin-top:20px;padding-top:16px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center">
91-
<span style="font-size:11px;color:var(--text-dim)">VortexPanel v3.3</span>
91+
<span style="font-size:11px;color:var(--text-dim)">VortexPanel v3.4</span>
9292
<a href="https://github.com/BrowserlessAPI/VortexPanel" target="_blank" style="font-size:11px;color:var(--text-muted);text-decoration:none">GitHub ↗</a>
9393
</div>
9494
</div>
@@ -103,7 +103,7 @@
103103
<div class="logo-icon">⚡</div>
104104
<div>
105105
<div class="logo-text">VortexPanel</div>
106-
<div class="logo-ver">v3.3</div>
106+
<div class="logo-ver">v3.4</div>
107107
</div>
108108
</div>
109109

0 commit comments

Comments
 (0)