docker.recipes

AMP Game Server Panel Alternative

intermediate

LinuxGSM-based game server management with multiple game support and web interface.

Overview

LinuxGSM (Linux Game Server Manager) is a command-line tool that simplifies the deployment and management of dedicated game servers on Linux systems. Created to eliminate the complexity of manually configuring game servers, LinuxGSM supports over 120 different games including Counter-Strike, Minecraft, Garry's Mod, and Team Fortress 2, providing automated installation, updates, backups, and monitoring capabilities. This containerized implementation combines LinuxGSM with a comprehensive monitoring and web management stack to create a powerful alternative to commercial game server panels like AMP (Application Management Panel). This stack integrates LinuxGSM's game server management capabilities with Prometheus for metrics collection, Grafana for visualization dashboards, and NGINX as a reverse proxy to create a unified web interface. Prometheus scrapes server performance metrics, player counts, and system resources, while Grafana transforms this data into intuitive dashboards showing server health, player activity trends, and resource utilization. NGINX handles SSL termination and provides secure access to the Grafana interface, creating a professional-grade game server management platform. Homelab enthusiasts, small gaming communities, and indie game developers will find this stack particularly valuable as it delivers enterprise-level game server management without licensing costs or player limits imposed by commercial alternatives. The combination provides both the reliability of LinuxGSM's battle-tested server management with modern observability tools, making it ideal for managing multiple game servers across different titles while maintaining full control over the hosting environment.

Key Features

  • LinuxGSM support for 120+ game titles with automated installation, updates, and server lifecycle management
  • Prometheus metrics collection for game server performance, player statistics, and system resource monitoring
  • Grafana dashboard visualization with customizable panels for server health, player trends, and alert management
  • NGINX reverse proxy with SSL termination and load balancing for secure web interface access
  • Multi-game server deployment capability allowing different game types on the same host infrastructure
  • PromQL-powered alerting for server downtime, resource exhaustion, and player count thresholds
  • LinuxGSM's built-in backup system with Grafana visualization of backup status and storage usage
  • Container-based isolation allowing multiple game server instances without host system conflicts

Common Use Cases

  • 1Small gaming communities running multiple dedicated servers for different games with centralized monitoring
  • 2Homelab enthusiasts replacing expensive AMP licenses with open-source game server management
  • 3Indie game developers testing multiplayer functionality across various server configurations and loads
  • 4LAN party organizers deploying temporary game servers with real-time performance monitoring
  • 5Gaming clans managing private servers for competitive matches with historical performance analytics
  • 6Educational institutions teaching game development with hands-on server management experience
  • 7Content creators running community servers with viewer engagement metrics and uptime dashboards

Prerequisites

  • Docker host with minimum 2GB RAM (4GB+ recommended for multiple game servers)
  • UDP port 27015 and TCP ports 80, 3000, 9090 available for game server and web interface access
  • Basic understanding of game server configuration files and LinuxGSM command structure
  • Knowledge of Prometheus metrics and PromQL for custom monitoring queries
  • 50GB+ available disk space for game files, logs, and metrics storage depending on game selection
  • Understanding of NGINX configuration for SSL certificate setup and domain routing

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 gameserver:
3 image: gameservermanagers/linuxgsm-docker:latest
4 environment:
5 GAMESERVER: ${GAMESERVER}
6 LGSM_GITHUBUSER: ${LGSM_GITHUBUSER:-GameServerManagers}
7 LGSM_GITHUBREPO: ${LGSM_GITHUBREPO:-LinuxGSM}
8 LGSM_GITHUBBRANCH: ${LGSM_GITHUBBRANCH:-master}
9 ports:
10 - "27015:27015/udp"
11 - "27015:27015/tcp"
12 volumes:
13 - serverfiles:/home/linuxgsm/serverfiles
14 - lgsm:/home/linuxgsm/lgsm
15 - log:/home/linuxgsm/log
16 networks:
17 - gameserver-net
18 restart: unless-stopped
19
20 prometheus:
21 image: prom/prometheus:latest
22 ports:
23 - "9090:9090"
24 volumes:
25 - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
26 - prometheus_data:/prometheus
27 networks:
28 - gameserver-net
29 restart: unless-stopped
30
31 grafana:
32 image: grafana/grafana:latest
33 ports:
34 - "3000:3000"
35 environment:
36 GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD}
37 volumes:
38 - grafana_data:/var/lib/grafana
39 networks:
40 - gameserver-net
41 restart: unless-stopped
42
43 nginx:
44 image: nginx:alpine
45 ports:
46 - "80:80"
47 volumes:
48 - ./nginx.conf:/etc/nginx/nginx.conf:ro
49 depends_on:
50 - grafana
51 networks:
52 - gameserver-net
53 restart: unless-stopped
54
55volumes:
56 serverfiles:
57 lgsm:
58 log:
59 prometheus_data:
60 grafana_data:
61
62networks:
63 gameserver-net:
64 driver: bridge

.env Template

