🐝

Bee Panel

Admin
Rootless Control Plane

Signed in as

{{ currentUser }}

Connecting to Bee Panel...

🚀

Initialize Administrator

No admin account found. Create the primary superadmin account to activate Bee Panel.

{{ errorMsg }}
🐝

Admin Sign In

Bee Panel Control Console (:8443)

{{ errorMsg }}
CPU USAGE
{{ metrics.cpu_usage_percent }}%
{{ metrics.cpu_cores }} Cores Load: {{ metrics.load_average || '0.00' }}
MEMORY (RAM)
{{ metrics.memory_used_mb }} / {{ metrics.memory_total_mb }} MB
{{ ramUsagePercent }}% Used Free: {{ metrics.memory_free_mb }} MB
SWAP MEMORY
{{ metrics.swap_used_mb }} / {{ metrics.swap_total_mb }} MB
{{ swapUsagePercent }}% Used Auto 2GB baseline
STORAGE DISK
{{ metrics.disk_used_gb }} / {{ metrics.disk_total_gb }} GB
{{ diskUsagePercent }}% Used Free: {{ metrics.disk_free_gb }} GB
TENANTS (ISOLATED USERS) {{ (tenants && tenants.length) || 0 }} Zero-Root UserNS
DOCKER CONTAINERS {{ metrics.containers_count || (containers && containers.length) || 0 }} Pasta Network Driver
HOST SECURITY
UFW: {{ metrics.firewall_enabled ? 'Active' : 'Inactive' }} Fail2ban: {{ metrics.fail2ban_active ? 'Active' : 'Inactive' }}
Uptime: {{ formatUptime(metrics.uptime_seconds) }}

User Directory (Rootless Tenants)

Manage isolated Linux tenants with dedicated user namespaces, SSH access, and Rootless Docker daemons.

USERNAME UID / GID DOCKER SOCKET STATUS CREATED ACTIONS
No tenant users provisioned yet. Click "Create User" to add one!
{{ t.username }} {{ t.uid }} / {{ t.gid }} {{ t.docker_socket }} Active Suspended {{ formatDate(t.created_at) }}

System-Wide Container Explorer

Real-time status of all containers running across isolated rootless tenant sockets.

CONTAINER NAME / ID TENANT OWNER IMAGE STATE / STATUS PORTS ACTIONS
No Docker containers currently discovered on any tenant sockets.
{{ c.display_name }}
{{ c.short_id }}
{{ c.tenant }} {{ c.image }} {{ c.status }} {{ c.status }}
{{ p.public_port ? p.public_port + ':' : '' }}{{ p.private_port }}/{{ p.type }}
-

Global Domain & Reverse Proxy Routing

Map public domain names to internal tenant container ports with automated Let's Encrypt SSL.

DOMAIN TENANT WEB DIRECTORY LISTEN PORT TARGET PORT SSL STATUS ACTIONS
No domains configured yet. Click "Bind Domain" to setup reverse proxy routing!
{{ d.domain }} {{ d.tenant_username || 'unassigned' }}
{{ d.web_root || ('/var/www/vhosts/' + d.domain + '/public_html') }}
:{{ d.external_port }} :{{ d.target_container_port }} (Proxy) Static Web HTTPS Active HTTP Only

UFW Firewall Rules

{{ firewallStatus.enabled ? 'Enabled' : 'Disabled' }}

Control inbound traffic, open ports, and block unauthorized IPs.

Show:
RULE # DESTINATION (PORT) ACTION SOURCE (FROM) COMMENT ACTION
{{ fwSearch ? 'No firewall rules match your search query.' : 'No active firewall rules found.' }}
#{{ r.number }} {{ r.to }} {{ r.action }} {{ r.from }} {{ r.comment || '-' }}
Showing {{ fwRangeStart }} to {{ fwRangeEnd }} of {{ filteredFwRules.length }} rules
Page {{ fwCurrentPage }} of {{ totalFwPages }}

Active Banned IP Addresses

{{ fail2banStatus.active ? 'Active' : 'Inactive' }} {{ (fail2banStatus.banned_list || []).length }} Blocked

Automated brute-force ban defense across active jails: {{ (fail2banStatus.jails || []).join(', ') || 'none' }}

Show:
JAIL BANNED IP ADDRESS ATTACK BEHAVIOR / PATTERN BAN TIME EXPIRE TIME ACTION
{{ f2bSearch ? 'No banned IPs match your search query.' : 'No IP addresses are currently banned by Fail2ban.' }}
{{ b.jail }} {{ b.ip }}
{{ b.attack_type || 'SSH Authentication Intrusion' }} {{ b.failures || 5 }} failed attempts
{{ b.ban_time || '-' }} {{ b.expire_time || '-' }}
Showing {{ f2bRangeStart }} to {{ f2bRangeEnd }} of {{ filteredBannedList.length }} banned IPs
Page {{ f2bCurrentPage }} of {{ totalF2BPages }}

