A modern, scalable hosting management platform built with Next.js, Prisma, and PostgreSQL. Manage game servers (Minecraft, Rust, Hytale), VPS nodes, and billing all from a unified admin dashboard.
- Pterodactyl Panel support for game servers (Minecraft, Rust, Hytale, etc.)
- Virtfusion Panel support for VPS management
- Multi-panel architecture - manage multiple panels from single dashboard
- Real-time server status monitoring across all panels
- Automatic panel API integration and connection testing
- Resource allocation and limits management
- User Management: Complete user CRUD with status tracking
- Server Management: Browse, filter, and manage all hosted servers
- Node Management: Monitor and configure hosting nodes
- Sync Operations: Real-time sync logs with terminal-style output
- Settings Management: System configuration with connection testing
- Panel Configuration: Built-in setup wizard for connecting multiple game panels
Automatic Discord webhook notifications for:
- System Events - Settings changes, sync operations, maintenance mode
- Server Events - Server online/offline/crashed status changes
- Resource Alerts - Node CPU, memory, disk, and network monitoring
- Support Tickets - Support ticket creation, updates, and resolution
- Billing Events - Invoices, payments, and subscription changes
- Security Alerts - Critical errors and system alerts
- Custom Events - Extensible system for custom notifications
See Webhook Dispatcher Documentation for complete details.
- Multi-language support (30+ languages)
- Translation management via Crowdin
- Language and currency selectors
- Region-specific pricing
- Markdown-based documentation system
- Full-text search across articles
- Category organization
- Table of contents with scroll spy
- Syntax highlighting for code blocks
- NextAuth v5 with email/password authentication
- Session management
- Admin-only access control
- Environment variable and database credential storage
- Token immutability and protection
- Panel authentication via secure credential storage
- Multi-currency support (GBP, USD, EUR, CAD, AUD)
- Pricing configuration
- Invoice management (WHMCS integration)
- Subscription tracking
- Node.js 18+ or Bun
- PostgreSQL 14+
- Discord Server (for webhooks, optional)
- Pterodactyl Game Panel (for game server hosting)
-
Clone the repository
git clone https://github.com/NodeByteHosting/website.git cd website -
Install dependencies
npm install # or bun install -
Set up environment variables
cp .env.example .env.local
Configure:
DATABASE_URL- PostgreSQL connection stringNEXTAUTH_SECRET- Session secret (generate withopenssl rand -base64 32)GAMEPANEL_URL- Pterodactyl panel URLGAMEPANEL_API_KEY- Pterodactyl API key
-
Run database migrations
npx prisma migrate dev
-
Seed database (optional)
npx prisma db seed
-
Start development server
npm run dev # or bun devOpen http://localhost:3000 in your browser.
NodeByte supports multiple hosting control panels, allowing you to manage different types of infrastructure from a single dashboard.
- Purpose: Game server management (Minecraft, Rust, Hytale, etc.)
- Authentication: API-based via token
- Setup:
- Go to your Pterodactyl panel (
Admin → Locationsis a good starting point) - Create a new API token:
Admin → API Credentials → Create New - Ensure the token has permission to access applications endpoints
- Copy the token (format:
ptlc_xxxxxxxxxxxxx) - In NodeByte setup wizard, enter:
- Panel URL:
https://your-panel.example.com - API Key: Your API token from Pterodactyl
- API Endpoint: Usually
/api/application(default)
- Panel URL:
- Go to your Pterodactyl panel (
- Purpose: VPS and virtual machine management
- Authentication: API key-based
- Setup:
- Log into your Virtfusion control panel
- Generate an API key:
Settings → API → Create New Token - Copy the API key
- In NodeByte setup wizard, enter:
- Panel URL:
https://your-virtfusion.example.com - API Key: Your Virtfusion API key
- API Endpoint: Your Virtfusion API path (if custom)
- Panel URL:
NodeByte allows you to configure multiple panels simultaneously:
- Game Servers: Connect your Pterodactyl panel(s) to manage game servers
- VPS/Infrastructure: Connect Virtfusion for VPS provisioning
- User Verification: The system checks multiple panels during user registration to verify eligibility
- Unified Dashboard: Monitor and manage resources across all connected panels
The platform includes an interactive setup wizard that guides you through panel configuration:
- Visit Setup Page: On first boot, you'll be redirected to
/setup - Configure Site Information:
- Site Name
- Site URL
- Favicon (optional)
- Database URL (optional)
- Add Game Panels:
- Click the "Pterodactyl" tab
- Enter panel credentials
- Click "Test" to verify connectivity
- Save configuration
- Add Infrastructure Panels:
- Click the "Virtfusion" tab
- Enter panel credentials
- Test and save
- Complete Setup: Once site info and at least one panel are configured, click "Complete Setup"
The setup system supports incremental configuration:
- You can configure site information first
- Add panels later as needed
- Test each panel's connection before saving
- Skip optional configuration (database, favicon)
- Complete remaining steps anytime from admin panel
Progress indicators show which components are configured:
- ✓ Site Info (required)
- ✓ Pterodactyl (optional but recommended)
- ✓ Virtfusion (optional but recommended)
Before saving panel credentials, you can test the connection:
- Fill in the panel URL and API key
- Click the "Test" button
- The system will:
- Verify the panel is accessible
- Test API authentication
- Check API permissions
- Display connection status and response time
- Common error messages:
- "Cannot connect to panel server" - Check URL is correct and panel is online
- "Authentication failed" - Check API key is correct
- "Access denied" - API key doesn't have required permissions
- "Connection timeout" - Panel is down or unreachable
The platform automatically syncs data from configured panels:
- Nodes: Server hosting nodes/locations
- Locations: Geographic regions
- Eggs: Server types and configurations
- Servers: Active game server instances
- Users: Panel user accounts for registration verification
Sync frequency is configurable in admin settings (default: every hour).
When users register, the system:
- Checks if user exists on any configured panel
- Retrieves user's role/permissions from the panel
- Validates eligibility based on panel data
- Automatically syncs user information
This ensures users registering on NodeByte match their panel accounts.
To add additional panels after initial setup:
- Go to Admin Panel → Settings
- Click the panel type (Pterodactyl, Virtfusion, etc.)
- Enter credentials
- Test the connection
- Save configuration
- Restart the sync service to pull latest data
Panel Not Connecting?
- Verify the panel URL is correct and accessible
- Check firewall allows outbound connections from NodeByte to the panel
- Ensure API key has "Application" permission
- Check API key isn't expired or revoked
- Test the URL directly in a browser
Missing Data After Sync?
- Verify API key has read permissions for the endpoint
- Check sync service is running
- Review sync logs in admin panel
- Try manual sync from Admin → Sync Operations
API Key Issues?
- Regenerate the API key in the panel admin
- API keys are stored encrypted in the database
- Once saved, they cannot be retrieved (only replaced)
- Always test connections after updating credentials
See the relevant panel's documentation for API details:
-
Open http://localhost:3000 in your browser.
.
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ │ ├── admin/ # Admin-only endpoints
│ │ ├── auth/ # Authentication routes
│ │ ├── panel/ # Panel integration endpoints
│ │ └── stats/ # Statistics endpoints
│ ├── admin/ # Admin dashboard pages
│ ├── auth/ # Authentication pages
│ ├── games/ # Game-specific pages
│ ├── kb/ # Knowledge base pages
│ └── layout.tsx # Root layout
├── packages/ # Shared packages
│ ├── auth/ # Authentication utilities
│ ├── core/ # Core business logic
│ │ ├── constants/ # Application constants
│ │ ├── dispatchers/ # Event dispatchers
│ │ │ ├── notifications.ts # Email/Discord notifications
│ │ │ └── webhooks.ts # Webhook dispatcher
│ │ ├── hooks/ # React hooks
│ │ ├── lib/ # Utilities and helpers
│ │ │ ├── sync.ts # Pterodactyl sync service
│ │ │ ├── pterodactyl.ts # Panel API wrapper
│ │ │ ├── prisma.ts # Database client
│ │ │ └── ...
│ │ └── utils.ts
│ ├── i18n/ # Internationalization
│ ├── kb/ # Knowledge base utilities
│ └── ui/ # Shared UI components
├── prisma/ # Database schema
│ ├── schema.prisma # Prisma schema
│ └── migrations/ # Database migrations
├── public/ # Static assets
├── translations/ # Localization files
│ └── messages/ # Language-specific translations
├── docs/ # Documentation
│ ├── WEBHOOK_DISPATCHER_README.md
│ ├── WEBHOOK_INTEGRATION_GUIDE.md
│ ├── WEBHOOK_NOTIFICATION_COMPLETE.md
│ └── WEBHOOK_QUICK_REFERENCE.ts
└── [config files]
The platform includes a comprehensive webhook notification system for automated Discord notifications.
| Type | Color | Usage |
|---|---|---|
| GAME_SERVER | Purple | Server start/stop/crash events |
| VPS | Blue | Node resource monitoring (CPU, memory, disk) |
| SYSTEM | Yellow | Sync operations, settings changes, maintenance |
| BILLING | Green | Invoices, payments, subscription events |
| SECURITY | Red | Errors, alerts, security incidents |
| SUPPORT | Cyan | Support ticket lifecycle events |
| CUSTOM | Gray | Custom/unclassified events |
✅ System Settings Updates - Automatically sends webhooks when settings are modified ✅ Sync Completion - Notified when sync operations complete or fail
- Go to Admin Panel → Settings → Discord Webhooks
- Click "Add Webhook"
- Enter your Discord webhook URL
- Select webhook type and description
- Click "Test" to verify connectivity
See Webhook Documentation for detailed integration guide.
All admin endpoints require authentication via NextAuth session.
GET /api/admin/settings- Get current system settingsPOST /api/admin/settings- Update settingsPUT /api/admin/settings- Reset API keysPOST /api/admin/settings/webhooks- Create webhookPUT /api/admin/settings/webhooks- Update webhookDELETE /api/admin/settings/webhooks- Delete webhookPATCH /api/admin/settings/webhooks- Test webhook
GET /api/admin/sync/stats- Get sync statisticsPOST /api/admin/sync- Trigger sync operation
GET /api/panel/servers- List all serversGET /api/panel/nodes- List all nodesGET /api/panel/users- List all usersGET /api/panel/stats- Server statistics
See individual endpoint files in app/api/ for detailed request/response schemas.
Settings are stored in the SystemSettings table and can be configured via the admin panel or setup wizard:
{
// Game Panel Connections
pterodactylUrl: string
pterodactylApiKey: string (secret)
pterodactylApi: string
// Infrastructure Panel Connections
virtfusionUrl: string
virtfusionApiKey: string (secret)
virtfusionApi: string
// Integrations
crowdinProjectId: string
crowdinPersonalToken: string (secret)
githubToken: string (secret)
resendApiKey: string (secret)
// Database Configuration
databaseUrl: string (optional - for connection pooling/switching)
// Features
registrationEnabled: boolean
maintenanceMode: boolean
autoSyncEnabled: boolean
// Notifications
emailNotifications: boolean
discordNotifications: boolean
// Webhooks
discordWebhooks: DiscordWebhook[]
// Site Configuration
siteName: string
siteUrl: string
faviconUrl: string (optional)
// Advanced
cacheTimeout: number (seconds)
syncInterval: number (seconds)
isSetupComplete: boolean
}# Database
DATABASE_URL=postgresql://user:password@localhost:5432/nodebyte
# Authentication
NEXTAUTH_SECRET=your-secret-here
NEXTAUTH_URL=http://localhost:3000
# Game Panel (can also be set in database via setup wizard)
GAMEPANEL_URL=https://pterodactyl.example.com
GAMEPANEL_API_KEY=ptlc_xxxxx
# Infrastructure Panel (optional, set in database)
VIRTFUSION_URL=https://virtfusion.example.com
VIRTFUSION_API_KEY=your-api-key
# Crowdin (optional)
CROWDIN_TOKEN=your-crowdin-token
# GitHub (optional)
GITHUB_TOKEN=ghp_xxxxx
# Resend (optional)
RESEND_API_KEY=re_xxxxxNote: After initial setup, panel credentials should be configured through the admin panel or setup wizard rather than environment variables. This allows dynamic switching between different panels without redeploying.
Run migrations with:
npx prisma migrate devKey models:
- User - User accounts with authentication
- SystemSettings - System-wide configuration
- DiscordWebhook - Webhook configurations with type and scope
- Server - Game server instances
- Node - Hosting nodes
- Location - Geographic locations
- Allocation - IP/port allocations
- Nest - Pterodactyl nests (game types)
- SyncLog - Sync operation history
See prisma/schema.prisma for complete schema.
npm run test
# or
bun testnpm run build
npm startnpm run lint
npm run type-checkWe welcome contributions from the community! Please see CONTRIBUTING.md for guidelines on:
- Code style and standards
- Commit message format
- Pull request process
- Development setup
For security vulnerabilities, please see SECURITY.md for responsible disclosure procedures. Do not open public issues for security vulnerabilities.
Key security features:
- Session-based authentication with NextAuth
- Admin-only access control via middleware
- API key masking in UI (shown as
••••••••••••••••••••) - Database credential storage instead of .env files
- Webhook URL validation before storage
- CORS and CSRF protection
This project is licensed under the GNU General Public License v3.0 or later - see LICENSE file for details.
In summary, you are free to:
- ✅ Use commercially
- ✅ Modify and distribute
- ✅ Private use
With the condition:
- 📋 Disclose source
- 📋 Include license and copyright notice
- 📋 Use same license for derivative works
Report bugs and feature requests on GitHub Issues
- ✅ Webhook notification system
- ✅ Settings management with credential storage
- ✅ Multi-language support
- ✅ Knowledge base system
- 🔄 Client panel (user-scoped webhooks)
- 🔄 Enhanced billing system
- 🔄 Advanced analytics
- 🔄 API key management for users
- 🔄 Two-factor authentication
- 🔄 Audit logging
NodeByte Hosting Team
- Website: https://nodebyte.host
- Email: hello@nodebyte.host
Built with:
🟢 Production Ready - v3.2.0
Fully functional hosting platform with webhook notifications, admin dashboard, and game server management.
Last Updated: December 22, 2025