# 🎮 Garry's Mod PropHunt Server A complete, production-ready PropHunt server setup with automated installation, updates, and Docker support. ## 🚀 Quick Start ### One-Liner Docker Install ```bash curl -fsSL https://git.vish.gg/Vish/gmod-prophunt-server/raw/branch/main/install-docker.sh | bash ``` ### Bare Metal Install ```bash curl -fsSL https://git.vish.gg/Vish/gmod-prophunt-server/raw/branch/main/install.sh | bash ``` ## 📦 What's Included - **Garry's Mod Server** (via SteamCMD) - **MetaMod:Source** - Latest stable version - **SourceMod** - Latest stable version - **PropHunt Gamemode** - Pre-configured - **Essential Plugins**: - ULX Admin Mod - ULib - PropHunt Enhanced - Anti-Cheat basics - Workshop Collection Downloader ## 📁 Directory Structure ``` gmod-prophunt-server/ ├── cfg/ # Server configuration files │ ├── server.cfg # Main server config │ ├── autoexec.cfg # Auto-execute commands │ └── mount.cfg # Content mounting ├── scripts/ # Management scripts │ ├── install.sh # Full installation │ ├── update.sh # Update server & addons │ ├── start.sh # Start server │ └── backup.sh # Backup script ├── docker/ # Docker files │ ├── Dockerfile # Container definition │ └── docker-compose.yml # Compose setup ├── sourcemod/ # SourceMod configuration ├── workshop/ # Workshop collection config └── metamod/ # MetaMod configuration ``` ## ⚙️ Configuration ### Server Settings Edit `cfg/server.cfg` to customize: - Server name - RCON password - Max players - Map rotation - Workshop collection ID ### Workshop Collection The default workshop collection includes essential PropHunt content. To use your own: 1. Create a collection on Steam Workshop 2. Update `WORKSHOP_COLLECTION_ID` in `cfg/server.cfg` 3. Run `./scripts/update.sh` ## 🔧 Management Commands ```bash # Start server ./scripts/start.sh # Update everything (server, addons, plugins) ./scripts/update.sh # Backup server data ./scripts/backup.sh # View logs tail -f /home/gmod/serverfiles/garrysmod/logs/console.log ``` ## 🐳 Docker Management ```bash # Start with Docker Compose docker-compose up -d # View logs docker-compose logs -f # Stop docker-compose down # Update docker-compose pull && docker-compose up -d ``` ## 🔒 Default Ports | Port | Protocol | Purpose | |------|----------|---------| | 27015 | UDP/TCP | Game server | | 27005 | UDP | Client port | | 27020 | UDP | SourceTV | ## 📝 Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `SRCDS_TOKEN` | - | Steam Game Server Token (required) | | `SERVER_NAME` | PropHunt Server | Server name | | `RCON_PASSWORD` | changeme | RCON password | | `MAX_PLAYERS` | 24 | Maximum players | | `MAP` | ph_office | Starting map | | `WORKSHOP_COLLECTION` | - | Workshop collection ID | ## 🔑 Getting a Server Token 1. Go to https://steamcommunity.com/dev/managegameservers 2. Create a new game server account for App ID `4000` (Garry's Mod) 3. Copy the token and set it as `SRCDS_TOKEN` ## 🛠️ Troubleshooting ### Server crashes with "tcmalloc: large alloc" error This is a memory allocation failure in Google's tcmalloc library. The fix is applied automatically by our start scripts, which disable tcmalloc. If you still see this error: ```bash # Manually disable tcmalloc mv /home/gmod/serverfiles/bin/libtcmalloc_minimal.so.4 /home/gmod/serverfiles/bin/libtcmalloc_minimal.so.4.disabled ``` ### "Item is not a collection!" error ``` Processing collection XXXXX... Item is not a collection! ``` **Cause:** You're using an individual addon ID instead of a collection ID. **Fix:** 1. Go to `https://steamcommunity.com/sharedfiles/filedetails/?id=YOUR_ID` 2. If it shows a single addon (not a "Collection"), you need to create a proper collection 3. Create a new collection on Steam Workshop containing your desired addons 4. Use that collection's ID instead ### "-authkey is no longer required" warning This warning can be safely ignored. The `-authkey` parameter was deprecated by Garry's Mod and is no longer needed for workshop content. ### Server won't start - Check that `SRCDS_TOKEN` is set - Verify ports 27015-27020 are open - Check logs in `garrysmod/logs/` ### Workshop content not downloading - Verify collection is public - Check `WORKSHOP_COLLECTION` is set correctly (must be a Collection ID, not an addon ID!) - Ensure server has internet access ### Players can't connect - Ensure firewall allows UDP/TCP 27015 - Verify server is properly registered with Steam ### Missing 32-bit libraries warning ``` WARNING: Failed to load 32-bit libtinfo.so.5 or libncurses.so.5. ``` Install the required libraries: ```bash # Debian/Ubuntu sudo apt-get install lib32tinfo5 libncurses5:i386 # CentOS/RHEL sudo yum install ncurses-libs.i686 ``` ## 📜 License MIT License - Free to use and modify. ## 🤝 Contributing Pull requests welcome! Please read the contribution guidelines first.