A cross-platform desktop application for creating, configuring, and managing Minecraft servers on your local machine. Perfect for playing with friends over LAN or internet.
- Create multiple Minecraft server instances
- Download official Minecraft server versions
- Start, stop, and restart servers with one click
- Real-time server status monitoring
- Delete unwanted servers
- Live server console output streaming
- Send commands directly to server
- Real-time resource monitoring (CPU, RAM usage)
- Player count display
- Server uptime tracking
- Automatic detection of local IP addresses
- Public IP detection
- VPN interface detection (Hamachi, ZeroTier, Radmin)
- Display all connection methods (LAN, Internet, VPN)
- Port availability checking
- Connection testing functionality
- One-click copy-to-clipboard for server addresses
- Easy-to-use server.properties editor
- Configure game mode, difficulty, max players
- Set PvP, view distance, and world settings
- Java memory allocation (Xms/Xmx) settings
- No need to edit text files manually
- Built-in port forwarding guides
- Step-by-step Hamachi VPN setup
- ZeroTier VPN configuration
- Windows Firewall setup instructions
- Comprehensive troubleshooting guide
- Frontend: Electron + React + TypeScript
- UI Framework: Tailwind CSS
- Backend: Node.js (Electron main process)
- Database: SQLite
- Build Tool: Webpack
- Node.js: v18 or higher
- Java: Version 17 or higher (required to run Minecraft servers)
- Operating System: Windows, macOS, or Linux
- npm: Comes with Node.js (or use yarn/pnpm)
Download Java 17+ from Adoptium.net
Follow these steps to set up the project for local development:
-
Clone the repository git clone cd minecraft-server-manager 2. Install dependencies npm install This will install all project dependencies including Electron, React, and build tools.
-
Build the main process npm run build:main This compiles the Electron main process TypeScript code.
-
Start the development server npm run dev This will:
- Start the webpack dev server for the React frontend (on port 8080)
- Build and launch Electron in development mode
- Enable hot module replacement for faster development
-
Development workflow
- The renderer process (React UI) runs on
http://localhost:8080with hot reload - The main process requires rebuilding when changed:
npm run build:main - For faster iteration, you can run
npm run build:mainin a separate terminal whilenpm run devis running
- The renderer process (React UI) runs on
Note: Make sure Java 17+ is installed and accessible in your PATH, as it's required for running Minecraft servers.
Follow these steps to create a production-ready distributable application:
-
Ensure prerequisites are met
- Node.js v18+ installed
- All dependencies installed (
npm install) - Java 17+ installed (for end users to run servers)
-
Build the application
npm run build This builds both the main process and renderer process for production:
- Compiles TypeScript to JavaScript
- Optimizes and bundles the React frontend
- Outputs to the
dist/directory
-
Package the application
npm run package This uses electron-builder to create platform-specific distributables:
- macOS: Creates
.dmgand.zipfiles inrelease/mac-arm64/orrelease/mac/ - Windows: Creates
.exeinstaller and portable version inrelease/win-unpacked/ - Linux: Creates
.AppImageand.debpackages inrelease/linux-unpacked/
- macOS: Creates
-
Test the production buildsh npm start This runs the built application from the
dist/directory to verify everything works correctly before packaging. -
Distribution files
- Built files are located in the
release/directory - Each platform has its own subdirectory with the packaged application
- The
.dmg(macOS),.exe(Windows), or.AppImage(Linux) files can be distributed to users
- Built files are located in the
Platform-specific notes:
- macOS: May require code signing for distribution outside the App Store
- Windows: NSIS installer requires additional configuration for custom installers
- Linux: AppImage is portable and doesn't require installation
minecraft-server-manager/
├── src/
│ ├── main/ # Electron main process
│ │ ├── index.ts # Main entry point
│ │ ├── preload.ts # Preload script
│ │ ├── ipc/ # IPC handlers
│ │ │ └── handlers.ts
│ │ ├── services/
│ │ │ ├── ServerManager.ts # Server lifecycle
│ │ │ ├── NetworkManager.ts # IP & network detection
│ │ │ ├── ConfigManager.ts # server.properties
│ │ │ ├── ResourceMonitor.ts # CPU/RAM monitoring
│ │ │ ├── ConnectionTester.ts # Port testing
│ │ │ └── FirewallManager.ts # Firewall helpers
│ │ └── utils/
│ │ └── database.ts # SQLite database
│ │
│ ├── renderer/ # React frontend
│ │ ├── App.tsx
│ │ ├── index.tsx
│ │ ├── components/
│ │ │ ├── ServerCard.tsx
│ │ │ ├── ServerList.tsx
│ │ │ ├── CreateServerWizard.tsx
│ │ │ ├── ServerConsole.tsx
│ │ │ ├── ConnectionInfo.tsx
│ │ │ ├── ServerConfig.tsx
│ │ │ └── SetupGuides.tsx
│ │ ├── pages/
│ │ │ ├── Dashboard.tsx
│ │ │ ├── ServerDetail.tsx
│ │ │ └── Settings.tsx
│ │ └── styles/
│ │ └── globals.css
│ │
│ └── shared/
│ ├── types.ts # TypeScript interfaces
│ └── constants.ts
│
├── servers/ # Server instances storage
├── database/ # SQLite database
├── webpack.main.config.js
├── webpack.renderer.config.js
├── tailwind.config.js
├── tsconfig.json
└── package.json
- Launch the application
- Click "Create New Server" on the dashboard
- Follow the 3-step wizard:
- Step 1: Choose server name and Minecraft version
- Step 2: Configure port, max players, difficulty, game mode
- Step 3: Set Java memory allocation (RAM)
- Click "Create Server" to download and set up
- Find your server on the dashboard
- Click "Start" button
- Wait for the server to finish starting (status changes to "Running")
- Click "View Console" to see server output
- Open your server detail page
- Go to "Connection Info" tab
- Share the appropriate address with players:
- LAN: Local network address (same WiFi)
- Internet: Public IP (requires port forwarding)
- VPN: Hamachi or ZeroTier address (easiest for internet play)
- Check the "Setup Guides" tab for detailed instructions
- Go to "Setup Guides" tab
- Follow the "Port Forwarding" guide
- Forward your server's port (default: 25565)
- Share your public IP:port with friends
Hamachi (Up to 5 players free):
- Download Hamachi from vpn.net
- Create a network
- Friends join your network
- Share your Hamachi IP
ZeroTier (Up to 25 devices free):
- Create account at my.zerotier.com
- Create a network
- Friends install ZeroTier and join
- Authorize devices on website
- Share your ZeroTier IP
Edit via the Configuration tab:
- Game mode (Survival, Creative, Adventure, Spectator)
- Difficulty (Peaceful, Easy, Normal, Hard)
- Max players
- View distance
- PvP enabled/disabled
- World settings (seed, type, structures)
Allocate more RAM for better performance:
- Xms: Minimum RAM (starting allocation)
- Xmx: Maximum RAM (can grow to this amount)
Recommended:
- 1-5 players: 2GB
- 5-10 players: 4GB
- 10+ players: 8GB+
- Verify server is running (check Console tab)
- Ensure correct IP and port
- Check firewall settings
- Try localhost:25565 from host computer first
- Increase allocated RAM
- Check Console for error messages
- Verify Java 17+ is installed
- Reduce view distance
- Allocate more RAM
- Reduce view distance
- Lower max players
- Check CPU usage in server stats
- Stop other applications using the port
- Change server port in Configuration
- Check if another server is already running
- Opening ports to the internet exposes your network
- Use VPN services (Hamachi/ZeroTier) when possible
- Enable whitelist in Configuration for trusted players only
- Keep your server software updated
- Don't share your public IP unnecessarily
npm run dev- Start development modenpm run build:main- Build Electron main processnpm run build:renderer- Build React frontendnpm run build- Build everythingnpm run package- Create distributable packagenpm start- Start built application
The application uses a layered architecture:
- Services Layer (
src/main/services/): Business logic - IPC Layer (
src/main/ipc/): Communication between processes - UI Layer (
src/renderer/): React components
To add a new feature:
- Create or modify service in
src/main/services/ - Add IPC handler in
src/main/ipc/handlers.ts - Add frontend hook in
src/main/preload.ts - Use in React components via
window.electronAPI
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details
- Minecraft is a trademark of Mojang Studios
- This is an unofficial tool not affiliated with Mojang or Microsoft
- Server jar files are downloaded from official Mojang sources
For issues, questions, or suggestions, please open an issue on GitHub.
Future features to consider:
- Plugin/mod management
- Automatic backups
- Scheduled restarts
- Multiple Java version support
- Built-in server performance optimization
- Whitelist/operator management UI
- World management (backup, restore, delete)
- Server templates/presets
Happy server hosting! 🎮