LinuxGSM for Game Server Management

LinuxGSM is a powerful command-line tool that streamlines game server management on Linux. It provides automated installation, updates, backups, and monitoring for dozens of game servers. This guide covers LinuxGSM installation, server deployment, command usage, monitoring setup, alert configuration, backup scheduling, and cron-based automation. LinuxGSM significantly reduces operational overhead for multi-server environments.

Table of Contents

Overview

LinuxGSM provides:

  • Automated server installation
  • One-command updates
  • Scheduled backups
  • 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.

System Requirements

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.

Installing 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

Install system dependencies:

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

Download LinuxGSM installer:

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

Install 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.

Verify installation:

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

Verify 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

Verify 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

Configuration

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

Monitoring and Alerts

Enable monitoring:

# 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

Configure 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 monitoring 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 backups:

# 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 backup 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 backups:

# 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

Verify 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

Create automated 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

Troubleshooting

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

Conclusion

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 backups with scheduled cron jobs
  • Set up monitoring 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.