LinuxGSM for Game Server Management

LinuxGSM es un poderoso línea de comandos tool that streamlines game server management on Linux. It provides automated installation, updates, copia de seguridads, and monitoreo for dozens of servidores de juegos. Esta guía cubre LinuxGSM installation, server implementación, command usage, monitoreo setup, alert configuration, copia de seguridad scheduling, and cron-based automation. LinuxGSM significantly reduces operational overhead for multi-server environments.

Tabla de contenidos

Descripción general

LinuxGSM provides:

  • Automated server installation
  • One-command updates
  • Scheduled copia de seguridads
  • Monitoring and alerting
  • Log rotation and management
  • Server validation
  • Console access
  • Update scheduling
  • Status dashboards

Supported games include: Counter-Strike 2, Rust, Valheim, ARK, Terraria, Factorio, 7 Days to Die, and 50+ others.

Requisitos del sistema

LinuxGSM requires:

  • Ubuntu 20.04 LTS, CentOS 8+, or similar
  • 2GB RAM minimum
  • 20GB+ disk space per server
  • Root or sudo access
  • Stable internet connection
  • curl or wget installed

LinuxGSM is lightweight and efficient.

Instalaing LinuxGSM

Create dedicated gameserver user:

sudo useradd -m -s /bin/bash gameserver
sudo usermod -aG sudo gameserver
sudo -u gameserver mkdir -p /home/gameserver/gameservers

Instala system dependencies:

sudo apt-get update
sudo apt-get install -y curl wget ca-certificates bzip2 gzip unzip lib32gcc1 lib32stdc++6

Descarga LinuxGSM installer:

cd /home/gameserver/gameservers
sudo -u gameserver wget -q https://linuxgsm.sh -O linuxgsm.sh
sudo chmod +x linuxgsm.sh

Instala specific game server using LinuxGSM:

# For Valheim
sudo -u gameserver ./linuxgsm.sh vhserver

# For Rust
sudo -u gameserver ./linuxgsm.sh rustserver

# For Counter-Strike 2
sudo -u gameserver ./linuxgsm.sh csgoserver

This creates a vhserver executable in the current directory.

Verifica la instalación:

sudo -u gameserver ./vhserver --help
sudo -u gameserver ./vhserver version

Server Deployment

Deploy a new server with LinuxGSM:

# Navigate to game server directory
cd /home/gameserver/gameservers

# Install Valheim server
sudo -u gameserver ./vhserver install

# Follow interactive prompts for:
# - IP address
# - Port number
# - Server name
# - Server password
# - Admin password

Verifica server installation:

sudo -u gameserver ./vhserver info

# Expected output showing:
# - Game: Valheim
# - Service: vhserver
# - Status: NOT RUNNING (on first check)
# - Executable: /path/to/game/binary

Start the server:

sudo -u gameserver ./vhserver start

# Monitor startup
sudo -u gameserver ./vhserver console

# Press Ctrl+B then Ctrl+D to exit console

Verifica server is running:

sudo -u gameserver ./vhserver status

# Expected output:
# Status: RUNNING
# Players: 0 / MaxPlayers

Core Commands

Essential LinuxGSM commands:

# Server Control
./vhserver start           # Start server
./vhserver stop            # Stop server gracefully
./vhserver restart         # Restart server
./vhserver console         # Attach to console
./vhserver send "command"  # Send command to server

# Information
./vhserver status          # Show server status
./vhserver info            # Display server information
./vhserver details         # Detailed information
./vhserver test-status     # Test connection

# Updates and Maintenance
./vhserver update          # Update to latest version
./vhserver validate        # Validate server installation
./vhserver install         # Install server components

# Logging
./vhserver logs            # View latest logs
./vhserver tail            # Real-time log tail
./vhserver postdetails     # Generate support details

# Other
./vhserver query           # Query server status
./vhserver backup          # Create backup
./vhserver check-update    # Check for available updates

Configuración

Edit server configuration file:

# List configuration files
ls -la /home/gameserver/gameservers/vhserver-*