.env
1# Game Server Type (csgoserver, arkserver, etc.)
2GAMESERVER=csgoserver
3
4# Grafana
5GRAFANA_PASSWORD=secure_grafana_password
6
7# LinuxGSM
8LGSM_GITHUBUSER=GameServerManagers
9LGSM_GITHUBREPO=LinuxGSM
10LGSM_GITHUBBRANCH=master

Usage Notes

  1. 1Supports 100+ game servers
  2. 2Grafana monitoring at http://localhost:3000
  3. 3Change GAMESERVER variable for different games
  4. 4Use ./linuxgsm.sh for server management commands

Individual Services(4 services)

Copy individual services to mix and match with your existing compose files.

gameserver
gameserver:
  image: gameservermanagers/linuxgsm-docker:latest
  environment:
    GAMESERVER: ${GAMESERVER}
    LGSM_GITHUBUSER: ${LGSM_GITHUBUSER:-GameServerManagers}
    LGSM_GITHUBREPO: ${LGSM_GITHUBREPO:-LinuxGSM}
    LGSM_GITHUBBRANCH: ${LGSM_GITHUBBRANCH:-master}
  ports:
    - 27015:27015/udp
    - 27015:27015/tcp
  volumes:
    - serverfiles:/home/linuxgsm/serverfiles
    - lgsm:/home/linuxgsm/lgsm
    - log:/home/linuxgsm/log
  networks:
    - gameserver-net
  restart: unless-stopped
prometheus
prometheus:
  image: prom/prometheus:latest
  ports:
    - "9090:9090"
  volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    - prometheus_data:/prometheus
  networks:
    - gameserver-net
  restart: unless-stopped
grafana
grafana:
  image: grafana/grafana:latest
  ports:
    - "3000:3000"
  environment:
    GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD}
  volumes:
    - grafana_data:/var/lib/grafana
  networks:
    - gameserver-net
  restart: unless-stopped
nginx
nginx:
  image: nginx:alpine
  ports:
    - "80:80"
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
  depends_on:
    - grafana
  networks:
    - gameserver-net
  restart: unless-stopped

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 gameserver:
5 image: gameservermanagers/linuxgsm-docker:latest
6 environment:
7 GAMESERVER: ${GAMESERVER}
8 LGSM_GITHUBUSER: ${LGSM_GITHUBUSER:-GameServerManagers}
9 LGSM_GITHUBREPO: ${LGSM_GITHUBREPO:-LinuxGSM}
10 LGSM_GITHUBBRANCH: ${LGSM_GITHUBBRANCH:-master}
11 ports:
12 - "27015:27015/udp"
13 - "27015:27015/tcp"
14 volumes:
15 - serverfiles:/home/linuxgsm/serverfiles
16 - lgsm:/home/linuxgsm/lgsm
17 - log:/home/linuxgsm/log
18 networks:
19 - gameserver-net
20 restart: unless-stopped
21
22 prometheus:
23 image: prom/prometheus:latest
24 ports:
25 - "9090:9090"
26 volumes:
27 - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
28 - prometheus_data:/prometheus
29 networks:
30 - gameserver-net
31 restart: unless-stopped
32
33 grafana:
34 image: grafana/grafana:latest
35 ports:
36 - "3000:3000"
37 environment:
38 GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD}
39 volumes:
40 - grafana_data:/var/lib/grafana
41 networks:
42 - gameserver-net
43 restart: unless-stopped
44
45 nginx:
46 image: nginx:alpine
47 ports:
48 - "80:80"
49 volumes:
50 - ./nginx.conf:/etc/nginx/nginx.conf:ro
51 depends_on:
52 - grafana
53 networks:
54 - gameserver-net
55 restart: unless-stopped
56
57volumes:
58 serverfiles:
59 lgsm:
60 log:
61 prometheus_data:
62 grafana_data:
63
64networks:
65 gameserver-net:
66 driver: bridge
67EOF
68
69# 2. Create the .env file
70cat > .env << 'EOF'
71# Game Server Type (csgoserver, arkserver, etc.)
72GAMESERVER=csgoserver
73
74# Grafana
75GRAFANA_PASSWORD=secure_grafana_password
76
77# LinuxGSM
78LGSM_GITHUBUSER=GameServerManagers
79LGSM_GITHUBREPO=LinuxGSM
80LGSM_GITHUBBRANCH=master
81EOF
82
83# 3. Start the services
84docker compose up -d
85
86# 4. View logs
87docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/amp-game-panel/run | bash

Troubleshooting

  • Game server fails to start: Check GAMESERVER environment variable matches LinuxGSM supported game codes exactly
  • Grafana shows no metrics data: Verify Prometheus is successfully scraping targets at http://localhost:9090/targets
  • LinuxGSM commands hang during execution: Increase container memory limits as some games require significant RAM during installation
  • Players cannot connect to game server: Ensure UDP port 27015 is properly forwarded and not blocked by host firewall
  • Prometheus metrics missing after container restart: Check that prometheus_data volume has proper write permissions for UID 65534
  • NGINX 502 errors accessing Grafana: Confirm Grafana container is healthy and accessible on port 3000 within Docker network

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space