The Dreaded Port Filter

This is here for historical purposes only, and is not current. You can use any port you’d like for Fly.io services, TCP or UDP. We’ll probably just take this page down soon. There’s nothing you need to know here anymore! Disregard The Dreaded Port Filter, for it is no more.

Apps running on Fly.io have their own VMs, and full control of the network. But to accept incoming connections from the Internet, those apps need to register with Fly.io’s Anycast CDN. Our Anycast CDN currently honors TCP connections on these ports:

Port Application
25 SMTP email
53 TCP DNS
80 HTTP
443 HTTPS
853 DNS-over-TLS
5000 We forget
8080 HTTP
8443 HTTPS
100xx Random stuff
25565 Minecraft

You light any of these ports up for your app by editing the [[services]] section of its fly.toml configuration.

You are doubtlessly wondering, “why these ports?”. And the answer is: there is no good reason for this system, and we are actively at work attempting to destroy this monstrosity that we, in our own hubris, wrought upon ourselves. In the meantime:

If you want to use a port not on this list…

Just ask us, on community.fly.io. If you want to use a TCP port for your application, we should support it; you’re doing us a favor by asking.

If you want to use UDP ports not on this list…

Go right ahead. UDP doesn’t have a port filter.

If you’re concerned about ports your apps use to talk between themselves on…

Don’t be! The port filter only applies to Fly.io’s Anycast network, for incoming connections from the Internet. VMs in your organization can talk to each other on any random ports they’d like, so go ahead and book up a TimescaleDB database and point your applications to it on port 5432.