Logo by kcaugolden
Instantly deploy Team Fortress 2 servers straight from Discord — powered by Docker, Oracle Cloud, and SDR.
TF2-QuickServer is a Discord bot that lets you spawn TF2 servers instantly in multiple regions using Oracle Container Instances. 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
- 🌍 Global Multi-Region Support – Deploy servers in your preferred Oracle Cloud region for the lowest possible latency
- 🛡️ 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 Oracle Cloud infrastructure
- 🧪 OCI-SDK (Node.js) – Dynamically creates container instances
- 📂 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) |
/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
If you are self-hosting, you can use any region that supports Oracle Container Instances.
See the full list: Oracle Cloud Regions
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
OCI_CONFIG_FILE=
# 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 OCI. Then run:
npm run oracle:deployThis command runs Terraform to create required infra and generates a
config/local.jsonfile with all outputs.
TF2-QuickServer code reads this file at runtime to determine which OCI resources to use.
More info on authentication:
📖 OCI SDK 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.