An open API service indexing awesome lists of open source software.

https://github.com/steve3184/panel

A powerful, user-friendly, web-based server management panel. 🤗
https://github.com/steve3184/panel

docker-management file-manager linux-management management-system panel

Last synced: 4 months ago
JSON representation

A powerful, user-friendly, web-based server management panel. 🤗

Awesome Lists containing this project

README

          

# The Panel

![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)
![Node](https://img.shields.io/badge/node-%3E%3D22-brightgreen?style=flat-square)
![PRs Welcome](https://img.shields.io/badge/PRs-welcome-orange?style=flat-square)

**English** | [įŽ€äŊ“中文](README_CN.md)

**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.*

[Features](#-features) â€ĸ [Quick Start](#-quick-start) â€ĸ [Configuration](#-configuration) â€ĸ [Screenshots](#-screenshots)

---

## ✨ Features

### đŸ–Ĩī¸ Instance Management
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.
- 📷 View Screenshots
Instance Overview
Instance Terminal
Instance Settings

### đŸ‘Ĩ User & Permission RBAC
Secure and flexible user management designed for teams.
- **Roles**: Distinct `admin` and `user` roles.
- **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.
- 📷 View Screenshots
User Management
Instance Permissions

### 📂 Advanced File 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.
- 📷 View Screenshots
File Browser
Online File Editor

### 🔗 Connectivity & Access
- **WebDAV Support**: Mount your instance files locally via WebDAV (`/api/dav//`).
- **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.

---

## 🚀 Quick Start

### Prerequisites
* **Unzip**: For extracting releases
* **Docker**: (Optional) For container management
* **7-Zip**: (Optional) For advanced archiving features

**Note**: Node.js is **NOT** required when using pre-built releases, as they include all dependencies.

### Installation

#### Option 1: Install from Release (Recommended) ⚡
*Fastest deployment. No build tools required.*

**For Linux x64:**
```bash
# 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 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 panel
```

**For Linux ARM64:**
```bash
# 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:**
```powershell
# Download release-win-x64.zip from:
# https://github.com/Steve3184/panel/releases/download/latest/release-win-x64.zip
# Extract and run: node src/server.js
```

#### Option 2: Build from Source đŸ› ī¸
*For developers or custom builds.*

Click to expand build instructions

1. **Install Node.js 22:**
```bash
curl -sL https://deb.nodesource.com/setup_22.x | bash -
sudo apt install -y nodejs
```

2. **Clone Repository:**
```bash
sudo git clone https://github.com/Steve3184/panel.git /opt/panel
cd /opt/panel
```

3. **Install Dependencies & Build:**
```bash
npm install
cd frontend && npm install
npm run build
cd ..
```

4. **Configure Service:**
```bash
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
```

### Initial Setup
Access the panel at `http://localhost:3000`.
If no admin exists, you will be redirected to `/setup` to create the first account.

---

## âš™ī¸ Configuration

### Environment Variables
You can configure the panel via environment variables or by modifying `src/server.js`.

| Variable | Description | Default |
| :--- | :--- | :--- |
| `SESSION_SECRET` | Key used to sign the session ID cookie. **Change this in production.** | |
| `PORT` | The port the server listens on. | `3000` |
| `PANEL_LANG` | Server-side language (e.g., `jp`, `en`, `zh_CN`). | `en` |

**Setting variables in `panel.service`:**
Edit `/etc/systemd/system/panel.service` and add `Environment` lines under `[Service]`:

```ini
[Service]
Environment="SESSION_SECRET=MySuperSecretKey123"
Environment="PORT=8080"
ExecStart=/usr/bin/node src/server.js
```
*Remember to run `sudo systemctl daemon-reload && sudo systemctl restart panel` after changes.*

### 🌍 Remote Access (Gradio Tunnel)
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.

1. Go to **Panel Settings** in the panel.
2. Enable **Gradio Tunnel**.
3. **Crucial**: Set a `Share Token`. This ensures your public URL remains constant. Without it, a random URL is generated on every restart.
4. Wait a moment, then refresh the Settings page to see your public link.

### 🎨 UI Customization
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.

---

## 📸 Screenshots

| Login Page | Instance Terminal | Panel Settings |
| :---: | :---: | :---: |
| Login Page | Terminal | Panel Settings |

| Docker Instance Settings | Compress Files |
| :---: | :---: |
| Docker Instance Settings | Compress Files |

---

## 🤝 Contributing

Contributions make the open-source community an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

## 📄 License

Distributed under the MIT License. See `LICENSE` for more information.

## âš ī¸ Disclaimer

**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.