On Linux (and, I believe, most other Unix-like operating systems), the service must be run as root in order to be able to bind to a port with a number less than 1024.
I just checked it in the Node application I was lying in and I saw exactly the same error: a line for a line that did not indicate the file path when I changed the port from 5000 to 443.
During development, most users will run the dev server at a higher number, such as 8080. During production, you may want to use a proper web server, such as Nginx, to serve static content and a reverse proxy. Node, which makes it less problematic, since Nginx can very well be run as root.
EDITING. Since static content is required for your use case, you can use a web server such as Nginx or Apache to handle static files, and a reverse proxy for another port for your dynamic content. Reverse proxying is pretty simple with Nginx - here's an example configuration file:
server { listen 443; server_name example.com; client_max_body_size 50M; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location /static { root /var/www/mysite; } location / { proxy_pass http://127.0.0.1:8000; } }
This assumes that your web application must be accessible on port 443 and run on port 8000. If the location matches the / static folder, it is served from / var / www / mysite / static. Otherwise, Nginx passes it to the running application on port 8000, which can be a Node.js application, or with Python, or any other.
It also quite decisively solves your problem, since the application will be available on port 443, without having to bind to that port.