Overview
Bpanel is a web-based VPS management panel built with Node.js. It gives you a file manager, code editor, and full terminal — all from your browser. No SSH client needed.
It runs as a single Node.js process on port 9390 and uses SQLite for storage. No external databases, no Docker, no complexity.
- Runs on port 9390 by default
- SQLite database (zero configuration)
- First registered user becomes admin
- Full root filesystem access
- Systemd managed service
Requirements
| OS | Ubuntu 20.04+ / Debian 11+ |
| Node.js | 18+ (auto-installed) |
| RAM | 512 MB minimum |
| Disk | ~50 MB for Bpanel itself |
| Access | Root privileges |
Quick Start
Run this as root on your VPS:
bash <(curl -fsSL https://bpanel.99host.fun/dev/v5/install-bpanel-now)
The installer will:
- Install Node.js 20 if not present
- Install build dependencies (gcc, python3, git)
- Clone Bpanel to
/opt/bpanel - Run
npm install - Create and start a systemd service
- Print the access URL
Open http://your-vps-ip:9390 in your browser and create your account.
File Manager
The sidebar shows your current directory. Files and folders are sorted logically — directories first (alphabetical), then files (alphabetical).
Actions
- Click folder — open directory
- Click file — open in editor
- Right-click — context menu (rename, delete)
- +f button — create new file
- +d button — create new folder
- ↑ button — go up one directory
The sidebar is resizable — drag the border between sidebar and editor.
Code Editor
Click any file in the sidebar to open it in the editor. Multiple files can be open as tabs.
Keyboard Shortcuts
| Ctrl + S | Save current file |
| Tab | Insert 2 spaces |
Modified files show a • dot in the tab. Closing an unsaved tab prompts a confirmation.
Web Terminal
Click the Terminal button in the top bar to toggle the terminal panel. It opens a full bash shell via PTY (node-pty + xterm.js).
- Full 256-color support
- Resizable (drag the top border)
- Works with vim, htop, nano, and any CLI tool
- Terminal starts in the session's working directory
Sessions
Sessions are workspaces tied to a directory. Each session remembers its working directory. You can create multiple sessions for different projects.
Session: "My API" → /root/api-project Session: "Frontend" → /var/www/frontend Session: "Configs" → /etc
Authentication
On first visit, Bpanel shows a registration form. The first user registered becomes the only user. After that, registration is locked.
- Passwords hashed with bcrypt (12 rounds)
- JWT tokens stored in httpOnly cookies
- Tokens expire after 7 days
- Minimum password length: 6 characters
Domain Manager
Manage Nginx virtual hosts directly from Bpanel. Add domains, configure static sites or reverse proxies, edit raw configs — all without SSH.
Adding a Domain
Go to the Domains tab in the dashboard. Click Add Domain and fill in:
- Domain name — e.g.,
example.com - Type — Static (HTML/PHP) or Reverse Proxy
- Root directory — for static sites (e.g.,
/var/www/example) - Proxy port — for reverse proxy (e.g.,
3000)
Bpanel automatically creates the Nginx config, enables the site, tests the configuration, and reloads Nginx.
Configuration Types
server {
listen 80;
server_name example.com;
root /var/www/example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Actions
- Edit Config — Open raw Nginx config in editor
- Enable/Disable — Toggle site without deleting
- Delete — Remove config file entirely
nginx -t before applying. If test fails, changes are rolled back automatically.
SSL Manager
Manage Let's Encrypt SSL certificates through Certbot — directly from the UI. Issue, view, and revoke certificates without touching the command line.
Prerequisites
SSL Manager requires Certbot. If not installed, Bpanel shows an install button that runs:
apt install -y certbot python3-certbot-nginx
Issuing a Certificate
Go to the SSL tab. Click Issue Certificate and provide:
- Domain — Must already have DNS pointing to this server
- Email — For renewal notifications (optional but recommended)
Bpanel runs:
certbot --nginx -d example.com --email you@email.com --agree-tos --non-interactive --redirect
This automatically configures HTTPS and sets up HTTP → HTTPS redirect.
Certificate List
View all certificates with:
- Certificate name
- Covered domains
- Expiration date (with color indicators)
- Certificate path on disk
- Status (VALID / INVALID / EXPIRING SOON)
Actions
- Renew All — Runs
certbot renew - Revoke — Revokes individual certificate
Database Manager
Create and manage PostgreSQL and MariaDB databases. Set up users, permissions, and get connection strings — all from the dashboard.
Supported Databases
| Engine | Port | Status |
|---|---|---|
| PostgreSQL | 5432 | Auto-detected |
| MariaDB / MySQL | 3306 | Auto-detected |
If not installed, click the Install button to set up the engine.
Creating a Database
Go to the Databases tab. Click Create Database and provide:
- Engine — PostgreSQL or MariaDB
- Database name
- Username — A new user is created
- Password — For the new user
Bpanel automatically:
- Creates the database
- Creates the user with password
- Grants all privileges on the database
- Shows you the connection string
Connection Strings
postgresql://username:password@localhost:5432/dbname
mysql://username:password@localhost:3306/dbname
SQL Terminal
Click the Connect button on any database to open a terminal session directly connected to that database (psql or mysql client).
System Monitor
View server resources and installed software at a glance. CPU, memory, disk usage, plus auto-detection of 25+ common tools.
Resource Monitoring
| Metric | Details |
|---|---|
| CPU | Core count, load average (1m, 5m, 15m) |
| Memory | Total, used, free — with percentage bar |
| Disk | Total, used, free — with percentage bar |
| Uptime | System uptime in days/hours/minutes |
Progress bars change color based on usage: green (<60%), yellow (60-85%), red (>85%).
Server Information
- Hostname
- Operating System (Ubuntu, Debian, etc.)
- Architecture (x64, arm64)
- Kernel version
Installed Software Detection
Bpanel auto-detects and shows versions for:
Web Servers: nginx, apache2 Languages: node, php, python3, ruby, go, rust, java Package Mgrs: npm, yarn, composer, pip Databases: postgresql, mysql, redis, mongodb DevOps: docker, git, make, gcc Utilities: certbot, pm2, curl, wget, ufw
Nginx Status
If Nginx is installed, the System tab also shows:
- Config test result (
nginx -t) - List of enabled sites from
/etc/nginx/sites-enabled/
Port Configuration
Default port is 9390. Change it with the environment variable:
BPANEL_PORT=8080 node bpanel.js
Or edit the systemd service:
Environment=NODE_ENV=production Environment=BPANEL_PORT=8080
Then reload: systemctl daemon-reload && systemctl restart bpanel
Environment Variables
| Variable | Default | Description |
|---|---|---|
BPANEL_PORT | 9390 | HTTP port |
BPANEL_JWT_SECRET | random | JWT signing secret (auto-generated if not set) |
BPANEL_JWT_SECRET, a random secret is generated on each restart. This means all users get logged out when the service restarts. Set a fixed secret in production.
Systemd Service
The installer creates a systemd service automatically. Useful commands:
systemctl status bpanel # Check status systemctl restart bpanel # Restart systemctl stop bpanel # Stop systemctl start bpanel # Start journalctl -u bpanel -f # Live logs journalctl -u bpanel -n 50 # Last 50 lines
Reverse Proxy (Nginx)
To use Bpanel with a domain and Nginx:
server {
listen 80;
server_name panel.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:9390;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
}
}
ln -s /etc/nginx/sites-available/bpanel /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx
SSL / HTTPS
With Nginx set up, add SSL with Certbot:
apt install certbot python3-certbot-nginx certbot --nginx -d panel.yourdomain.com
Certbot will automatically configure Nginx for HTTPS and set up auto-renewal.
Updating
To update Bpanel to the latest version:
cd /opt/bpanel git pull origin main npm install systemctl restart bpanel