Docker. That's it :P
python3 run.py --app_ids=376030,258550 --install_path=/var/lib/steam_cache- Build the custom Docker image with Traffic Control (TC):
./build-docker.sh- Set the environment variable to use the custom image:
export STEAMCMD_DOCKER_IMAGE=astroom/steamcmd-bandwidth:latest- Run with bandwidth limiting:
python3 run.py --app_ids=376030,258550 --install_path=/var/lib/steam_cache \
--bandwidth_enabled=true --bandwidth_down_rate=1000The path where the game files will be stored and / or checked on follow-up runs.
Setting /var/lib/steam_cache will put each game in /var/lib/steam_cache/APP_ID
The Steam APP IDs to install as a comma-separated string.
Get APP IDs from: https://steamdb.info
Be aware that most games have different APP IDs for the game itself and it's dedicated server counterpart.
Maximum number of concurrent APP IDs to process using threading.
Enable bandwidth limiting with Traffic Control (requires custom Docker image). Set to true or false.
Upload rate limit in KB/s. Only works when bandwidth limiting is enabled and using the custom Docker image.
Download rate limit in KB/s. Only works when bandwidth limiting is enabled and using the custom Docker image.
This project includes a custom Docker image that extends the official SteamCMD image with TC (Traffic Control) for bandwidth limiting.
./build-docker.shThis creates a Docker image named astroom/steamcmd-bandwidth:latest that includes:
- Official SteamCMD Debian base image (
steamcmd/steamcmd:debian) - Traffic Control (TC) bandwidth limiting tools (
iproute2,iftop, etc.) - Wrapper script for bandwidth-controlled SteamCMD execution
📦 Pre-built images available on:
- Docker Hub:
astroom/steamcmd-bandwidth:latest(recommended) - GitHub Container Registry:
ghcr.io/astroom/steamcmd-bandwidth:latest
You can use the pre-built image instead of building locally!
Set the STEAMCMD_DOCKER_IMAGE environment variable:
# In your shell
export STEAMCMD_DOCKER_IMAGE=astroom/steamcmd-bandwidth:latest
# Or in a .env file
echo "STEAMCMD_DOCKER_IMAGE=astroom/steamcmd-bandwidth:latest" >> .envLimit download to 1MB/s (1000 KB/s):
python3 run.py --app_ids=376030 --install_path=/var/lib/steam_cache \
--bandwidth_enabled=true --bandwidth_down_rate=1000Limit both upload and download:
python3 run.py --app_ids=376030 --install_path=/var/lib/steam_cache \
--bandwidth_enabled=true --bandwidth_up_rate=500 --bandwidth_down_rate=1000If you want, you can configure Slack to notify if the script fails to a set channel.
Check these environment variables in the .env
SLACK_BOT_CHANNEL=channelName
SLACK_BOT_TOKEN=slackToken