@reddihari A single Bokeh server can run multiple Bokeh apps (on the same port). Bokeh app code is not actually “run” until connections are made, so there is no t really any cost to do this. As an example, all the apps you see on demo.bokeh.org are running on a a single Bokeh server. If you know up front ahead of time all the possible apps that users will need to access then I’d suggest simply running all of them on one Bokeh server. Then, if you need “scale out” in order to handle many users than that’s when you could put things behind a load balancer as @p-himik suggests (though, if the apps are not computationally heavy, you may not even need to).
If you need to add apps “dynamically” or “on the fly” then that is when you would need to start new Bokeh servers on different ports. (Which you could also probably map to a single port externally using a reverse proxy like Nginx). But it’s also worth examining assumptions, too, and make sure you actually need a Bokeh server at all. Bokeh server apps are useful when you want to connect plot tools and event and widgets to real Python code. E.g you want to run Pandas operations when a selection is made or Scikit-learn models when a button is pressed. If you just need to show static plots or ons with simple basic interactions, then a Bokeh server is overkill.