Running voilà on Binder?

Hi all,

I am trying to understand how a “binderized voilà” service integrated with a Gitlab instance could work.

My use case would be to allow users of a Gitlab instance to create public, unauthenticated dashboards/apps from a (possibly) private source code repository, with a customizable/flexible environment as provided by binder.

I’m not certain how to do this, my initial guess would be to try to deploy a BinderHub instance that would launch one voilà server per (user/repo spec) pair instead of the usual jupyter server. Is that a valid approach or should I consider other options?

So far I found this issue on the topic of running voilà on JupyterHub and offering public deployments :

For the deployment described above, what are the missing parts? Would a ‘voila-singleuser’ (as mentioned by @yuvipanda on the ticket) bring me closer to a solution? If so, what would be a rough sketch of the implementation?

Am I missing some understanding of voila as well? Given that I would run the voila instances in containers using a BinderHub instance, arbitrary code execution is of little concern to me (and that’s one of the motivations behind Voilà, right?) ; however, I’d like to avoid source code leaks. Am I missing a simpler solution?


1 Like

Not sure if related but I saw a tweet by Jeremy Howard on running voila on my binder

Hi @raybellwaves, thanks a lot for your answer!

This is almost, but not quite, what I would like to deploy. The main issue here being that mybinder will run the full Jupyter server + notebook, and I would like either a binder that only runs public, unauthenticated Voilà instances (no notebook server, no way to fetch source or send arbitrary execution commands), or a binder where the Voilà part is public/unauthenticated and the Jupyter notebooks are only accessible to authenticated users.

(you can check that the sources are accessible at and my use case calls for possibly private source code)

Thanks again

1 Like

It looks like the discussion here relates to what you are hoping to do. I don’t know if the documented approach ends up meeting all your needs as the one I quote below seems to be a high bar: