I have an identity server I’m trying to deploy which will only be used internally by other fly apps, it has a admin UI but its (currently) only accessible over SSL which it seems fly proxy does not handle (to my knowledge)
if my apps are only communicating with sevices via the private fly networks, should I use SSL at all? or should I only be running a service via HTTP and fly will take care of the TLS/HTTPS termination if something is a public endpoint?
It depends on your security needs but using HTTP for internal only communications is okay because fly uses Wireguard encrypted tunnels so communication between apps inside your organization is already encrypted. Having their proxy do TLS termination for incoming external connections is quite a standard setup.
Hey thanks for the response, in terms of communicating between web services how would that work? with the .internal TLD or the .flycast I read somewhere that I need to bind to the 6pn ip but if its already bound to 0.0.0.0 is that still a requirement?
some general guidelines of internal communication across services would be super helpful!
Depends on whether you want to use the proxy or not.
If you don’t need any of the proxy features then using the .internal addresses will work fine.
If you do need to use the proxy then you’ll need to assign a private ipv6 to each app that you want to be accessible via the proxy and use the .flycast address to access those apps.
As for the apps, they don’t need to change, you can continue binding to 0.0.0.0 though I normally bind using the ipv6 address of [::].
Some basic guidelines are:
For http based apps, if you’re talking to a specific VM or to the closest VM, you don’t need the proxy. If you want internal load balancing without managing it yourself then you do need the proxy.
For TCP based apps, same applies but load balancing happens at the connection level instead of the per request level like http.
For UDP based apps, if using the proxy, refer to fly docs about binding for UDP as things work a little differently.
Be aware that by default all apps in an organization can internally talk to each other, and there’s no restriction on which ports they can talk to each other on.
Without more details on your specific requirements, this is about as much information you can get.
Unless you’ve got some unique requirement, I’d use the fly proxy instead of setting up your own.
I would personally use the fly proxy for all the apps if possible as it provides load balancing. You can set private ipv6 addresses and no public ip addresses on the internal apps and use the .flycast addresses, that way they’re not publicly accessible.
You’ll have to make sure that all of your services can operate in high availability environments, e.g. Sessions not stored on local disk and instead stored on a storage accessible by all VMs for that app.