A modern web-based management panel for CloudNet servers, designed with a user-friendly interface similar to Pelican/Pterodactyl panels.
- π Modern Web Interface: Clean, responsive design built with React and Tailwind CSS
- π Authentication System: Secure login with JWT tokens
- π Dashboard: Real-time overview of servers, nodes, and system metrics
- π₯οΈ Server Management: Start, stop, restart servers with real-time status updates
- π Node Management: Monitor node resources (CPU, RAM, [soon: disk usage])
- π₯ User Management: Manage users with different permission levels
- π₯ Group Management: Create and manage user groups with granular permissions
- π Template Management: File browser for server templates with permission-based access
- π¦ Backup System: Manual and scheduled backups of templates with compression
- βοΈ Task Automation: Cron-based task scheduler for automated operations
- π» Real-time Console: Live server logs and command execution via WebSocket
- π Granular Permissions: File/folder and task-level access control by user/group
- π± Mobile Responsive: Works seamlessly on desktop and mobile devices
- π Dark Theme: Beautiful dark mode with automatic system preference detection
- π CloudNet REST API Integration: Connect to real CloudNet instances or use mock data for testing
- Node.js 18+ (Node.js 20 recommended)
- npm or yarn
- Clone the repository
git clone https://github.com/SAOFR-DEV/CloudNetPanel.git
cd CloudNetPanel- Install dependencies
npm run install-deps- Configuration
- Follow the steps in the SETUP.md guide or the Quick Configuration section below.
- Start the servers
npm run devThis will start:
- The backend API server at
http://localhost:5000 - The frontend development server at
http://localhost:3000
You can run the application using Docker for simplified deployment.
- Copy the environment example file
cp server/.env.example server/.env-
(Optional) Edit variables in
server/.envas needed. -
Start Docker Compose
docker-compose up --build -d- The application will be accessible on port 5000 (modifiable via the
PORTenvironment variable). - Data (database, backups, logs) is persisted in Docker volumes.
- See docker-compose.yml for the full list of configurable environment variables.
- Username:
admin - Password:
password
The application serves the built frontend and API on port 5000 in production.
The panel supports integration with the CloudNet REST API for real-time management. See CLOUDNET_API.md for detailed configuration instructions.
- Go to your CloudNet Console and install CloudNet-Rest module.
- Copy
server/.env.exampletoserver/.env - Set
CLOUDNET_API_ENABLED=trueto enable API integration - Configure
CLOUDNET_API_URLto point to your CloudNet instance - Enter you Rest API identifient in
CLOUDNET_API_USERNAME&CLOUDNET_API_PASSWORD. (You can create them by using the command inside cloudnet consolerest user create [username] [password]and add it admin scoperest user [username] add scope global:admin) - Start the application
- Node.js with Express.js
- JWT for authentication
- SQLite for data storage
- WebSocket support for real-time updates and server console
- Node-cron for task scheduling
- Archiver for backup compression
- Multer for file uploads
- React with TypeScript
- Tailwind CSS for styling
- Vite for build tooling
- Axios for API communication
- Lucide React for icons
- CLOUDNET_API.md β CloudNet API configuration
- SETUP.md β Quick setup guide
POST /api/auth/login- User loginGET /api/auth/me- Get current user infoPOST /api/auth/logout- User logout
GET /api/servers- List all serversGET /api/servers/:id- Get server detailsPOST /api/servers- Create new serverPUT /api/servers/:id- Update serverDELETE /api/servers/:id- Delete serverPOST /api/servers/:id/start- Start serverPOST /api/servers/:id/stop- Stop serverPOST /api/servers/:id/restart- Restart server
GET /api/nodes- List all nodesGET /api/nodes/:id- Get node detailsPOST /api/nodes- Create new nodePUT /api/nodes/:id- Update nodeDELETE /api/nodes/:id- Delete node
GET /api/users- List all users (admin only)GET /api/users/:id- Get user detailsPOST /api/users- Create new user (admin only)PUT /api/users/:id- Update userDELETE /api/users/:id- Delete user (admin only)
GET /api/groups- List all groupsGET /api/groups/:id- Get group details with usersPOST /api/groups- Create new group (admin only)PUT /api/groups/:id- Update group (admin only)DELETE /api/groups/:id- Delete group (admin only)POST /api/groups/:id/users- Add user to group (admin only)DELETE /api/groups/:id/users/:userId- Remove user from group (admin only)
GET /api/templates/files- List files and directoriesGET /api/templates/files/content- Get file contentPUT /api/templates/files/content- Create or update filePOST /api/templates/files/directory- Create directoryDELETE /api/templates/files- Delete file or directory
GET /api/backups- List all backupsGET /api/backups/:id- Get backup detailsPOST /api/backups/manual- Create manual backupPOST /api/backups/schedule- Schedule automatic backupGET /api/backups/:id/download- Download backup fileDELETE /api/backups/:id- Delete backup
GET /api/tasks- List accessible tasksGET /api/tasks/:id- Get task detailsPOST /api/tasks- Create new taskPUT /api/tasks/:id- Update taskPOST /api/tasks/:id/execute- Execute task manuallyDELETE /api/tasks/:id- Delete taskPOST /api/tasks/:id/permissions- Grant task permission (admin only)
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
For support and questions, please open an issue on GitHub.
Development:
Translation:
Built with β€οΈ for the CloudNet community