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+
- npm or yarn
- Clone the repository
git clone https://github.com/SAOFR-DEV/CloudNetPanel.git
cd CloudNetPanel- Install dependencies
npm run install-deps- Make your configuration
- Make steps inside QuickConfiguration
- Start servers
npm run devThis will start:
- Backend API server on
http://localhost:5000 - Frontend development server on
http://localhost:3000
- Username:
admin - Password:
password
The application will serve the built frontend and API from port 5000.
The panel supports integration with CloudNet REST API for real-time server 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
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.
Developement:
Traduction:
Built with ❤️ for the CloudNet community