Logo by kcaugolden
Instantly deploy Team Fortress 2 servers straight from Discord โ powered by Docker, multi-cloud architecture (Oracle Cloud & AWS), and SDR.
TF2-QuickServer is a Discord bot that lets you spawn TF2 servers instantly in multiple regions using a multi-cloud architecture. Deploy servers on Oracle Container Instances for most regions, or AWS Local Zones for ultra-low latency in specific locations like Buenos Aires. Whether you're playing competitive or just want to chill with friends, it's never been easier to get a server up and running in a few minutes.
- โ Quick Server Deployment โ Spin up a TF2 server from scratch in 3 minutes with a simple Discord commandโno technical knowledge required
- ๐ Multi-Cloud Global Deployment โ Deploy servers across Oracle Cloud regions worldwide, plus AWS Local Zones for ultra-low latency in select cities like Buenos Aires
- ๐ก๏ธ Advanced DDoS Protection โ Every server is protected by the custom-built TF2-QuickServer-Shield, an intelligent agent that actively monitors and blocks DDoS attacks in real time, with in-game notifications for your peace of mind
- ๐ Isolated Containerized Architecture โ Each server runs in its own secure Docker container, ensuring full isolation and reliability
- โฑ๏ธ Automatic Cost Savings โ Idle servers are automatically terminated after 10 minutes to save resources and keep costs low
- Join our Discord Channel or use the Bot in any of our Partnered Guilds
- Run a Command โ Example:
/create-server sa-saopaulo-1 - Select a Variant โ Use the buttons shown in Discord to pick your server type (e.g.,
standard-competitive). - Receive Server Info โ Get detailed connection info for your server, including SDR, direct, and TV connect addresses.
- Play! โ Join with friends and frag away!
- ๐ ๏ธ Terraform โ Provisions all necessary cloud infrastructure across Oracle Cloud and AWS
- ๐งช Multi-Cloud SDKs โ OCI-SDK (Node.js) for Oracle Cloud Container Instances, AWS SDK for ECS deployments in Local Zones
- ๐ SQLite โ Fast, local database to track server and user state
- ๐ณ Docker โ All servers are built from containerized images
- ๐ฆซ GoLang โ Powers the custom TF2-QuickServer-Shield for advanced DDoS protection and network monitoring
| Command | Description |
|---|---|
/create-server <region> |
Launches a server in the selected region (you'll be prompted to select a variant) |
/get-my-servers |
Retrieves all your active server details (IPs, passwords, etc.) in case you lost the original message |
/status |
Shows the current status of all servers across all regions (running, pending, terminating counts) |
/terminate-servers |
Terminates all servers created by the user |
/set-user-data <steamId> |
Sets the SteamID of the user, assigning them as the Sourcemod admin for all servers the user creates |
The main TF2-QuickServer app currently supports the following regions for instant server deployment:
- ๐จ๐ฑ Santiago
- ๐ง๐ท Sรฃo Paulo
- ๐จ๐ด Bogotรก
- ๐บ๐ธ Chicago
- ๐ฉ๐ช Frankfurt
- ๐ฆ๐บ Sydney
- ๐ฆ๐ท Buenos Aires (Experimental) โ Ultra-low latency deployment using AWS Local Zone
- ๐ต๐ช Lima (Experimental) โ Ultra-low latency deployment using AWS Local Zone
If you are self-hosting, you can use any region that supports Oracle Container Instances or AWS ECS in Local Zones.
See the full lists: Oracle Cloud Regions | AWS Local Zones
Want to run your own version? Follow the steps below:
git clone https://github.com/sonikro/TF2-QuickServer.git
cd TF2-QuickServerCreate a .env file:
# Discord Bot
DISCORD_TOKEN=
DISCORD_CLIENT_ID=
# Oracle Cloud Auth (required for OCI regions)
OCI_CONFIG_FILE=
# AWS Auth (required for AWS Local Zone regions)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
# Third-party Services
DEMOS_TF_APIKEY=
LOGS_TF_APIKEY=npm installOracle Container Instances do not support NFS or shared file systems like FSS. Instead, this project uses Docker fat images that bake in all TF2 maps directly.
npm run download:mapsThis will create the maps/ folder and download all maps listed in maps.json.
๐ Maps are gitignored and stored in a local
mapsfolder.
The mapdownloader plugin is also included and will attempt to fetch missing maps dynamically if needed.
Make sure you're authenticated with both OCI and AWS (if using Local Zones). Then run:
npm run terraform:deployThis command runs Terraform to create required infrastructure across Oracle Cloud and AWS, and generates a
config/local.jsonfile with all outputs.
TF2-QuickServer code reads this file at runtime to determine which cloud resources to use.
Authentication info:
๐ OCI SDK Authentication Docs
๐ AWS CLI Authentication Docs
npm run devservices:
tf2-quickserver:
image: sonikro/tf2-quickserver:latest
restart: always
ports:
- 8000:3000
env_file:
- .env
volumes:
- ./db:/app/db
- ./config:/app/config:ro
- ./keys:/app/keys:roMake sure you have your config files in the ./config directory
TF2-QuickServer is instrumented for full observability using OpenTelemetry. This enables you to collect traces, metrics, and logs from the bot and supporting services, making it easy to monitor performance, troubleshoot issues, and gain insights into server operations.
If the environment variable NEW_RELIC_LICENSE_KEY is set, a New Relic agent (newrelic-infra sidecar container) will automatically run on each Oracle server instance for enhanced infrastructure monitoring and reporting to New Relic.
To enable OpenTelemetry data export from the Discord App, set the following environment variables in your .env file or deployment configuration:
# OpenTelemetry Exporter Configuration
OTEL_SERVICE_NAME=tf2-quickserver
OTEL_RESOURCE_ATTRIBUTES=service.environment=localhost
OTEL_EXPORTER_OTLP_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERS=api-key=
OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT=
OTEL_EXPORTER_OTLP_COMPRESSION=gzip
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=deltaContributions are welcome! Open a PR, suggest improvements, or file an issue if something breaks.
MIT
Need help? Want to chat with other players or devs?
Join the Discord or open a GitHub Issue.