# Edit game configuration
sudo -u gameserver nano /home/gameserver/gameservers/vhserver/serverconfig.xml

# Edit LinuxGSM config
sudo -u gameserver nano /home/gameserver/gameservers/lgsm/config-lgsm/vhserver/_default.cfg

Create custom configuration script:

sudo tee /home/gameserver/configure_server.sh > /dev/null <<'EOF'
#!/bin/bash

# Script to configure LinuxGSM servers
# Usage: ./configure_server.sh <server_name>

SERVER_NAME="$1"
LGSM_DIR="/home/gameserver/gameservers"

if [ -z "$SERVER_NAME" ]; then
    echo "Usage: $0 <server_name>"
    echo "Example: $0 vhserver"
    exit 1
fi

# Get server type (first part of name)
SERVER_TYPE=$(echo "$SERVER_NAME" | sed 's/server//')

echo "Configuring $SERVER_NAME..."

# Set common parameters
cd "$LGSM_DIR"

# Start with defaults
./lgsm.sh "$SERVER_TYPE" config

# Configure based on server type
case "$SERVER_TYPE" in
    vh)
        # Valheim specific
        sed -i 's/server.name=".*"/server.name="My Valheim Server"/' "$LGSM_DIR/$SERVER_NAME/config.cfg"
        ;;
    rust)
        # Rust specific
        sed -i 's/server.name=".*"/server.name="My Rust Server"/' "$LGSM_DIR/$SERVER_NAME/config.cfg"
        ;;
    csgo)
        # Counter-Strike specific
        sed -i 's/server.name=".*"/server.name="My CS Server"/' "$LGSM_DIR/$SERVER_NAME/config.cfg"
        ;;
esac

echo "Configuration complete"
EOF

sudo chmod +x /home/gameserver/configure_server.sh

Supervisión and Alerts

Enable monitoreo:

# Check monitoring config
sudo -u gameserver cat /home/gameserver/gameservers/lgsm/config-lgsm/vhserver/_default.cfg | grep -i monitor

# Enable email alerts
sudo -u gameserver nano /home/gameserver/gameservers/lgsm/config-lgsm/vhserver/_email.cfg

Configura email notifications:

sudo tee /home/gameserver/gameservers/lgsm/config-lgsm/vhserver/_email.cfg > /dev/null <<'EOF'
## Email Configuration

## Email Alerts
emailalert="on"

## Email address to send alerts to
alertemail="[email protected]"

## SMTP settings
smtphost="smtp.gmail.com"
smtpport="587"
smtpuser="[email protected]"
smtppass="your-app-password"

## Alert conditions
alertonstart="on"
alertonstop="on"
alertonfail="on"
alertonupdate="on"
EOF

Create monitoreo script:

sudo tee /home/gameserver/monitor_all_servers.sh > /dev/null <<'EOF'
#!/bin/bash

SERVERS_DIR="/home/gameserver/gameservers"

echo "=== LinuxGSM Server Status Report ==="
echo "Generated: $(date)"
echo ""

# Array to store status
RUNNING=0
STOPPED=0
FAILED=0

