Para tu segunda pregunta depende de como tengas tu servidor puede poner un reverse proxy. Te podrá aconsejar que ya sea ngnix o apache web server. Por ejemplo con ngnix pones para que ese servidor web escuche en el puerto 80 y 443 y en cada puerto pones un reverse proxy que mande el tráfico al puerto 4000. De un solo con ngnix puede user let's encrypt para poner un certificado ssl gratuito y que tu página sea servida sobre https el programa de let's encrypt te hace la configuración para el ssl en el puterto 443. Investiga sobre reverse proxy para este tema.
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
#try_files $uri $uri/ =404;
proxy_pass
http://127.0.0.1:4000; # <<< esta es la línea de reverse proxy esta manda el puerto 80 al 4000
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /var/log/nginx/access_404.log log404 if ($status = 404);