English | 简体中文
A powerful, user-friendly, web-based server management panel.
Streamline the administration of instances, files, and users with a modern interface. Whether you are managing raw Shell commands or Docker containers, Panel provides seamless control.
Take full control of your services with support for both Shell and Docker environments.
- Lifecycle Control: Create, start, stop, restart, and terminate instances with one click.
- Docker Mastery: Configure images, ports, volumes, working directories, and custom commands effortlessly.
- Automation: Set auto-start on boot, auto-restart on failure, and auto-delete on exit.
- Monitoring: Real-time CPU and Memory usage tracking.
- Web Terminal: Full interactive terminal access for every instance.
Secure and flexible user management designed for teams.
- Roles: Distinct
adminanduserroles. - Granular Control: Define permissions per instance:
- Terminal: No Access, Read-only, Read/Write, or Full Control.
- Files: Toggle file management access.
- Security: Secure password updates and account management.
A desktop-class file manager directly in your browser.
- Operations: Navigate, create, rename, copy, move (cut-paste), and delete.
- Transfer: Chunked uploads for large files and easy downloads.
- Code Editor: Monaco Editor integration (VS Code style) with syntax highlighting and real-time websocket sync.
- Archives: Compress (zip, 7z, tar.gz, etc.) and Extract (zip, tar, bz2, etc.) directly on the server.
- Safety: Blacklist protection for binary/system files.
- WebDAV Support: Mount your instance files locally via WebDAV (
/api/dav/<instance-id>/). - Gradio Tunnel: Built-in remote access (no FRP/port forwarding required).
- Internationalization: Full i18n support (EN, CN, JP, etc.).
- Responsive Design: Works perfectly on mobile, tablet, and desktop.
- Unzip: For extracting releases
- Docker: (Optional) For container management
- 7-Zip: (Optional) For advanced archiving features
- Bubblewrap: Included in Linux release archives; install it separately when running from source
Note: Node.js is NOT required when using pre-built releases, as they include all dependencies.
Fastest deployment. No build tools required.
For Linux x64:
# 1. Install unzip and wget
sudo apt install -y unzip wget
# 2. Download and extract
sudo mkdir -p /opt/panel && cd /opt/panel
sudo wget https://github.com/Steve3184/panel/releases/download/latest/release-linux-x64.zip
sudo unzip release-linux-x64.zip && sudo rm release-linux-x64.zip
# 3. Setup Systemd Service
sudo useradd --system --home-dir /opt/panel --shell /usr/sbin/nologin panel 2>/dev/null || true
sudo chown -R panel:panel /opt/panel
# Optional, required only when using Docker instances:
sudo usermod -aG docker panel
sudo wget -O /etc/systemd/system/panel.service https://raw.githubusercontent.com/Steve3184/panel/main/panel.service
sudo systemctl daemon-reload
sudo systemctl enable panel
sudo systemctl start panelFor Linux ARM64:
# Use release-linux-arm64.zip instead
sudo wget https://github.com/Steve3184/panel/releases/download/latest/release-linux-arm64.zip
sudo unzip release-linux-arm64.zip && sudo rm release-linux-arm64.zip
# ...For Windows x64:
# Download release-win-x64.zip from:
# https://github.com/Steve3184/panel/releases/download/latest/release-win-x64.zip
# Extract and run: node src/server.jsFor developers or custom builds.
Click to expand build instructions
-
Install Node.js 22:
curl -sL https://deb.nodesource.com/setup_22.x | bash - sudo apt install -y nodejs bubblewrap -
Clone Repository:
sudo git clone https://github.com/Steve3184/panel.git /opt/panel cd /opt/panel -
Install Dependencies & Build:
npm install cd frontend && npm install npm run build cd ..
-
Configure Service:
sudo useradd --system --home-dir /opt/panel --shell /usr/sbin/nologin panel 2>/dev/null || true sudo chown -R panel:panel /opt/panel # Optional, required only when using Docker instances: sudo usermod -aG docker panel sudo cp panel.service /etc/systemd/system/ # Edit service file if path differs from /opt/panel sudo systemctl daemon-reload sudo systemctl enable panel sudo systemctl start panel
Access the panel at http://localhost:3000.
If no admin exists, you will be redirected to /setup to create the first account.
You can configure the panel via environment variables or by modifying src/server.js.
| Variable | Description | Default |
|---|---|---|
SESSION_SECRET |
Optional session signing and encryption key (minimum 32 bytes). If unset, a persistent random key is generated in the data directory. | Generated |
PORT |
The port the server listens on. | 3000 |
PANEL_LANG |
Server-side language (e.g., jp, en, zh_CN). |
en |
PANEL_DATA_DIR |
Optional directory for databases, sessions, workspaces, and temporary uploads. | Project directory |
TRUST_PROXY_HOPS |
Number of trusted reverse proxies in front of the panel. Leave unset for direct access. | 0 |
BWRAP_BIN |
Optional absolute path to the Bubblewrap executable. If unset, Panel checks the bundled binary and common system paths. | Auto-detected |
Setting variables in panel.service:
Edit /etc/systemd/system/panel.service and add Environment lines under [Service]:
[Service]
Environment="SESSION_SECRET=replace-with-at-least-32-random-bytes"
Environment="PORT=8080"
ExecStart=/usr/bin/node src/server.jsRemember to run sudo systemctl daemon-reload && sudo systemctl restart panel after changes.
Shell instances are sandboxed by default. Linux releases include a statically linked Bubblewrap binary, while source installations can use BWRAP_BIN or a system Bubblewrap installation. At startup, Panel executes a real sandbox capability probe. On Linux, an instance that requires sandboxing will not start if Bubblewrap or the required kernel features are unavailable. Windows does not support Bubblewrap and therefore runs native Shell instances without this isolation; use Docker for untrusted Windows workloads.
When available, the sandbox exposes the instance working directory as /workspace by default, provides read-only system libraries, and hides panel databases, sessions, the Docker socket, and other host paths. Administrators can optionally preserve the working directory's original absolute path inside the sandbox, which also updates HOME to that path. They can also add up to 32 existing absolute host paths as read-only mounts for dependencies such as user site-packages, virtual environments, or external JDK installations. Sandbox path changes take effect after the instance restarts. Sensitive panel paths, reserved sandbox locations, and paths overlapping the writable workspace cannot be added. Administrators can also disable isolation per instance, but doing so gives the process the same filesystem and service access as the panel system account.
The panel works behind a reverse proxy (nginx, Caddy, FRP, etc.) with a custom domain. The required configuration depends on whether TLS is terminated by the proxy.
HTTP proxy — no extra configuration needed
This includes nginx in HTTP mode, Caddy without TLS, and FRP vhost HTTP mode. The proxy forwards the Host and Origin headers unchanged, so the panel's built-in origin check passes automatically.
HTTPS-terminating proxy — set TRUST_PROXY_HOPS=1
This includes nginx/Caddy handling TLS certificates and FRP HTTPS vhost mode. When the proxy strips TLS and forwards plain HTTP inward, Express cannot detect the original https protocol on its own. Without this setting the panel's origin check sees a protocol mismatch and returns 403.
Add to your panel.service:
Environment="TRUST_PROXY_HOPS=1"Your proxy must also forward the X-Forwarded-Proto: https header — this is the default for most nginx and Caddy configurations.
⚠️ Do not setTRUST_PROXY_HOPSwhen the panel is directly internet-accessible without a proxy in front. Setting it in that case lets any client spoof the protocol header.
The panel includes built-in tunneling capabilities using Gradio, allowing you to access your panel from the public internet without configuring router port forwarding or setting up FRP.
- Go to Panel Settings in the panel.
- Enable Gradio Tunnel.
- Crucial: Set a
Share Token. This ensures your public URL remains constant. Without it, a random URL is generated on every restart. - Wait a moment, then refresh the Settings page to see your public link.
Make the panel your own via the Panel Settings page:
- Title: Change the browser tab and header title.
- Logo: Upload a custom image for the top-left corner.
- Background: Set a custom wallpaper for the login screen and dashboard.
| Login Page | Instance Terminal | Panel Settings |
|---|---|---|
![]() |
![]() |
![]() |
| Docker Instance Settings | Compress Files |
|---|---|
![]() |
![]() |
Contributions make the open-source community an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
Distributed under the MIT License. See LICENSE for more information.
Windows Compatibility: This panel is primarily developed for Linux environments. While it may run on Windows, functionality is not guaranteed and compatibility issues may arise.
This repository contains code that was generated or assisted by AI.










