[IPython-dev] Jupyterhub behind NGINX redirect

Doug Blank doug.blank at gmail.com
Sun Oct 12 09:44:10 EDT 2014

On Sun, Oct 12, 2014 at 1:35 AM, Clare Sloggett <claresloggett at gmail.com>
> Hi all,
> Am I right in thinking this list is also the right place for questions
about Jupyterhub?
> I'm trying to set up Jupyterhub for multiple users, on the same server
where we are running several other services. Currently there are NGINX
redirects in place to these other services. I'd like to set up
to redirect to a port on localhost and run Jupyterhub over that port. Is
this possible?
> I've got this working in the past with single-user IPython Notebook. For
that, I set config options c.NotebookApp.base_project_url,
c.NotebookApp.base_kernel_url, and c.NotebookApp.webapp_settings to be
aware of the ipython/ URL prefix. We used an NGINX redirect to forward
requests and handle websockets properly, which looked like
> location /ipython/ {
>     proxy_pass;
>     proxy_set_header Host $host;
>     proxy_set_header X-Real-IP $remote_addr;
>     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>     proxy_set_header Upgrade $http_upgrade;
>     proxy_set_header Connection "upgrade";
>     }
> This worked for the old single-user notebook. But, I'm not clear on the
model Jupyterhub is using (and I'm not much of a sysadmin). I read through
the command-line options, thought from them that I don't need to strip the
/ipython/ from the incoming requests, and have tried using a similar
redirect to the above and setting --JupyterHubApp.base_url='ipython/' and
also setting --port 9510. This does seem to see the incoming requests but
results in amusing requests like
> 500 GET
> ... so clearly I haven't understood what's going on. Does anyone have any
pointers on how this should work? I haven't read any docs other than the
README and the command-line parameter information, so apologies if there's
something obvious that I didn't look at.
> I'm also interested in running Jupyterhub as a daemon, so if that's
something that's been done before and there's anything I should know, that
would be great.

There is one other document, other than the README.md and the reported
issues [1]:


Despite the warning at the top of that page, you can make jupyterhub work
on some systems (eg, Linux, such as Ubuntu) using sudo, but not as root. I
suspect that this would be the recommended setup when jupyterhub is
complete. One recent change is the ability to save/load state from a
database. The wiki page above hasn't been updated with the note from this


It might be easier to start without NGINX, and then add it after you have a
working jupyterhub system. It would be nice to have a little bash script to
make this a "service" that would support "start", "top", and "status"...
but I haven't had time. Currently, we're just becoming the non-root sudoer
("rhea" in the docs) and starting the server, something along the lines:

jupyterhub --LocalProcessSpawner.set_user=sudo
--JupyterHubApp.ip= --JupyterHubApp.port=80
--db='sqlite:///:memory:' &>> /var/log/jupyterhub/log &

The next step for us is to get it running under https... looks like others
have blazed that trail, so it looks possible.

If you have success, it would be great to add to the wiki docs... I suspect
that many of us that aren't sys admins will be wanting to get this up and


[1] - https://github.com/jupyter/jupyterhub

> Any help much appreciated!
> Clare
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20141012/9a2c4936/attachment.html>

More information about the IPython-dev mailing list