# Check all servers
for server in $(ls -d ${SERVERS_DIR}/*server 2>/dev/null | xargs -I {} basename {}); do
    if [ -x "$SERVERS_DIR/$server" ]; then
        STATUS=$($SERVERS_DIR/$server query 2>&1 | grep -i "status")
        
        if echo "$STATUS" | grep -q "RUNNING"; then
            echo "✓ $server: RUNNING"
            ((RUNNING++))
        elif echo "$STATUS" | grep -q "STOPPED"; then
            echo "✗ $server: STOPPED"
            ((STOPPED++))
        else
            echo "? $server: UNKNOWN"
            ((FAILED++))
        fi
    fi
done

echo ""
echo "Summary: Running=$RUNNING, Stopped=$STOPPED, Failed=$FAILED"
EOF

sudo chmod +x /home/gameserver/monitor_all_servers.sh

Monitor server in real-time:

# Get status updates every 5 seconds
watch -n 5 'cd /home/gameserver/gameservers && ./vhserver status'

# Generate status report
/home/gameserver/monitor_all_servers.sh

Backup Management

Create scheduled copia de seguridads:

# Manual backup
cd /home/gameserver/gameservers
sudo -u gameserver ./vhserver backup

# List backups
sudo -u gameserver ./vhserver backup list

# Restore from backup
sudo -u gameserver ./vhserver backup restore backup-name-here

Create copia de seguridad automation:

sudo tee /home/gameserver/backup_all_servers.sh > /dev/null <<'EOF'
#!/bin/bash

SERVERS_DIR="/home/gameserver/gameservers"
DATE=$(date +%Y%m%d_%H%M%S)

echo "Starting server backups at $(date)"

for server in $(ls -d ${SERVERS_DIR}/*server 2>/dev/null | xargs -I {} basename {}); do
    if [ -x "$SERVERS_DIR/$server" ]; then
        echo "Backing up $server..."
        
        cd "$SERVERS_DIR"
        sudo -u gameserver ./$server backup
        
        if [ $? -eq 0 ]; then
            echo "✓ Backup successful for $server"
        else
            echo "✗ Backup failed for $server"
        fi
    fi
done

echo "Backup process completed at $(date)"
EOF

sudo chmod +x /home/gameserver/backup_all_servers.sh

Schedule automatic copia de seguridads:

# Edit gameserver crontab
sudo -u gameserver crontab -e

# Add automatic backup every 6 hours
0 */6 * * * /home/gameserver/backup_all_servers.sh >> /tmp/backups.log 2>&1

# Backup daily at 3 AM
0 3 * * * /home/gameserver/gameservers/vhserver backup

# Save and exit

Verifica cron jobs:

sudo -u gameserver crontab -l

Update Automation

Check for updates:

cd /home/gameserver/gameservers

# Check single server
sudo -u gameserver ./vhserver check-update

# Check all servers
for server in $(ls -d *server 2>/dev/null | xargs -I {} basename {}); do
    echo "Checking $server..."
    ./$server check-update
done

Crea unutomated update script:

sudo tee /home/gameserver/update_all_servers.sh > /dev/null <<'EOF'
#!/bin/bash

SERVERS_DIR="/home/gameserver/gameservers"
LOG_FILE="/var/log/linuxgsm-updates.log"

{
    echo "=========================================="
    echo "LinuxGSM Update Report: $(date)"
    echo "=========================================="
    
    for server in $(ls -d ${SERVERS_DIR}/*server 2>/dev/null | xargs -I {} basename {}); do
        if [ -x "$SERVERS_DIR/$server" ]; then
            echo ""
            echo "Updating $server..."
            
            cd "$SERVERS_DIR"
            
            # Check if update is available
            if sudo -u gameserver ./$server check-update | grep -q "update available"; then
                echo "Update available for $server, applying..."
                
                # Stop server gracefully
                sudo -u gameserver ./$server stop
                sleep 10
                
                # Update server
                sudo -u gameserver ./$server update
                
                # Start server
                sudo -u gameserver ./$server start
                
                echo "✓ $server updated successfully"
            else
                echo "✓ $server is up to date"
            fi
        fi
    done
    
    echo ""
    echo "Update process completed at $(date)"
} | tee -a "$LOG_FILE"
EOF

sudo chmod +x /home/gameserver/update_all_servers.sh

Schedule automatic updates:

# Edit crontab
sudo -u gameserver crontab -e

# Auto-update all servers daily at 4 AM
0 4 * * * /home/gameserver/update_all_servers.sh

Advanced Usage

Server Cloning

Clone existing server configuration:

# List available servers
ls -la /home/gameserver/gameservers/

# Clone configuration
cd /home/gameserver/gameservers
sudo -u gameserver cp -r vhserver vhserver2
sudo -u gameserver sed -i 's/2456/2457/' vhserver2/config.cfg

# Start new server
sudo -u gameserver ./vhserver2 install
sudo -u gameserver ./vhserver2 start

Dashboard Generation

Create HTML status dashboard:

sudo tee /home/gameserver/generate_dashboard.sh > /dev/null <<'EOF'
#!/bin/bash

SERVERS_DIR="/home/gameserver/gameservers"
HTML_FILE="/var/www/html/server-status.html"

cat > "$HTML_FILE" <<'HTML'
<!DOCTYPE html>
<html>
<head>
    <title>Game Server Status</title>
    <meta http-equiv="refresh" content="60">
    <style>
        body { font-family: monospace; }
        .running { color: green; }
        .stopped { color: red; }
        table { border-collapse: collapse; width: 100%; }
        th, td { border: 1px solid black; padding: 8px; text-align: left; }
    </style>
</head>
<body>
    <h1>Game Server Status</h1>
    <p>Last updated: $(date)</p>
    <table>
        <tr>
            <th>Server</th>
            <th>Status</th>
            <th>Players</th>
            <th>Uptime</th>
        </tr>
HTML

for server in $(ls -d ${SERVERS_DIR}/*server 2>/dev/null | xargs -I {} basename {}); do
    if [ -x "$SERVERS_DIR/$server" ]; then
        STATUS=$($SERVERS_DIR/$server status 2>&1)
        PLAYER_COUNT=$($SERVERS_DIR/$server query 2>&1 | grep -i players | cut -d':' -f2 | head -1)
        
        if echo "$STATUS" | grep -q "RUNNING"; then
            STATUS_CLASS="running"
            STATUS_TEXT="RUNNING"
        else
            STATUS_CLASS="stopped"
            STATUS_TEXT="STOPPED"
        fi
        
        echo "        <tr>" >> "$HTML_FILE"
        echo "            <td>$server</td>" >> "$HTML_FILE"
        echo "            <td class=\"$STATUS_CLASS\">$STATUS_TEXT</td>" >> "$HTML_FILE"
        echo "            <td>$PLAYER_COUNT</td>" >> "$HTML_FILE"
        echo "            <td>--</td>" >> "$HTML_FILE"
        echo "        </tr>" >> "$HTML_FILE"
    fi
done

cat >> "$HTML_FILE" <<'HTML'
    </table>
</body>
</html>
HTML

echo "Dashboard generated at $HTML_FILE"
EOF

sudo chmod +x /home/gameserver/generate_dashboard.sh

Batch Operations

Perform operations on all servers:

# Start all servers
for server in /home/gameserver/gameservers/*server; do
    sudo -u gameserver $server start
done

# Stop all servers
for server in /home/gameserver/gameservers/*server; do
    sudo -u gameserver $server stop
done

# Check status of all servers
for server in /home/gameserver/gameservers/*server; do
    sudo -u gameserver $server status
done

# Create backups of all servers
for server in /home/gameserver/gameservers/*server; do
    sudo -u gameserver $server backup
done

Solución de problemas

Common issues:

# Server won't start
sudo -u gameserver ./vhserver console  # Check console for errors

# Check system resources
free -h
df -h

# Update LinuxGSM itself
cd /home/gameserver/gameservers
sudo -u gameserver wget -q https://linuxgsm.sh -O linuxgsm-update.sh
sudo -u gameserver ./linuxgsm-update.sh

# Validate installation
sudo -u gameserver ./vhserver validate

# Get support details
sudo -u gameserver ./vhserver postdetails

Conclusión

LinuxGSM dramatically simplifies game server management across multiple servers. By leveraging its automation capabilities, you can reduce operational overhead by 80% or more.

Key takeaways:

  • Use LinuxGSM for consistent server management
  • Automate copia de seguridads with scheduled cron jobs
  • Set up monitoreo and alerting
  • Schedule automatic updates for seamless patches
  • Clone servers for quick scaling
  • Generate dashboards for operations visibility
  • Monitor logs regularly for issues

A LinuxGSM-based infrastructure enables efficient, professional game server hosting at scale.