JupyterHub Traefik Proxy

An implementation of the JupyterHub proxy api with traefik : an extremely lightweight, portable reverse proxy implementation, that supports load balancing and can configure itself automatically and dynamically.

Why traefik?

Currently, the default proxy implementation for JupyterHub is configurable-http-proxy (CHP), which stores the routing table in-memory. This might be the best approach in most of the cases, but because you can only run a single copy of the proxy at a time, it has its limitations when used in dynamic large scale systems.

When using a proxy implementation based on traefik, you can run multiple instances of traefik by using a distributed key-value store like etcd or consul to store the routing table. This makes the proxy highly available and improves the scalability and stability of the system. Moreover it offers HTTPS support through a straight-forward ACME (Let’s Encrypt) configuration.

There are three versions for the proxy, depending on how traefik stores the routes:

  • for smaller, single-node deployments:
    • TraefikTomlProxy

  • for distributed setups:
    • TraefikEtcdProxy

    • TraefikConsulProxy

Indices and tables