403 error when installing private app

I have created an app and successfully tested with ngrok. The app registers itself and everything works fine. I then created a private listing in the marketplace and that seemed to work fine. I created a token and then used the link to the descriptor with token and pasted to manage apps/upload. The descriptor is accessed without an issue but when it tries to install the app I get a 503 error. On the npm start console I see no attempt to access the server. I can access both the descriptor and the /installed route from the browser with no issues. Here is the error message I get: The app host returned HTTP response code 403 when we tried to contact it during installation. Please try again later or contact the app vendor.

Thanks!
Jerry

@GeraldVasend - Can you check to see that Enable Private Listings is checked on your instance Apps > Settings? Also, can you uninstall any previous versions that may be lingering from your previous installs via command line? And lastly, can you check your descriptor for fully qualified domain name value in baseUrl? (and that it’s also https, not http)

Yes, private listings are enabled. The FQDN is present and I can access the descriptor via the FQDN using https. I do not see any lingering versions listed. I did at one point and I suspect that might of been that I enabled licensing in development with ngrok. Normally, the app is automatically registered and then goes away when the app is started and stopped. However, as best I can tell, that was cleaned up. I did one thing that might be non-standard and is causing an issue. I am using port 3000 for my prod setting at the moment. When uploading to marketplace I got an error that I should be using port 443. In order to serve the file via 443 I served it through my nginx server just for the upload which seemed to work. The url in the descriptor includes port 3000 in the FQDN. Am I required to use 443 in general when in production mode?

Problem fixed. It was related to trying to specify a port on the FQDN. There might be a way to do that but I decided to take a more traditional approach of using nginx as the proxy to the app node server which works fine.