317 lines
7.8 KiB
Markdown
317 lines
7.8 KiB
Markdown
# 🎮 PufferPanel Game Server Management
|
|
|
|
*Web-based game server management panel for the Seattle VM*
|
|
|
|
## Overview
|
|
PufferPanel provides a comprehensive web interface for managing game servers, including Minecraft, Source engine games, and other popular multiplayer games.
|
|
|
|
## Deployment Information
|
|
|
|
### Host Location
|
|
- **Host**: Seattle VM (`homelab_vm`)
|
|
- **Container**: `pufferpanel-seattle`
|
|
- **Status**: ✅ Active
|
|
- **Access**: `https://games.vish.gg`
|
|
|
|
### Container Configuration
|
|
```yaml
|
|
services:
|
|
pufferpanel:
|
|
image: pufferpanel/pufferpanel:latest
|
|
container_name: pufferpanel-seattle
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=America/New_York
|
|
volumes:
|
|
- pufferpanel-config:/etc/pufferpanel
|
|
- pufferpanel-data:/var/lib/pufferpanel
|
|
- game-servers:/var/lib/pufferpanel/servers
|
|
ports:
|
|
- "8080:8080"
|
|
- "25565:25565" # Minecraft
|
|
- "27015:27015" # Source games
|
|
networks:
|
|
- game-network
|
|
```
|
|
|
|
## Managed Game Servers
|
|
|
|
### Minecraft Servers
|
|
- **Vanilla Minecraft**: Latest release version
|
|
- **Paper Minecraft**: Performance-optimized server
|
|
- **Modded Minecraft**: Forge/Fabric mod support
|
|
- **Bedrock Edition**: Cross-platform compatibility
|
|
|
|
### Source Engine Games
|
|
- **Garry's Mod**: PropHunt and sandbox modes
|
|
- **Left 4 Dead 2**: Co-op survival campaigns
|
|
- **Counter-Strike**: Classic competitive gameplay
|
|
- **Team Fortress 2**: Team-based multiplayer
|
|
|
|
### Other Games
|
|
- **Satisfactory**: Factory building dedicated server
|
|
- **Valheim**: Viking survival multiplayer
|
|
- **Terraria**: 2D adventure and building
|
|
- **Don't Starve Together**: Survival multiplayer
|
|
|
|
## Server Management
|
|
|
|
### Web Interface
|
|
- **URL**: `https://games.vish.gg`
|
|
- **Authentication**: Local user accounts
|
|
- **Features**: Start/stop, console access, file management
|
|
- **Monitoring**: Real-time server status and logs
|
|
|
|
### User Management
|
|
```bash
|
|
# Create admin user
|
|
docker exec pufferpanel-seattle pufferpanel user add --admin admin
|
|
|
|
# Create regular user
|
|
docker exec pufferpanel-seattle pufferpanel user add player
|
|
|
|
# Set user permissions
|
|
docker exec pufferpanel-seattle pufferpanel user perms player server.minecraft.view
|
|
```
|
|
|
|
### Server Templates
|
|
- **Pre-configured**: Common game server templates
|
|
- **Custom templates**: Tailored server configurations
|
|
- **Auto-updates**: Automatic game updates
|
|
- **Backup integration**: Scheduled server backups
|
|
|
|
## Network Configuration
|
|
|
|
### Port Management
|
|
```yaml
|
|
# Port mappings for different games
|
|
ports:
|
|
- "25565:25565" # Minecraft Java
|
|
- "19132:19132/udp" # Minecraft Bedrock
|
|
- "27015:27015" # Source games
|
|
- "7777:7777/udp" # Satisfactory
|
|
- "2456-2458:2456-2458/udp" # Valheim
|
|
```
|
|
|
|
### Firewall Rules
|
|
```bash
|
|
# Allow game server ports
|
|
sudo ufw allow 25565/tcp comment "Minecraft Java"
|
|
sudo ufw allow 19132/udp comment "Minecraft Bedrock"
|
|
sudo ufw allow 27015/tcp comment "Source games"
|
|
sudo ufw allow 7777/udp comment "Satisfactory"
|
|
```
|
|
|
|
## Storage Management
|
|
|
|
### Server Data
|
|
```
|
|
/var/lib/pufferpanel/servers/
|
|
├── minecraft-vanilla/
|
|
│ ├── world/
|
|
│ ├── plugins/
|
|
│ └── server.properties
|
|
├── gmod-prophunt/
|
|
│ ├── garrysmod/
|
|
│ └── srcds_run
|
|
└── satisfactory/
|
|
├── FactoryGame/
|
|
└── Engine/
|
|
```
|
|
|
|
### Backup Strategy
|
|
- **Automated backups**: Daily world/save backups
|
|
- **Retention policy**: 7 daily, 4 weekly, 12 monthly
|
|
- **Storage location**: `/mnt/backups/game-servers/`
|
|
- **Compression**: Gzip compression for space efficiency
|
|
|
|
## Performance Optimization
|
|
|
|
### Resource Allocation
|
|
```yaml
|
|
# Per-server resource limits
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 4G # Minecraft servers
|
|
cpus: '2.0'
|
|
reservations:
|
|
memory: 2G
|
|
cpus: '1.0'
|
|
```
|
|
|
|
### Java Optimization (Minecraft)
|
|
```bash
|
|
# JVM arguments for Minecraft servers
|
|
-Xms2G -Xmx4G
|
|
-XX:+UseG1GC
|
|
-XX:+ParallelRefProcEnabled
|
|
-XX:MaxGCPauseMillis=200
|
|
-XX:+UnlockExperimentalVMOptions
|
|
-XX:+DisableExplicitGC
|
|
-XX:G1NewSizePercent=30
|
|
-XX:G1MaxNewSizePercent=40
|
|
```
|
|
|
|
### Network Optimization
|
|
- **TCP optimization**: Tuned for game traffic
|
|
- **Buffer sizes**: Optimized for low latency
|
|
- **Connection limits**: Prevent resource exhaustion
|
|
- **Rate limiting**: Anti-DDoS protection
|
|
|
|
## Monitoring and Alerts
|
|
|
|
### Server Monitoring
|
|
- **Resource usage**: CPU, memory, disk I/O
|
|
- **Player count**: Active players per server
|
|
- **Performance metrics**: TPS, latency, crashes
|
|
- **Uptime tracking**: Server availability statistics
|
|
|
|
### Alert Configuration
|
|
```yaml
|
|
# Prometheus alerts for game servers
|
|
- alert: GameServerDown
|
|
expr: up{job="pufferpanel"} == 0
|
|
for: 5m
|
|
labels:
|
|
severity: critical
|
|
annotations:
|
|
summary: "Game server {{ $labels.instance }} is down"
|
|
|
|
- alert: HighMemoryUsage
|
|
expr: container_memory_usage_bytes{name="minecraft-server"} / container_spec_memory_limit_bytes > 0.9
|
|
for: 10m
|
|
labels:
|
|
severity: warning
|
|
annotations:
|
|
summary: "High memory usage on {{ $labels.name }}"
|
|
```
|
|
|
|
## Security Configuration
|
|
|
|
### Access Control
|
|
- **User authentication**: Local user database
|
|
- **Role-based permissions**: Admin, moderator, player roles
|
|
- **Server isolation**: Containerized server environments
|
|
- **Network segmentation**: Isolated game network
|
|
|
|
### Security Hardening
|
|
```bash
|
|
# Disable unnecessary services
|
|
systemctl disable --now telnet
|
|
systemctl disable --now rsh
|
|
|
|
# Configure fail2ban for SSH
|
|
sudo fail2ban-client set sshd bantime 3600
|
|
|
|
# Regular security updates
|
|
sudo apt update && sudo apt upgrade -y
|
|
```
|
|
|
|
### Backup Security
|
|
- **Encrypted backups**: AES-256 encryption
|
|
- **Access controls**: Restricted backup access
|
|
- **Integrity checks**: Backup verification
|
|
- **Offsite storage**: Cloud backup copies
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### Server Won't Start
|
|
```bash
|
|
# Check server logs
|
|
docker exec pufferpanel-seattle pufferpanel logs minecraft-server
|
|
|
|
# Verify port availability
|
|
netstat -tulpn | grep :25565
|
|
|
|
# Check resource limits
|
|
docker stats pufferpanel-seattle
|
|
```
|
|
|
|
#### Connection Issues
|
|
```bash
|
|
# Test network connectivity
|
|
telnet games.vish.gg 25565
|
|
|
|
# Check firewall rules
|
|
sudo ufw status numbered
|
|
|
|
# Verify DNS resolution
|
|
nslookup games.vish.gg
|
|
```
|
|
|
|
#### Performance Problems
|
|
```bash
|
|
# Monitor resource usage
|
|
htop
|
|
|
|
# Check disk I/O
|
|
iotop
|
|
|
|
# Analyze network traffic
|
|
nethogs
|
|
```
|
|
|
|
### Log Analysis
|
|
```bash
|
|
# View PufferPanel logs
|
|
docker logs pufferpanel-seattle
|
|
|
|
# View specific server logs
|
|
docker exec pufferpanel-seattle tail -f /var/lib/pufferpanel/servers/minecraft/logs/latest.log
|
|
|
|
# Check system logs
|
|
journalctl -u docker -f
|
|
```
|
|
|
|
## Maintenance Procedures
|
|
|
|
### Regular Maintenance
|
|
- **Weekly**: Server restarts and updates
|
|
- **Monthly**: Backup verification and cleanup
|
|
- **Quarterly**: Security audit and updates
|
|
- **Annually**: Hardware assessment and upgrades
|
|
|
|
### Update Procedures
|
|
```bash
|
|
# Update PufferPanel
|
|
docker pull pufferpanel/pufferpanel:latest
|
|
docker-compose up -d pufferpanel
|
|
|
|
# Update game servers
|
|
# Use PufferPanel web interface for game updates
|
|
```
|
|
|
|
### Backup Procedures
|
|
```bash
|
|
# Manual backup
|
|
docker exec pufferpanel-seattle pufferpanel backup create minecraft-server
|
|
|
|
# Restore from backup
|
|
docker exec pufferpanel-seattle pufferpanel backup restore minecraft-server backup-name
|
|
```
|
|
|
|
## Integration with Homelab
|
|
|
|
### Monitoring Integration
|
|
- **Prometheus**: Server metrics collection
|
|
- **Grafana**: Performance dashboards
|
|
- **NTFY**: Alert notifications
|
|
- **Uptime Kuma**: Service availability monitoring
|
|
|
|
### Authentication Integration
|
|
- **Authentik SSO**: Single sign-on integration (planned)
|
|
- **LDAP**: Centralized user management (planned)
|
|
- **Discord**: Player authentication via Discord (planned)
|
|
|
|
### Backup Integration
|
|
- **Automated backups**: Integration with homelab backup system
|
|
- **Cloud storage**: Backup to cloud storage
|
|
- **Monitoring**: Backup success/failure notifications
|
|
|
|
---
|
|
**Status**: ✅ PufferPanel managing multiple game servers with automated backups and monitoring |