Tiny proxy for Source Engine FastDL backed by a SFTP connection to your game server.
Find a file
2025-09-11 14:11:07 -07:00
.dockerignore Refactor code, remove bzip2 support due to Source weirdness 2025-08-12 22:38:24 -07:00
.editorconfig Retry connections if lost 2025-09-03 23:42:01 -07:00
.gitignore Refactor code, remove bzip2 support due to Source weirdness 2025-08-12 22:38:24 -07:00
Dockerfile Initial commit 2025-08-11 03:09:51 -07:00
go.mod Switch GitHub to git.vixen.computer 2025-09-11 13:42:20 -07:00
go.sum Retry connections if lost 2025-09-03 23:42:01 -07:00
LICENSE Initial commit 2025-08-11 03:09:51 -07:00
main.go Remove performmu 2025-09-11 14:11:07 -07:00
README.md Add continuous connection monitoring 2025-09-11 13:41:06 -07:00

foxfastdl

Tiny proxy that provides a Source Engine FastDL HTTP server backed by one or more SSH/SFTP connections to underlying game servers.

Important notes:

  • Does not support Bzip2, you should use compressed BSPs.
  • Performs no caching on its own, so make sure to run it behind a CDN.
  • Allows you to require a x-foxfastdl-password which you can set from your CDN.
  • Monitors server connections, attempting to reconnect automatically, and exiting on connection loss.

Usage

You can configure foxfastdl with environment variables:

  • FASTDL_SERVERn - list of sftp:// URLs to proxy, supply server name with ?name=xxxxx
  • FASTDL_PASSWORD - required value for the x-foxfastdl-password header, or an empty string to disable
  • FASTDL_PATHS - comma-seperated lists of directories to expose, default maps,materials,models,sound,particles,scripts,resource,replay
  • FASTDL_BIND - listen for HTTP connections on this port, default :8080
  • FASTDL_MONITOR_SECONDS - delay between checking server connections when idle, zero to disable, default 60

Here's an example of what foxfastdl looks like:

$ FASTDL_SERVER1=sftp://USER:PASS@orchid.nodes.pyro.sh:2022/tf/?name=pound3
$ FASTDL_SERVER2=sftp://USER:PASS@camellia.nodes.pyro.sh:2022/tf/?name=pound4
$ ./foxfastdl
foxfastdl v0.3.0 (c) 2025 Lua MacDougall <lua@foxgirl.dev>
connected pound3 at orchid.nodes.pyro.sh:2022
connected pound4 at camellia.nodes.pyro.sh:2022
listening on :8080
GET /
GET /favicon.ico
GET /pound3
GET /pound3/maps
GET /pound3/maps/koth_harvest_final.bsp

License

Made with ❤ by Lua (foxgirl.dev). Licensed under MIT.