Accessing bokeh-server through apache Proxy

Hi,

I’m working on a small web application that will use bokeh and bokeh-server to plot data from a set of logs that will be continually updating. I have the application working great locally, as data is added to the logs bokeh updates the plots without any need to reload the plot or page. However, I’m having trouble as I try to deploy this to a website as an embeded plot.

I have bokeh-server running with the default parmeters, so I’m trying to use apache to ProxyPass http://127.0.0.1:5006/ to a subdomain, bokeh.example.com, configured as shown below.

<VirtualHost *:80>
ServerName bokeh.example.com
ServerAlias www.bokeh.example.com
ProxyPreserveHost on
ProxyPass / http://127.0.0.1:5006/
ProxyPassReverse / http://127.0.0.1:5006/

This appears to be working, however, all I get is the top menu bar which says “Bokeh Documents for defaultuser” and has a button to logout. (Cropped screenshot here: http://imgur.com/lkpYPyW,0tCXbXc)

This is different from what I expect, which is to see several menus below that top bar with text corresponding to any previously run examples. I expect this as this is the local behavior on http://localhost:5006/bokeh/. (Screenshot here: http://imgur.com/lkpYPyW,0tCXbXc#1) So I think the errors are occuring in passing it through the proxy.

If I look at bokeh.example.com/bokeh/userinfo/ I can see the doc that exists for the line example. Then I can grab the doc id and navigate to bokeh.example.com/bokeh/doc/example-doc-id-here and it prints a ton of plain-text which has all the data to be displayed.

So, I feel close to getting this to work and feel like this is one of the last steps to getting an embeded plot served by bokeh-server. Any suggestions as to what may be going wrong would be great. If there is a better way to run the server rather than with the ProxyPass I’m all ears too. It seems the server documentation is still in the works. I’m working on a write-up for how to set this up and would be happy to contribute to some documentation when I’m done.

Thanks,
-Brian

  1. can you take a look at the javascript console and tell us what
    you see(if there are any errors?)
    2. Does Apache support web socket forwarding? If not, then there
    might be some other problems you will run into there
···

On 01/01/2015 11:44 PM, Brian K wrote:

Hi,

    I'm working on a small web application that will use bokeh and

bokeh-server to plot data from a set of logs that will be
continually updating. I have the application working great
locally, as data is added to the logs bokeh updates the plots
without any need to reload the plot or page. However, I’m having
trouble as I try to deploy this to a website as an embeded plot.

    I have bokeh-server running with the default parmeters, so I'm

trying to use apache to ProxyPass to a
subdomain, bokeh.example.com, configured as shown below.
<VirtualHost *:80>
ServerName bokeh.example.com
ServerAlias ProxyPreserveHost on
ProxyPass / ProxyPassReverse /
This appears to be working, however, all I get is the top menu
bar which says “Bokeh Documents for defaultuser” and has a
button to logout. (Cropped screenshot here:
)
This is different from what I expect, which is to see several
menus below that top bar with text corresponding to any
previously run examples. I expect this as this is the local
behavior on . (Screenshot here:
) So I think the errors are
occuring in passing it through the proxy.
If I look at bokeh.example.com/bokeh/userinfo/ I can see the doc
that exists for the line example. Then I can grab the doc id and
navigate to bokeh.example.com/bokeh/doc/example-doc-id-here and
it prints a ton of plain-text which has all the data to be
displayed.
So, I feel close to getting this to work and feel like this is
one of the last steps to getting an embeded plot served by
bokeh-server. Any suggestions as to what may be going wrong
would be great. If there is a better way to run the server
rather than with the ProxyPass I’m all ears too. It seems the is still in the works. I’m working on a
write-up for how to set this up and would be happy to contribute
to some documentation when I’m done.
Thanks,
-Brian

  You received this message because you are subscribed to the Google

Groups “Bokeh Discussion - Public” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to [email protected].

  To post to this group, send email to [email protected].

  To view this discussion on the web visit [https://groups.google.com/a/continuum.io/d/msgid/bokeh/14125644-49f3-465a-9f22-e309fe022d3b%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/14125644-49f3-465a-9f22-e309fe022d3b%40continuum.io?utm_medium=email&utm_source=footer).

  For more options, visit [https://groups.google.com/a/continuum.io/d/optout](https://groups.google.com/a/continuum.io/d/optout).

http://127.0.0.1:5006/

www.bokeh.example.com

http://127.0.0.1:5006/
http://127.0.0.1:5006/

http://imgur.com/lkpYPyW,0tCXbXc

http://localhost:5006/bokeh/http://imgur.com/lkpYPyW,0tCXbXc#1

server
documentation

Hi Hugo,

Thanks for the fast response, answers to your questions below.

  1. Here is output from the javascript console:

Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead bokeh.js:62638
“Bokeh: setting prefix to” “http://” bokeh.js:60468
Use of getPreventDefault() is deprecated. Use defaultPrevented instead. jquery.min.js:5

``

I get multiples of that first message. I then get this error as well:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://bokeh/wsurl/. This can be fixed by moving the resource to the same domain or enabling CORS. wsurl

``

This one seems to be related to headers, CORS, and possibly websockets. What I get from this is that I need to read more about headers and CORS.

  1. It appears Apache does support web socket tunneling (mod_proxy_wstunnel - Apache HTTP Server Version 2.4), however the server I’m running this on is on a version that doesn’t. So I’ll need to update that. I’ll admit I’m new to using websockets, so I hadn’t considered the websocket tunneling. Looks like I have more reading to do.

Fixing these will be good and I’ll get back to you when I get apache updated and have tried fixing this configuration, but I was just taking a step back and thinking about what I want to accomplish with bokeh. Do you think I’m approaching this correctly?

Creating and embeding an interactive plot with bokeh has great documentation, and I’ve been able to do that no problem. I’m having a harder time finding up to date documentation for creating and embeding an interactive plot that will continue to plot data points as they are generated (much like this example from the continuum blog when v0.3 was coming out: http://continuum.io/blog/painless_streaming_plots_w_bokeh). Development for bokeh seems to be moving rapidly, which is awesome, but examples I find (like that link) are often on older versions of bokeh. So I’m sort of feeling around for the best way to do this and exposing bokeh-server with an apache ProxyPass has gotten me the most progress so far. If there are any examples or documentation that I seemed to have missed, can you point them out?

Thanks again,
-Brian

···

On Friday, January 2, 2015 12:09:00 AM UTC-5, Hugo Shi wrote:

1.  can you take a look at the javascript console and tell us what

you see(if there are any errors?)

2.  Does Apache support web socket forwarding?  If not, then there

might be some other problems you will run into there

On 01/01/2015 11:44 PM, Brian K wrote:

Hi,

    I'm working on a small web application that will use bokeh and

bokeh-server to plot data from a set of logs that will be
continually updating. I have the application working great
locally, as data is added to the logs bokeh updates the plots
without any need to reload the plot or page. However, I’m having
trouble as I try to deploy this to a website as an embeded plot.

    I have bokeh-server running with the default parmeters, so I'm

trying to use apache to ProxyPass http://127.0.0.1:5006/ to a
subdomain, bokeh.example.com, configured as shown below.

    <VirtualHost *:80>

        ServerName [bokeh.example.com](http://bokeh.example.com)

        ServerAlias [www.bokeh.example.com](http://www.bokeh.example.com)

        ProxyPreserveHost on

        ProxyPass / [http://127.0.0.1:5006/](http://127.0.0.1:5006/)

        ProxyPassReverse / [http://127.0.0.1:5006/](http://127.0.0.1:5006/)

    </VirtualHost>



    This appears to be working, however, all I get is the top menu

bar which says “Bokeh Documents for defaultuser” and has a
button to logout. (Cropped screenshot here:
http://imgur.com/lkpYPyW,0tCXbXc)

    This is different from what I expect, which is to see several

menus below that top bar with text corresponding to any
previously run examples. I expect this as this is the local
behavior on http://localhost:5006/bokeh/ . (Screenshot here:
http://imgur.com/lkpYPyW,0tCXbXc#1 ) So I think the errors are
occuring in passing it through the proxy.

    If I look at [bokeh.example.com/bokeh/userinfo/](http://bokeh.example.com/bokeh/userinfo/) I can see the doc

that exists for the line example. Then I can grab the doc id and
navigate to bokeh.example.com/bokeh/doc/example-doc-id-here and
it prints a ton of plain-text which has all the data to be
displayed.

    So, I feel close to getting this to work and feel like this is

one of the last steps to getting an embeded plot served by
bokeh-server. Any suggestions as to what may be going wrong
would be great. If there is a better way to run the server
rather than with the ProxyPass I’m all ears too. It seems the server
documentation
is still in the works. I’m working on a
write-up for how to set this up and would be happy to contribute
to some documentation when I’m done.

    Thanks,

    -Brian

  You received this message because you are subscribed to the Google

Groups “Bokeh Discussion - Public” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to [email protected].

  To post to this group, send email to [email protected].

  To view this discussion on the web visit [https://groups.google.com/a/continuum.io/d/msgid/bokeh/14125644-49f3-465a-9f22-e309fe022d3b%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/14125644-49f3-465a-9f22-e309fe022d3b%40continuum.io?utm_medium=email&utm_source=footer).

  For more options, visit [https://groups.google.com/a/continuum.io/d/optout](https://groups.google.com/a/continuum.io/d/optout).