Files
mc/README.md
2025-10-13 13:53:48 -05:00

219 lines
5.2 KiB
Markdown

# 🎮 Minecraft Server Dashboard
A beautiful, modern web dashboard to monitor and control your Minecraft server with real-time statistics and server management.
![Minecraft Dashboard](https://img.shields.io/badge/Minecraft-Dashboard-brightgreen)
## ✨ Features
- 🎯 **Real-time Server Monitoring**
- Player count and online players list
- Server version and status
- Latency monitoring
- TPS (Ticks Per Second) tracking
- 🎮 **Server Control**
- Start server with one click
- Stop server gracefully (with confirmation)
- Automatic status refresh every 5 seconds
- 🎨 **Beautiful UI**
- Modern gradient design
- Minecraft-themed color palette
- Responsive layout for all devices
- Smooth animations and transitions
- Real-time status indicators
## 🏗️ Architecture
### Backend
- **Node.js + Express** - RESTful API server
- **RCON Integration** - Direct communication with Minecraft server
- **Docker API** - Container management for start/stop functionality
- **minecraft-server-util** - Server status queries
### Frontend
- **React 18** - Modern UI framework
- **Vite** - Lightning-fast build tool
- **Tailwind CSS** - Utility-first styling
- **Lucide React** - Beautiful icons
- **Axios** - HTTP client
## 🚀 Quick Start
### Prerequisites
- Docker and Docker Compose installed
- Existing Minecraft server running on `mcnet` network
### Installation
1. **Clone or navigate to the project directory**
```bash
cd mc
```
2. **Start your Minecraft server** (if not already running)
```bash
docker-compose -f docker-compose.minecraft.yml up -d
```
3. **Build and start the dashboard**
```bash
docker-compose -f docker-compose.dashboard.yml up -d --build
```
4. **Access the dashboard**
- Open your browser to: `http://localhost:8080`
### Development Mode
For local development without Docker:
**Backend:**
```bash
cd backend
npm install
npm run dev
```
**Frontend:**
```bash
cd frontend
npm install
npm run dev
```
## 📁 Project Structure
```
mc/
├── backend/
│ ├── src/
│ │ └── index.js # Express API server
│ ├── Dockerfile
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Main React component
│ │ ├── main.jsx
│ │ ├── index.css
│ │ └── App.css
│ ├── public/
│ ├── index.html
│ ├── Dockerfile
│ ├── nginx.conf
│ ├── vite.config.js
│ └── package.json
├── docker-compose.dashboard.yml
└── README.md
```
## 🔧 Configuration
### Environment Variables
Create a `.env` file based on `.env.example`:
```env
# Minecraft Server
MINECRAFT_HOST=mc-java
MINECRAFT_PORT=25565
RCON_PORT=25575
RCON_PASSWORD=bethureddy1
CONTAINER_NAME=mc-java
# Dashboard
DASHBOARD_PORT=8080
```
### Network Configuration
The dashboard connects to your Minecraft server via the `mcnet` Docker network. Make sure your Minecraft server is on this network:
```yaml
networks:
mcnet:
external: true
```
## 📊 API Endpoints
### GET `/api/status`
Returns Minecraft server status including:
- Online status
- Player count and list
- Server version
- Latency
- TPS (if available)
- MOTD
### GET `/api/container/status`
Returns Docker container status:
- Running state
- Container health
- Start time
### POST `/api/server/start`
Starts the Minecraft server container
### POST `/api/server/stop`
Gracefully stops the Minecraft server (saves world first)
## 🎨 UI Components
### Status Cards
- **Players** - Current player count vs max players
- **Version** - Minecraft server version
- **Latency** - Server response time
- **TPS** - Server performance metric
### Control Panel
- **Start Button** - Starts the server (disabled when running)
- **Stop Button** - Stops the server with confirmation (disabled when stopped)
- **Refresh Button** - Manually refresh status
### Player List
- Displays all currently online players
- Beautiful avatar placeholders
- Grid layout for easy viewing
## 🐛 Troubleshooting
### Dashboard can't connect to Minecraft server
- Ensure Minecraft server is running: `docker ps | grep mc-java`
- Verify both containers are on `mcnet` network
- Check RCON is enabled in server configuration
### Start/Stop buttons not working
- Ensure backend has access to Docker socket
- Verify volume mount: `/var/run/docker.sock:/var/run/docker.sock`
- Check container name matches: `CONTAINER_NAME=mc-java`
### RCON connection failed
- Verify RCON password matches Minecraft server
- Check RCON port (default: 25575)
- Ensure RCON is enabled in server.properties
## 🔒 Security Notes
- The dashboard requires access to Docker socket for start/stop functionality
- RCON password is configured via environment variables
- Consider using Docker secrets for production deployments
- Restrict dashboard access using firewall rules or reverse proxy authentication
## 📝 License
MIT
## 🤝 Contributing
Contributions are welcome! Feel free to submit issues and pull requests.
## 💖 Acknowledgments
- Built with React and Node.js
- Minecraft server status via minecraft-server-util
- RCON implementation using modern-rcon
- Icons by Lucide React