Control Plane Network Settings

Core ports, port forward pool, and listening network addresses.

Unified port serving both Admin Console (/) and Developer Portal (/portal)

Telegram Event Notifications

Receive real-time security, login, and tenant provisioning alerts directly on Telegram.

{{ telegramFeedback.text }}

Host SSH Port Management

Safely modify the OpenSSH listening port with automated UFW allow and syntax validation.

Current Active SSH Port: :{{ currentSSHPort }}
The panel will automatically open this port in UFW before restarting SSH.

Custom Panel Domain Binding

Active Domain (Portless)

Bind a domain (e.g. panel.example.com) to access Bee Panel directly on standard port 80/443 without needing :8443.

Point your domain's DNS A-record to {{ publicIP || '64.118.143.89' }} before binding.

Direct Public IP SSL (Let's Encrypt)

HTTPS Port 443 Active HTTP / Self-Signed Only

Direct Let's Encrypt short-lived SSL certificate for public raw IP (RFC 8738 / HTTP-01 challenge). Enables portless HTTPS on standard port 443 with green lock.

Server Public IP: {{ publicIP || '64.118.143.89' }}
Certificate Expiration: {{ ipSSLStatus.expires }} (Auto-renewed every 12h)

Bee Panel Self-Update & Version

{{ versionInfo.version }}

Arch: {{ versionInfo.arch }} | OS: {{ versionInfo.os }} | Runtime: {{ versionInfo.go_version }}

Latest Release: {{ latestRelease.latest_version }} {{ latestRelease.published_at }}

{{ latestRelease.release_notes }}

Provision New Tenant User

Automatically creates an unprivileged Linux user, SubUID/SubGID mapping, SSH keys, and Rootless Docker daemon.

Lowercase alphanumeric, underscores, and dashes only.
{{ modalError }}

{{ activeUser.username }} Credentials & SSH Access Keys

UID: {{ activeUser.uid }} | Socket: {{ activeUser.docker_socket }}
Tenant Successfully Provisioned!

Copy all connection details or download your SSH private key now before closing.

Change Password
Rotate SSH Key

Bind Domain to Container

Direct incoming web traffic to an internal tenant container port.

Default 80/443. Custom ports auto-open in Firewall.
Leave empty for static web. Auto-opens in Firewall.
{{ modalError }}

Nginx Logs: {{ activeDomainLogs.domain }}

Live web server log stream
{{ line }}
(No log entries found)

Container Logs: {{ activeContainerLogs.name }}

Tenant: {{ activeContainerLogs.tenant }} | ID: {{ activeContainerLogs.id }}
{{ activeContainerLogs.content || '(No log output)' }}

Add Firewall Rule

Open or block a port in UFW with optional source IP filter.

Specify single IP or CIDR range to restrict access.

Ban IP in Fail2ban

Immediately block an offending IP address across the chosen jail.

Edit Domain: {{ editDomainForm.domain }}

Modify target container routing port or toggle SSL.

0 for static web. Auto-updates Firewall rules.

SSL Management: {{ sslDomainTarget }}

Auto-issue Let's Encrypt or upload custom certificate
Let's Encrypt Auto-Renewal

Domain DNS must point directly to this server: {{ publicIP || '64.118.143.89' }}.

Upload Custom SSL Certificate

Attack Forensics Inspector

{{ selectedForensics.ip }}

Target Jail {{ selectedForensics.jail }}
Failures Recorded {{ selectedForensics.failures || 5 }} attempts
Ban Timestamp {{ selectedForensics.ban_time }}
Auto-Unban Expiry {{ selectedForensics.expire_time }}
Detected Attack Pattern & Behavior
{{ selectedForensics.attack_type || 'SSH Authentication Intrusion' }}
Triggering Auth / System Log Snippet
{{ selectedForensics.trigger_detail }}

Fail2ban Configuration

Configure parameters for /etc/fail2ban/jail.local
Offending IP block time.
Failure count window.
Retry attempt limit.
Space-separated IP addresses or CIDR ranges never banned.

Admin Account Profile

Manage administrator account & credentials

Account Details

Update administrator username and contact email.

{{ adminProfileFeedback.text }}

Change Password

Set a new strong password for administrator login.

{{ adminPasswordFeedback.text }}