Fix TypeScript and ESLint errors (#31)
- Add proper type annotations for WebSocketMessage and ServerInfo types - Fix type imports to use type-only imports where appropriate - Replace logical OR operators with nullish coalescing operators - Fix floating promises by adding void operator - Add proper type assertions for database results - Fix useEffect dependencies in Terminal component - Remove unused variables and fix unescaped entities - Add JSDoc type annotations for database methods - Fix singleton instance type annotations
This commit is contained in:
committed by
GitHub
parent
2f1df95d90
commit
433d8121e8
265
README.md
265
README.md
@@ -2,6 +2,16 @@
|
||||
|
||||
A modern web-based management interface for Proxmox VE (PVE) helper scripts. This tool provides a user-friendly way to discover, download, and execute community-sourced Proxmox scripts locally with real-time terminal output streaming.
|
||||
|
||||
## 🎯 Deployment Options
|
||||
|
||||
This application can be deployed in multiple ways to suit different environments:
|
||||
|
||||
- **🐧 Proxmox Host**: Run directly on your Proxmox VE host system
|
||||
- **📦 Debian LXC Container**: Deploy inside a Debian LXC container for better isolation
|
||||
- **⚡ Quick Install**: Use the automated `install.sh` script for easy setup
|
||||
|
||||
All deployment methods provide the same functionality and web interface.
|
||||
|
||||
## 🌟 Features
|
||||
|
||||
- **Web-based Interface**: Modern React/Next.js frontend with real-time terminal emulation
|
||||
@@ -33,108 +43,278 @@ A modern web-based management interface for Proxmox VE (PVE) helper scripts. Thi
|
||||
- **Container Scripts**: Pre-configured LXC container setups
|
||||
- **Installation Scripts**: System setup and configuration tools
|
||||
|
||||
### Database
|
||||
- **SQLite Database**: Local database stored at `data/settings.db`
|
||||
- **Server Management**: Stores Proxmox server configurations and credentials
|
||||
- **Automatic Setup**: Database and tables are created automatically on first run
|
||||
- **Data Persistence**: Settings persist across application restarts
|
||||
|
||||
## 📋 Prerequisites
|
||||
|
||||
### For All Deployment Methods
|
||||
- **Node.js** 22+ and npm
|
||||
- **Git** for cloning the repository
|
||||
- **Proxmox VE environment**
|
||||
- **build-essentials** ```apt install build-essential```
|
||||
- **Proxmox VE environment** (host or access to Proxmox cluster)
|
||||
- **SQLite** (included with Node.js better-sqlite3 package)
|
||||
|
||||
### For Proxmox Host Installation
|
||||
- **build-essentials**: `apt install build-essential`
|
||||
- Direct access to Proxmox host system
|
||||
|
||||
### For Debian LXC Container Installation
|
||||
- **Debian LXC container** (Debian 11+ recommended)
|
||||
- **build-essentials**: `apt install build-essential`
|
||||
- Container with sufficient resources (2GB RAM, 4GB storage minimum)
|
||||
- Network access from container to Proxmox host
|
||||
- Optional: Privileged container for full Proxmox integration
|
||||
|
||||
### For Quick Install (install.sh)
|
||||
- **Proxmox VE host** (script automatically detects and configures)
|
||||
- Internet connectivity for downloading dependencies
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
You can either install automatically via the provided installer script or do a manual setup.
|
||||
Choose the installation method that best fits your environment:
|
||||
|
||||
### Option 1: Install via Bash (Recommended)
|
||||
### Option 1: Quick Install with install.sh (Recommended for Proxmox Host)
|
||||
|
||||
Run this command directly on your Proxmox VE host:
|
||||
Run this command directly on your Proxmox VE host or on any Debian based lxc:
|
||||
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/michelroegl-brunner/PVESciptslocal/main/install.sh)"
|
||||
```
|
||||
|
||||
## The script will:
|
||||
- Verify that you are running on Proxmox VE
|
||||
- Check and install git and Node.js 24.x if missing
|
||||
- Clone the repository into /opt/PVESciptslocal (or your chosen path)
|
||||
- Run npm install and build the project
|
||||
- Set up .env from .env.example if missing
|
||||
- Create a systemd service (pvescriptslocal.service) for easy start/stop management
|
||||
**What the script does:**
|
||||
- ✅ Installs required dependencies (build-essential, git, Node.js 24.x)
|
||||
- ✅ Clones the repository into `/opt/PVESciptslocal` (or your chosen path)
|
||||
- ✅ Runs npm install and builds the project
|
||||
- ✅ Sets up `.env` from `.env.example` if missing
|
||||
- ✅ Creates database directory (`data/`) for SQLite storage
|
||||
- ✅ Creates a systemd service (`pvescriptslocal.service`) for easy management
|
||||
|
||||
After installation, the app will be accessible at:
|
||||
👉 http://<YOUR_PVE_IP>:3000
|
||||
**After installation:**
|
||||
- 🌐 Access the app at: `http://<YOUR_PVE_OR_LXC_IP>:3000`
|
||||
- 🔧 Manage the service with:
|
||||
```bash
|
||||
systemctl start pvescriptslocal
|
||||
systemctl stop pvescriptslocal
|
||||
systemctl status pvescriptslocal
|
||||
```
|
||||
|
||||
### Option 2: Debian LXC Container Installation
|
||||
|
||||
For better isolation and security, you can run PVE Scripts Local inside a Debian LXC container:
|
||||
|
||||
#### Step 1: Create Debian LXC Container
|
||||
|
||||
You can manage the service with:
|
||||
```bash
|
||||
systemctl start pvescriptslocal
|
||||
systemctl stop pvescriptslocal
|
||||
systemctl status pvescriptslocal
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/debian.sh)"
|
||||
```
|
||||
Then run the installer:
|
||||
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/michelroegl-brunner/PVESciptslocal/main/install.sh)"
|
||||
```
|
||||
|
||||
#### Step 2: Install Dependencies in Container when installer is not used
|
||||
```bash
|
||||
# Enter the container
|
||||
pct enter 100
|
||||
|
||||
### Option 2: Manual Installation
|
||||
# Update and install dependencies
|
||||
apt update && apt install -y build-essential git curl
|
||||
|
||||
### 1. Clone the Repository
|
||||
# Install Node.js 24.x
|
||||
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
|
||||
apt install -y nodejs
|
||||
```
|
||||
|
||||
#### Step 3: Clone and Setup Application
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/michelroegl-brunner/PVESciptslocal.git /opt/PVESciptslocal
|
||||
cd /opt/PVESciptslocal
|
||||
|
||||
# Install dependencies and build
|
||||
npm install
|
||||
npm run build
|
||||
|
||||
# Setup environment
|
||||
cp .env.example .env
|
||||
|
||||
# Create database directory
|
||||
mkdir -p data
|
||||
chmod 755 data
|
||||
```
|
||||
|
||||
#### Step 4: Start the Application
|
||||
```bash
|
||||
# Start in production mode
|
||||
npm start
|
||||
|
||||
# Or create a systemd service (optional)
|
||||
# Follow the same systemd setup as the install.sh script
|
||||
```
|
||||
|
||||
**Access the application:**
|
||||
- 🌐 Container IP: `http://<CONTAINER_IP>:3000`
|
||||
- 🔧 Container management: `pct start 100`, `pct stop 100`, `pct status 100`
|
||||
|
||||
### Option 3: Manual Installation (Proxmox Host)
|
||||
|
||||
#### Step 1: Clone the Repository
|
||||
```bash
|
||||
git clone https://github.com/michelroegl-brunner/PVESciptslocal.git
|
||||
cd PVESciptslocal
|
||||
```
|
||||
|
||||
### 2. Install Dependencies
|
||||
|
||||
#### Step 2: Install Dependencies
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 3. Environment Configuration
|
||||
|
||||
Copy the example environment file and configure your settings:
|
||||
|
||||
#### Step 3: Environment Configuration
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Edit .env file with your specific settings if needed
|
||||
```
|
||||
|
||||
### 4. Start the Application
|
||||
|
||||
#### Production Mode
|
||||
#### Step 4: Database Setup
|
||||
```bash
|
||||
# Create database directory
|
||||
mkdir -p data
|
||||
chmod 755 data
|
||||
```
|
||||
|
||||
#### Step 5: Build and Start
|
||||
```bash
|
||||
# Production mode
|
||||
npm run build
|
||||
npm start
|
||||
|
||||
# Development mode
|
||||
npm run dev:server
|
||||
```
|
||||
|
||||
The application will be available at `http://IP:3000`
|
||||
**Access the application:**
|
||||
- 🌐 Available at: `http://<YOUR_IP>:3000`
|
||||
|
||||
## 📝 LXC Container Specific Notes
|
||||
|
||||
### Container Requirements
|
||||
- **OS**: Debian 11+ (Debian 12 recommended)
|
||||
- **Resources**: Minimum 2GB RAM, 4GB storage
|
||||
- **Network**: Bridge connection to Proxmox network
|
||||
- **Privileges**: Unprivileged containers work, but privileged containers provide better Proxmox integration
|
||||
|
||||
### Container Configuration Tips
|
||||
- **Privileged Container**: Use `--unprivileged 0` for full Proxmox API access
|
||||
- **Resource Allocation**: Allocate at least 2 CPU cores and 2GB RAM for optimal performance
|
||||
- **Storage**: Use at least 8GB for the container to accommodate Node.js and dependencies
|
||||
- **Network**: Ensure the container can reach the Proxmox host API
|
||||
|
||||
### Security Considerations
|
||||
- **Unprivileged Containers**: More secure but may have limited Proxmox functionality
|
||||
- **Privileged Containers**: Full Proxmox access but less secure isolation
|
||||
- **Network Access**: Ensure proper firewall rules for the container
|
||||
|
||||
### Troubleshooting LXC Installation
|
||||
- **Permission Issues**: Ensure the container has proper permissions for Proxmox API access
|
||||
- **Network Connectivity**: Verify the container can reach the Proxmox host
|
||||
- **Resource Limits**: Check if the container has sufficient resources allocated
|
||||
|
||||
## 🎯 Usage
|
||||
|
||||
### 1. Access the Web Interface
|
||||
|
||||
Open your browser and navigate to `http://IP:3000` (or your configured host/port).
|
||||
The web interface is accessible regardless of your deployment method:
|
||||
|
||||
### 2. Browse Available Scripts
|
||||
- **Proxmox Host Installation**: `http://<PROXMOX_HOST_IP>:3000`
|
||||
- **LXC Container Installation**: `http://<CONTAINER_IP>:3000`
|
||||
- **Custom Installation**: `http://<YOUR_IP>:3000`
|
||||
|
||||
### 2. Service Management
|
||||
|
||||
#### For install.sh installations (systemd service):
|
||||
```bash
|
||||
# Start the service
|
||||
systemctl start pvescriptslocal
|
||||
|
||||
# Stop the service
|
||||
systemctl stop pvescriptslocal
|
||||
|
||||
# Check service status
|
||||
systemctl status pvescriptslocal
|
||||
|
||||
# Enable auto-start on boot
|
||||
systemctl enable pvescriptslocal
|
||||
|
||||
# View service logs
|
||||
journalctl -u pvescriptslocal -f
|
||||
```
|
||||
|
||||
#### For LXC container installations:
|
||||
```bash
|
||||
# Container management
|
||||
pct start <container_id> # Start container
|
||||
pct stop <container_id> # Stop container
|
||||
pct status <container_id> # Check container status
|
||||
|
||||
# Access container shell
|
||||
pct enter <container_id>
|
||||
|
||||
# Inside container - start application
|
||||
cd /opt/PVESciptslocal
|
||||
npm start
|
||||
```
|
||||
|
||||
#### For manual installations:
|
||||
```bash
|
||||
# Start application
|
||||
npm start
|
||||
|
||||
# Development mode
|
||||
npm run dev:server
|
||||
|
||||
# Build for production
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 3. Browse Available Scripts
|
||||
|
||||
- The main page displays a grid of available Proxmox scripts
|
||||
- Use the search functionality to find specific scripts
|
||||
- Scripts are categorized by type (containers, installations, etc.)
|
||||
|
||||
### 3. Download Scripts
|
||||
### 4. Download Scripts
|
||||
|
||||
- Click on any script card to view details
|
||||
- Use the "Download" button to fetch scripts from GitHub
|
||||
- Downloaded scripts are stored locally in the `scripts/` directory
|
||||
|
||||
### 4. Execute Scripts
|
||||
### 5. Execute Scripts
|
||||
|
||||
- Click "Run Script" on any downloaded script
|
||||
- A terminal window will open with real-time output
|
||||
- Interact with the script through the web terminal
|
||||
- Use the close button to stop execution
|
||||
|
||||
### 5. Script Management
|
||||
### 6. Script Management
|
||||
|
||||
- View script execution history
|
||||
- Update scripts to latest versions
|
||||
- Manage local script collections
|
||||
|
||||
### 7. Database Management
|
||||
|
||||
The application uses SQLite for storing server configurations:
|
||||
|
||||
- **Database Location**: `data/settings.db`
|
||||
- **Automatic Creation**: Database and tables are created on first run
|
||||
- **Server Storage**: Proxmox server credentials and configurations
|
||||
- **Backup**: Copy `data/settings.db` to backup your server configurations
|
||||
- **Reset**: Delete `data/settings.db` to reset all server configurations
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
```
|
||||
@@ -151,7 +331,10 @@ PVESciptslocal/
|
||||
│ │ ├── _components/ # React components
|
||||
│ │ └── page.tsx # Main page
|
||||
│ └── server/ # Server-side code
|
||||
│ ├── database.js # SQLite database service
|
||||
│ └── services/ # Business logic services
|
||||
├── data/ # Database storage
|
||||
│ └── settings.db # SQLite database file
|
||||
├── public/ # Static assets
|
||||
├── server.js # Main server file
|
||||
└── package.json # Dependencies and scripts
|
||||
@@ -201,6 +384,18 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
||||
- Server logs: Check console output or `server.log`
|
||||
- Script execution: View in web terminal
|
||||
|
||||
## 🎯 Quick Start Summary
|
||||
|
||||
Choose your preferred deployment method:
|
||||
|
||||
| Method | Best For | Command |
|
||||
|--------|----------|---------|
|
||||
| **Quick Install** | Proxmox hosts or Debian LXC, easy setup | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/michelroegl-brunner/PVESciptslocal/main/install.sh)"` |
|
||||
| **LXC Container** | Better isolation, security | Create Debian LXC → Install dependencies → Clone repo → `npm start` |
|
||||
| **Manual Install** | Custom setups, development | `git clone` → `npm install` → `npm run build` → `npm start` |
|
||||
|
||||
All methods provide the same web interface at `http://<IP>:3000` with full Proxmox script management capabilities.
|
||||
|
||||
---
|
||||
|
||||
**Note**: This is alpha software. Use with caution in production environments and always backup your Proxmox configuration before running scripts.
|
||||
|
||||
Reference in New Issue
Block a user