diff --git a/lib/livebook/notebook/explore/distributed_portals_with_elixir.livemd b/lib/livebook/notebook/explore/distributed_portals_with_elixir.livemd index 2d369f8ce..c752be782 100644 --- a/lib/livebook/notebook/explore/distributed_portals_with_elixir.livemd +++ b/lib/livebook/notebook/explore/distributed_portals_with_elixir.livemd @@ -684,8 +684,9 @@ Node.list(:hidden) Much better! We see one node, which is the Livebook server itself. Now there is one last piece of the puzzle: in order for nodes to connect to each -other, they need to have the same cookie. We can read the cookie of our current -notebook runtime like this: +other, they need to have the same cookie. The cookie serves as a very simple +authentication mechanism. We can read the cookie of our current notebook runtime +like this: ```elixir Node.get_cookie() @@ -756,9 +757,9 @@ Portal code has been defined in this notebook but it is not available in the other notebook. If we were working on an actual Elixir project, this issue wouldn't exist, because we would start multiple nodes on top of the same codebase with the same modules, but we can't do so here. -To work around this, let's simply copy the cell that define the -`Portal.Door` module into the other notebook and execute it. Now we should -be able to shoot a door in the other node: +To work around this, you should simply copy the cell that define the +`Portal.Door` module from this notebook into the other notebook and +execute it. Now we should be able to shoot a door in the other node: diff --git a/lib/livebook/notebook/explore/vm_introspection.livemd b/lib/livebook/notebook/explore/vm_introspection.livemd index 48ebe47c4..bdcdfb336 100644 --- a/lib/livebook/notebook/explore/vm_introspection.livemd +++ b/lib/livebook/notebook/explore/vm_introspection.livemd @@ -24,27 +24,27 @@ alias VegaLite, as: Vl ## Connecting to a remote node -This time we will connect to a running node manually instead of -injecting Livebook there, because we may not want to run `Mix.install/1` -inside it. This will also give you a better idea of how you can -inspect a remote node in general. +While Livebook can run a notebook directly inside a remote node, +this time we will connect to a running node manually to minimize +the impact in the remote system. This will also give you a better +idea of how you can inspect a remote node in general. The first thing we need is a separate Elixir node. For this example, -you can do so by opening up [a new notebook](/explore/notebooks/new), since Livebook -automatically starts each notebook as a remote node. +you can do so by opening up [a new notebook](/explore/notebooks/new), +since Livebook automatically starts each notebook as a remote node. In practice, you may want to start an existing Elixir system, such as by running the following in your production app: ``` -elixir --sname my_app -S mix TASK +elixir --name my_app@IP -S mix TASK ``` Or by connecting to a production assembled via [`mix release`](https://hexdocs.pm/mix/Mix.Tasks.Release.html). -Once you start a new notebook, you can find the node name -and cookie by running this: +Once you start a new notebook, you can find its node name and +cookie by running the following inside an Elixir cell: @@ -53,12 +53,15 @@ IO.puts node() IO.puts Node.get_cookie() ``` -Now, let's paste these in the inputs below: +Now, paste these in the inputs below: +And now execute the code cell below, which will read the inputs, +configure the cookie, and connect to the other notebook: + ```elixir node = IO.gets("Node: ")