VortexPanel v3.3.0 — Visual Design, Multi-Webserver HTTP/3, Live Terminal, Mail & Bandwidth #3
BrowserlessAPI
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
VortexPanel v3.3.0 — Visual Design, Multi-Webserver HTTP/3, Live Terminal, Mail & Bandwidth
Release date: June 2026
A broad quality-of-life release covering visual polish, long-standing bugs, and several features that were half-built in earlier versions and are now complete and properly tested.
🎨 Visual Design Overhaul
The dashboard and sidebar were reworked to feel intentional rather than generic.
#0e7490) to blue (#2563eb) for stronger contrast.--stat-cpu,--stat-ram,--stat-disk,--stat-uptimeadded totheme.cssfor consistent use across the panel.⚡ HTTP/3 — Full Multi-Webserver Support
The previous HTTP/3 toggle only worked on nginx and showed a static "go install it yourself" warning for everything else. It now handles all four supported webservers correctly:
listen 443 quic reuseportandAlt-Svcheader. Automatically opens UDP 443 in UFW or firewalld.--with-http_v3_module. Shows a one-click "Upgrade to nginx.org Mainline" button that installs the official package, preserving all existing vhost configs.🔧 Bug Fixes — SyntaxWarnings in modules.py
Seven invalid escape sequences in
modules.pythat would break on strict Python builds (Python 3.12+ raisesSyntaxWarning, future versions will error):\.,\s,\Kin regular strings → raw strings (r'''...''')\s,\K,\Sin f-strings → raw f-strings (rf"...")🔄 Session Persistence — Survives Restarts
Root cause: Flask's default client-side signed cookie sessions are invalidated when gunicorn restarts, because each worker independently generates a secret key if the file doesn't exist yet — causing a race condition where workers end up with different keys in memory.
Fix: Enabled
flask-session(already inrequirements.txtbut never activated) withSESSION_TYPE = 'filesystem'. Session data is now stored as files in/opt/vortexpanel/sessions/. The session cookie holds only a signed session ID. Sessions survive gunicorn restarts, nginx reloads, and worker recycling. Sessions can be individually invalidated server-side on logout.📊 Live Installation Terminal — All App Store Actions
The App Store previously showed no progress when switching versions — the button would appear to do nothing for several minutes, then either succeed or fail with no output.
Root cause chain (three separate bugs):
switch_versionused blockingsh()calls with no output streaming_jobs = {}), but gunicorn runs with--workers 4— each worker has its own memory space, so the SSE stream (potentially on worker 2) couldn't see jobs created on worker 1Fix: Full rewrite of the job system:
/tmp/vortex_jobs/— append-only, shared across all workers via the filesystemPopenwithbufsize=1apt-get updatewaiting on a slow mirror)apt-getnetwork timeout set to 30 seconds per mirror on all switch scriptsTerminal colours: All output lines now have explicit hex colours so they're readable on the black terminal background: regular apt output (
#d1fae5), info lines (#67e8f9cyan), success (#4ade80green bold), warnings (#fbbf24amber bold).🗄 MariaDB — Settings & Versions Fixed
save_module_settings()never definedmod, causing aNameErrorin therun_switchclosure. Addedmod = _get_mod(mod_id)at the top of the handler.status,version,conf_path,conf_content,logs,portbut was missingoptimization,current_status,slow_log,log_path,datadir. All fields now match the MySQL handler.save_optimizationhad no MariaDB handler — nginx, Apache, and OLS had handlers; MySQL/MariaDB fell through silently. Now reads the correct.cnfpath per distro, updates existing keys with regex, appends new keys under[mysqld]if missing, then restarts the service.🔒 Database Version Switching — Removed (Uninstall-First Approach)
Following aaPanel's approach: switching a running database engine version in-place risks data corruption, especially on downgrades. The "Switch Version" tab has been removed from MariaDB, MySQL, PostgreSQL, and MongoDB settings modals.
The safe workflow is: Uninstall → Install new version from App Store. Version switching remains available for non-database modules (Redis, nginx, Apache, OLS, Caddy, Node.js, BIND9, pure-ftpd).
🌐 Two-Webserver Conflict Detection
If two webservers (e.g. nginx + apache2) are both
activesimultaneously — causing port 80/443 conflicts and unpredictable routing — the dashboard now shows a red warning banner with a "Fix Now →" button linking directly to Services. Detection runs in parallel with the existing CPU/disk/services poll on every dashboard stats request.📧 Mail — Forwarding & Logs Completed
selDomainwas only set when the user clicked a domain in the Mailboxes tab. The Forwarding tab now has its own domain selector dropdown, independent of the Mailboxes tab./var/log/maillog) withjournalctlfallback, configurable via?lines=query param.🟢 Node.js — Versions Corrected, Switch Bug Fixed
setup_20.x(EOL). Nowsetup_24.x(Active LTS).nodejs_install_script()default inos_utils.pyupdated from'22'→'24'.🚀 nginx Install — UDP 443 + Stream Block
nginx_install_script()inos_utils.pynow runs two post-install steps automatically:stream {}block added to/etc/nginx/nginx.confif missing (required for TCP load balancing to work at all — was causing silent failure on fresh installs).🔌 nginx Stream Module — Auto-Install All 9 Distros
The TCP Load Balancer previously showed a static warning telling users to run
apt install libnginx-mod-streammanually. It now installs automatically:apt install libnginx-mod-stream, with retry afterapt updateif first attempt fails..soalready exists (nginx.org packages bundle it). Falls back todnf install nginx-mod-streamif not found.load_moduledirective exists innginx.conf, runsnginx -t, reloads nginx.modules-enabled/50-mod-stream.confsymlink and skips manual injection when present.Upgrading
cd /root/Vortexpanel git pull cp -r panel/ web/ app.py /opt/vortexpanel/ mkdir -p /opt/vortexpanel/sessions systemctl restart vortexpanelOr fresh install:
wget -O install.sh https://raw.githubusercontent.com/BrowserlessAPI/VortexPanel/main/install.sh && bash install.shWhat's Next (v3.4 Roadmap)
This discussion was created from the release VortexPanel v3.3.0 — Visual Design, Multi-Webserver HTTP/3, Live Terminal, Mail & Bandwidth.
Beta Was this translation helpful? Give feedback.
All reactions