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 : https://github.com/voila-dashboards/voila/issues/112

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?

Thanks!

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 https://mybinder.org/v2/gh/fastai/bear_voila/master 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: