Can I make a livebook public?

Hello,

I have an Elixir library that I’d like to create interactive documentation for. I saw livebook and thought it would be a perfect fit. I am curious if its possible to write said documentation and then be able to create a sharable version of it that can be accessed by anyone.

I launched livebook via fly.io and did a little test page and then shared it. I opened it up on my phone and it asked me to authenticate.

Is my thinking off base to think that a livebook could be something like https://readme.com/ but with inline elixir code evaluation?

If you don’t mind that I install my dogecoin miner on the server, do it. :wink:

so is the whole point of livebook to be a private collaboration tool?

You have to trust all people using it.
Livebook in a sandbox would be cool, but there is no Elixir sandbox (that I know of).

1 Like

would something like a sandbox be possible so a public livebook could be a thing?

Please do not ping the core team, there are a lot of people here, that can answer this question.

1 Like

edited

Afaik not. Not in a way that would make your Livebook secure. As code input is executed at the server, there is no way to prevent malicious code from running on it.

There are a few threads at this forum about sandboxing Elixir; there you’ll find explanations why it can’t be done (typing at mobile so hard to link)

Livebook seems to have its uses for sharing code snippets and working collaboratively on something, but be careful about opening it up to anyone as it exposes lots of security risks.

A Livebook notebook session is opening access to whatever server/computer the Livebook application is running on. When running in prod mode (highly recommended) anyone with a valid token authentication can use Elixir functions to inspect the filesystems, environment variables, run other programs, and create remote connections to other servers
source

The sharing part of livebook are not the instances but the files. As others have mentioned sharing the runtime in a secure way is simply not feasable.

2 Likes

The idea currently would be, that you create a liveview page and that people having access to a (their own) livebook server execute and play with it in there.

2 Likes

There was a discussion somewhere here about elixir running in browser. Maybe that could be a potential solution?

Edit: something like this JupyterLite: Jupyter ❤️ WebAssembly ❤️ Python | by Jeremy Tuloup | Jupyter Blog

From the readme

  • Decentralized: Livebook is open-source and you can run it anywhere. The “Run in Livebook” badges makes it easy to import any Livebook into your preferred Livebook instance.
2 Likes

@jonericcook Definitely a fair question - something I am also wondering as I take my first look at livebook. It is pretty cool, and I was hoping to use it to publicly document one of my personal projects. I thought it might be possible to “publish” a livebook so that there was no editing access available to the code cells and they could just be executed…

EDIT

Just thought about this more on my way morning trip to the supermarket and realised that I missed the point of livebook in this situation (thinking more about the decentralised comment above). Of course you can document your own project, the documentation can live with the repo rather than being published to a central location.

Having a published public view of course introduces access roles and other authentication.