Cannot deploy a ruby udp server and open port on ubuntu droplet

Hi. I have a working ruby 2.7.2 app that is a simple udp server on my local development machine which uses the ruby UDPSocket library. I have created a ubuntu 18.04 droplet and created a cloud firewall with a custom inbound rule protocol:udp, port range:7373. I have created a non-sudo user (m32_udp) and placed the app in /var/www/m32_udp/code directory with these privilages.

m32_udp@megazoic:/var/www/m32_udp/code$ ls -l total 24 -rw-r–r-- 1 m32_udp m32_udp 60 Nov 11 22:56 Gemfile -rw-r–r-- 1 m32_udp m32_udp 100 Nov 11 23:51 Gemfile.lock -rw-r–r-- 1 m32_udp m32_udp 368 Nov 11 22:56 client.rb -rw------- 1 m32_udp m32_udp 115 Nov 12 01:14 nohup.out -rw-r–r-- 1 m32_udp m32_udp 2194 Nov 11 22:56 server.rb

My ruby code (abbreviated) is

    @socket =
    @socket.bind("", @port)

I have also tried entering my droplet’s ip address in the bind parameter. Also @port is 7373.

When I start the app as m32_udp user, netstat reports…

watchdog@megazoic:~$ netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0* LISTEN
tcp 0 0* LISTEN
tcp 0 0 ESTABLISHED tcp 0 316 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN
udp 0 0*
udp 0 0*

When I change the ruby code in my app to


netstat reports
udp 0 0*

In either case, I cannot see this port as being open using netcat from another machine. It is also not reported as LISTEN in netstat. Do I need to run this app with sudo privileges? Do I have the ip address correct in the bind statement? Thanks for any help that you can provide!

Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Accepted Answer

My bad. This was working with the original socket.bind call using

I guess that I expected netstat to report LISTEN for this port as my app was indeed listening.

Thanks for looking