Connectivity Problem with Radicle Node: Dedicated IPv4 Works, Shared IPv4 Fails

I have been building a container that starts a Radicle node on fly.io. Everything is working great. I managed to make connection from my machines to the deployed node. It was until when I moved from dedicated IP address to to the shared one. I would like to know understand why. I would be very happy if someone could help me.
Below is my toml configuration file.

app = 'radicle-seed-node'
primary_region = 'waw'

[build]


[http_service]
  internal_port = 80
  force_https = true
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0
  processes = ['app']

[[services]]
  protocol = 'tcp'
  internal_port = 8776
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0
  processes = ['app']

  [[services.ports]]
    port = 8776

[[vm]]
  memory = '1gb'
  cpu_kind = 'shared'
  cpus = 1

@bachiro shared IPv4 doesn’t support plain TCP ports, you need to use the TLS handler. If you need TCP without TLS handler then you’ll need to use a dedicated IPv4.
Public Network Services · Fly Docs

Thank you very much for answering! Yes, I was aware of the TLS handler.
In fact, I did include it inside my toml file and it still didn’t work. This is my toml file with the tls handlers:

app = 'creature-pigeon''
primary_region = 'waw'

[build]

[http_service]
  internal_port = 80
  force_https = true
  auto_stop_machines = true
  auto_start_machines = true    
  min_machines_running = 0
  processes = ['app']

[[services]]
  protocol = 'tcp'
  internal_port = 8776
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0
  [[services.ports]]
    port = 8776
    handlers = ['tls']

  [[services.tcp_checks]]
    interval = '5s'
    timeout = '1s'

[[vm]]
  memory = '1gb'
  cpu_kind = 'shared'
  cpus = 1

And the output when I tried to connect to the seed node:

✗ Connecting to z6MkmAY…Dv2M9cz@creature-pigeon.fly.dev:8776... error: connection reset