on master help sign in
Merge pull request #466 from zalberico/master

docs: add cloud hosting docs

commit35177de363a23b22e572e83cf20394b6bbe4ae4c authormatildepark <matilde@tlon.io> dateThu 3 Sep 2020, 17:19 (6 years ago) parent50202e8d59a66f
5 files changed+228−335
content/using/develop.md+1−1 content/using/install.md+50−300 content/using/operations/creating-a-comet.md−33 content/using/operations/hosting.md+176 content/using/operations/using-your-ship.md+1−1
content/using/develop.md+1−1
@@ -14,7 +14,7 @@ This guide will start by getting you set up to run an Urbit ship, and then tell
1414
1515We assume you’ve gotten a basic introduction to Urbit. If you haven’t, read the [Understanding Urbit](@/understanding-urbit/_index.md) series.
1616
17−Once you’re ready, you can get started on the network right away and take some first steps, without acquiring an identity, by [creating a comet](@/using/operations/creating-a-comet.md).
17+Once you’re ready, you can get started on the network right away and take some first steps, without acquiring an identity, by [creating a comet](@/using/install.md#comet).
1818
1919When developing, however, we recommend [booting a development ship](#creating-a-development-ship) and working locally -- you may need to make changes that could, in the wrong hands, destroy the ship’s environment, and it’s best to do so in a safe, separate place.
2020
content/using/install.md+50−300
@@ -8,35 +8,29 @@ aliases = ["/docs/getting-started/"]
88
99Urbit is not yet ready for everyday users — but if you're technically inclined or generally intrepid, feel free to try it out. It's a good place to explore.
1010
11−In order to get going on the network, you'll need an [Urbit ID](#id). To try the live network out with a disposable identity, you can always [create a comet](@/using/operations/creating-a-comet.md).
12−
1311## Overview
1412
1513There are two major components of the Urbit ecosystem: **Urbit OS** and **Urbit ID**.
1614
17−The the Urbit peer-to-peer (p2p) network is composed of instances of Urbit OS -- callled **ships** -- that are virtual machines that run on any Unix platform.
15+The the Urbit peer-to-peer (p2p) network is composed of instances of Urbit OS -- called **ships** -- that are virtual machines that run on any Unix platform.
1816
19−Urbit works as a p2p network where others fail because ships are associated with persistent and scarce identities that we refer to as Urbit IDs. The Urbit ID registry is deployed on the Ethereum blockchain, and individual IDs exist as non-fungible ([ERC-721](https://eips.ethereum.org/EIPS/eip-721)) tokens in that cryptographic ecosystem that chain. While Urbit ID is the essential crytopgraphic foundation to the functioning of the Urbit network, it has uses far beyond that. It can be used as general-purpose identity infrastructure for any other project.
17+Urbit works as a p2p network where others fail because ships are associated with persistent and scarce identities that we refer to as Urbit IDs. The Urbit ID registry is deployed on the Ethereum blockchain, and individual IDs exist as non-fungible ([ERC-721](https://eips.ethereum.org/EIPS/eip-721)) tokens.
2018
2119On the network, Urbit IDs function as network addresses, represented by pronounceable names like `~padmyn-pasnux`. There are a few kinds of Urbit ID, but ones meant for typical users are called **planets**. Anyone who has a planet can be thought of as a full "citizen" of the Urbit network. But to run your ship on the network, you need to start it with a piece of cryptographic information from its Urbit ID. This guide walk you through getting onto Urbit with an ID.
2220
23−But sometimes a user might not want a persistent identity for whatever reason. In that case, they can use Urbit without an Urbit ID by using something called a **comet**. Comets can be spun up at will and for free. They are good for bots and for people who are new to Urbit and want to check out the network, but they aren't good for building a reputation as a friendly and responsible peer. If you want to jump right in with a comet, check out [this](#comet) section.
21+There are also free IDs called **comets**. They are good for bots and people who are new to Urbit and want to check out the network, but they aren't good for building a reputation as a friendly and responsible peer. Their long names make them difficult to remember and some communities ban comets to prevent spam, but they're still a good way to see what Urbit is about before buying your own planet.
2422
2523### Stars and Galaxies
2624
27−In addition to comets and planets, two other types of ships are **stars** and **galaxies**. Together these can be referred to as "supernodes," because they perform essential infrastructural roles for Urbit OS network and for Urbit ID.
25+In addition to comets and planets, two other types of ships are **stars** and **galaxies**. Together these perform essential infrastructural roles for Urbit OS network and for Urbit ID.
2826
29−On the Urbit ID side galaxies, galaxies are at the top of the ID hierarchy, with 256 in existence. Each galaxy can distribute 256 stars, and each star can distribute 65,536 planets. So any given planet ultimately came from a specific star, which itself came from a specific galaxy.
27+On the Urbit ID side, galaxies are at the top of the ID hierarchy with 256 in existence. Each galaxy can distribute 256 stars, and each star can distribute 65,536 planets. So any given planet ultimately came from a specific star, which itself came from a specific galaxy.
3028
3129On the Urbit OS side, stars help route packets, kind of like an ISP. And galaxies are like DNS root servers or ICANN members. The difference is that Urbit IDs are owned cryptographically by many different people and accrue reputation independently.
3230
3331If you're trying to get your star or galaxy set up, skip to [this section](#supernode).
3432
35−## Comet: Install and Setup {#comet}
36−
37−Eager to try out the Urbit network? A comet is the fastest way to get started.
38−
39−### Installing Urbit
33+## Installing Urbit
4034
4135The Urbit binary runs on a Unix-like operating system – Ubuntu, Fedora, or macOS, for example.
4236
@@ -82,9 +76,25 @@ Urbit cannot run on Windows itself, but there is a convenient way to run a Linux
8276
8377Once WSL 2 is installed, open a Linux terminal in Windows and then follow the Linux installation instructions above. For performance reasons, do not install Urbit in the mounted Windows volume, but install it in the Linux file system. For example, in your home directory, by typing `cd ~`.
8478
85−### Booting Your Comet
79+## Launching Urbit
80+
81+Now that you have Urbit installed you can start it up with an ID.
82+
83+If this is your first time using Urbit, it'll be easiest to start with a comet in order to get on the network.
84+
85+### Comet: Install and Setup {#comet}
86+
87+If you don't have your own Planet ID, but still want to try out the Urbit network you can launch a comet.
88+
89+**Comets** are 128-bit or 16 syllable Urbit IDs, that look like:
90+
91+`~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`
92+
93+Comets are disposable, free identities that can be used to quickly join the network and try things out.
94+
95+### Booting a comet
8696
87−To boot a new comet, go into the command line and run the following command from the directory that was created during Urbit installation:
97+To boot a comet, go into the command line and run the following command from the directory that was created during Urbit installation:
8898
8999```sh
90100$ ./urbit -c mycomet
@@ -102,13 +112,13 @@ http: live (insecure, loopback) on 12321
102112~sampel_commet:dojo>
103113```
104114
105−When your ship is finished booting, you will see either the `~sampel_commet:dojo>` or `~sampel_commet:chat-cli/` prompt. If you're seeing `:chat-cli` press `Ctrl-x` to switch into Dojo. At that point, you should permanently erase your keyfile from your machine.
115+When your ship is finished booting, you will see either the `~sampel_commet:dojo>` or `~sampel_commet:chat-cli/` prompt. If you're seeing `:chat-cli` press `Ctrl-x` to switch into Dojo.
106116
107−To exit Urbit, use `Ctrl-d`. To start your ship up again, run `./urbit mycomet` from the directory that you first booted from. Now let's do some basic commands from inside your ship.
117+To exit Urbit, use `Ctrl-d`. To start your ship up again, run `./urbit mycomet` from the directory that you first booted from.
108118
109119### The Dojo
110120
111−Welcome to your comet! Let's try our first command in the Dojo, the Urbit OS command line and Hoon REPL, to get oriented.
121+Let's try our first command in the Dojo, the Urbit OS command line and Hoon REPL, to get oriented.
112122
113123Type `(add 2 2)` into the Dojo. You should see the following:
114124
@@ -134,7 +144,7 @@ The `>=` output means that a command was successful. Now you can see your ship's
134144
135145### Using Landscape
136146
137−Landscape is the Urbit web interface, and it's the best way to interact with your ship. Chrome and Brave are the recommended browsers for using Landscape. To get onto Landscape:
147+Landscape is the Urbit web interface, and it's the best way to interact with your ship. Chrome, Firefox, and Brave are the recommended browsers for using Landscape. To get onto Landscape:
138148
1391491. Start your ship. In the boot messages, look for a line that says something like `http: live (insecure, public) on 80`. The number given is the port that your ship is using.
1401502. If the port given is 80, simply type `localhost` into your browser's address bar. If the given port is a different number, such as `8080`, you would type `localhost:8080`. You'll be met with a login prompt.
@@ -149,26 +159,20 @@ Click that `Chat` type on your Landscape home page, and then click the `Join Cha
149159
150160You can send and receive messages here, just like any other chatroom.
151161
152−### Make a Note
153−
154−Navigate back to your Landscape homepage. Typing `localhost` (or the correct equivalent) into your search bar does the trick.
155−
156−Then click the `Publish` tile. Fill the fields as appropriate to make a new Notebook and invite anyone you want to be able to read it as a subscriber. A Notebook can be treated like a blogs, or a public list of notes. One you have made a Notebook, you can start posting entries to it. Navigate back to it at any time by clicking the tile.
157−
158−## Planet Setup {#planet}
159−
160−If you have a planet, you have a full and persistent peer on the Urbit network.
161−
162−### Getting Urbit ID
162+## Getting an Urbit ID (Planet or Star)
163163
164164Tlon doesn't currently sell or distribute Urbit IDs, but there are a few ways to get your own:
165165
166166- Getting an invitation from a friend
167167- Purchasing an Urbit ID from a third party, such as [urbit.live](https://urbit.live), [OpenSea](https://opensea.io), [planet.market](https://planet.market/), or [Urbit Marketplace](https://urbitmarketplace.com/).
168168
169+Note that when you buy a planet you may have to escape its star if the star your planet is linked to isn't operating. Ask around in the `urbit-community` chat as a comet first for help before purchasing.
170+
171+If you already have a planet and need to escape its star, see [Escaping A Sponsor](@/using/operations/using-your-ship.md#escape).
172+
169173Tlon occasionally selects candidates to distribute invitations, and users operating galaxies and stars can spawn and distribute a finite number of stars and planets, respectively.
170174
171−### Using your Urbit ID {#id}
175+### Using your Urbit ID (Planet or Star) {#id}
172176
173177If you have an Urbit ID, you'll use the [Bridge](https://bridge.urbit.org) client to get your ship's *keyfile* before you can [boot your ship](#booting-your-ship). Your keyfile is a cryptographic secret that allows your Urbit instance to authenticate itself on the network, so you can't boot your planet without it. Your keyfile is deterministically derived from your other cryptographic secrets.
174178
@@ -176,13 +180,13 @@ If you have an Urbit ID, you'll use the [Bridge](https://bridge.urbit.org) clien
176180
177181Your Urbit ID is actually yours. As long as you control its cryptographic secrets, nobody can take it away from you. That's why it's important to know a little bit about the cryptographic architecture of Urbit secrets.
178182
179−Urbit ID secrets operate as a system of separate but hierarchically realted Ethereum key-pairs. For any given ID, this system of key-pairs is referred to as a **Hierarchical Deterministic (HD) Wallet**. the Urbit HD wallet. Each of these Ethereum addresses have different powers over the same identity, from setting networking keys for communicating in the Urbit network to transferring ownership of identities. Important elements of the HD wallet:
183+Urbit ID secrets operate as a system of separate but hierarchically related Ethereum key-pairs. For any given ID, this system of key-pairs is referred to as a **Hierarchical Deterministic (HD) Wallet**. the Urbit HD wallet. Each of these Ethereum addresses have different powers over the same identity, from setting networking keys for communicating in the Urbit network to transferring ownership of identities. Important elements of the HD wallet:
180184
181−- **Master Ticket**: The "password" at the top of the hierarchy that determines the ownership. All other secrets are derived from this. If the rest of the wallet is lost or compromised, the master ticket can rederive everything. You'll log into Bridge with this. Always keep your master ticket extremely safe.
185+- **Master Ticket**: The "password" at the top of the hierarchy that determines the ownership. All other secrets are derived from this. If the rest of the wallet is lost or compromised, the master ticket can derive everything. You'll log into Bridge with this. Always keep your master ticket extremely safe.
182186
183187- **Management Proxy**: Derived from the master ticket. Can perform non-ownership related operations such as configuring Urbit OS networking keys.
184188
185−- **Keyfile**: Derived from the management proxy. Used as crytographic proof that your Urbit ship it is who it says it is. You use it to start up your ship for the first time.
189+- **Keyfile**: Derived from the management proxy. Used as cryptographic proof that your Urbit ship is who it says it is. You use it to start up your ship for the first time.
186190
187191### Getting Your Keyfile {#keyfile}
188192
@@ -193,151 +197,15 @@ As mentioned previously, there are a few ways to acquire a planet. All methods,
1931973. Once you're logged in, click the `OS` option.
1941984. In resulting page, click the `Download Arvo Keyfile` button. You should receive a `.key` file that contains the secret needed to boot your ship. Hold on to this file.
195199
196−## Installation
197−
198−There are two supported ways of running an Urbit ship: using a [cloud service](#cloud), or running it [locally on your own machine](#local). We recommend using a cloud service for Urbit because it will likely be more reliable than running it locally and allows your ship to be easily accesed from anywhere, without worrying about forwarding ports to and from your home router or your Internet service provider blocking traffic on the default HTTP port. Using a cloud service costs money and has a more involved setup process, but it's more convenient to use than a local install.
199−
200−A cloud service that we like is DigitalOcean, so we give instructions for running Urbit on that service in the section below.
201−
202−If you use Amazon Web Services instead, take note: putting a swap file on Amazon's Elastic Block Store does not work well, and will likely result in your Urbit becoming unresponsive when it tries to access swapped memory. With Amazon instances, swap should only be used on [Instance Stores](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html).
203−
204−### Option A: DigitalOcean {#cloud}
205−
206−DigitalOcean, a cloud hosting platform, is a good option for hosting an Urbit ship.
207−
208−#### Registration
209−
210−Navigate to https://www.digitalocean.com/ and sign up with your email address. You'll need to add a credit cart or a PayPal to start an account. The final part of the registration process involves choosing what we're trying to get online. Simply choose "Ubuntu server." You'll be asked to create a special password for your "Droplet"; remember it. It's different from your DO account password, and it's used to access your Droplet remotely.
211−
212−The default resources you'll be given with your Droplet is 1 GB of memory, 1 CPU, and 25 GB of storage for 5 USD per month. It must be noted that Urbit ships require at least 2GB of memory to be present, so you'll either need to upgrade your DO Droplet or set up swap space.
213−
214−#### Resizing Your Droplet
215−
216−If you're willing to spend a little bit of extra money, this is the easiest method for getting your Urbit online and running smoothly.
217−
218−An Urbit instance needs 2GB of memory available -- it doesn't need to use all of it, it just needs know that it's there. This memory is in addition to anything that the operating system and other processes require.
219−
220−1. On the sidebar, click `Droplets`.
221−2. There should one option with a name that looks like `ubuntu-s-1vcpu-1gb-nyc1-01`. Click on the the `More`, and on the resulting dropdown menu click `Resize Droplet`.
222−3. On the resize page there is an `On` button for your Droplet. Click it off.
223−4. Make sure the `CPU and RAM only` category is selected. Then scroll down and select the option that provides 3 GB of memory. This will bump your fee to 15 a months
224−5. Turn your Droplet back on.
225−
226−Now you can continue onto installing the Urbit software on your Droplet.
227−
228−#### Setting Up Swap Space
229−
230−If you've set up a Droplet to have more than 2 GB of memory, skip this section.
231−
232−Alternatively, if you don't want to pay the extra money, you can configure swap space to run on a smaller DO instance. Digital Ocean has a post on adding swap [here](https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04) that will walk you through the process. Once you've completed, you can continue to installing Urbit on your Droplet.
233−
234−#### Installing Urbit On Your Droplet
235−
236−Let's access your Droplet by using SSH, which is a secure protocol for using a remote computer.
237−
238−1. Find your Droplet's IP address on your DigitalOcean account. It will be under the `Droplets` option on the `Manage` sidebar. Copy the IP address and keep it handy.
239−2. Open you local computer's terminal. Then run the SSH command, which has the syntax `ssh root@1.2.3.4`, where `1.2.3.4` is the IP address that you copied. Your Droplet's default name is `root`, but this can be changed.
240−3. You'll be prompted with a password. Enter the one that you set earlier. If you see a block of messages beginning with something like `Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)` and ending with something like `root@ubuntu-s-1pvcu-1gb-nyc1-01:`, you're in!
241−
242−Now that you're inside your Droplet, you'll want to install the Urbit binary. Run the following commands:
243−
244−```sh
245−curl -O https://bootstrap.urbit.org/urbit-v0.10.8-linux64.tgz
246−tar xzf urbit-v0.10.8-linux64.tgz
247−cd urbit-v0.10.8-linux64
248−./urbit
249−```
250−
251−If you see a block of messages beginning with `Urbit: a personal server operating function`, then you've successfully installed the Urbit software, and it's time to copy your keyfile that from your local machine, the one that ends in `.key` that you got from the [Getting Your Keyfile](#keyfile) instructions. Open it with a text editor and keep it handy so you can copy it. Then return to the terminal window that's running your Droplet.
252−
253−Now, on your Droplet, you'll want to use a Linux functionality called Scree. Screen is used to create virtual terminals (windows) to run persistent processes in the same remote session, so we don't have to close those processes whenever we want to do other things on our Droplet. This makes Screen perfect for running a remote Urbit ship.
254−
255−To start Screen, enter
256−
257−```
258−screen
259−```
260−
261−You'll be met with some copyright information. Hit enter or return to move past this info. Once you're inside Screen, you use `Ctrl-a` to tell it that you're about to enter a command. Screen is controlled through keyboard shortcuts. Here are some useful ones to be run inside a Screen:
262−
263−- To create a new Screen window, enter `Ctrl-a` and then `c`.
264−- To exit a Screen window and go back to your regular Droplet terminal ("Detach" it), enter `Ctrl-a` and then `d`.
265−- To see all Screen shortcuts, enter `Ctrl-a` and then `?`.
266−
267−There are a few useful Screen commands that can be run from your regular Droplet terminal.
268−
269−- To see all running Screen windows, enter `screen -ls`. This is useful if you're not sure if you're inside a Screen window; if you are, it will show a window as "Attached". (Note that you'll only ever need one screen for the purposes of hosting an Urbit remotely)
270−- To return to the Screen window that you made ("Attach" it), enter `screen -r`.
271−- To delete *all* Screen windows, enter `killall screen`.
272−
273−Now, let's put this information to use to boot your Urbit ship in a Screen window.
274−
275−1. Enter `cd urbit-v0.10.8-linux64` to change your directory to the folder containing the Urbit binary.
276−2. Enter `screen -ls`. If you get anything but a message like `No Sockets found in /run/screen/S-root.`, run `killall screen` to wipe the slate clean.
277−3. Enter `screen` and skip past the information. You're in an attached Screen window now; enter `screen -ls` to verify this.
278−4. Open your keyfile on your local machine and copy the contents. On the Screen in your Droplet, enter `./urbit -w sampel-palnet -G rAnDoMkEy`, where `rAnDoMkEy` is the copied contents of the keyfile.
279−
280−Your ship should be booting, and displaying a series of boot messages starting with `urbit 0.10.8`. A directory called `sampel-palnet/` and begin building your ship. It may take a few minutes.
281−
282−When your ship is finished booting, you will see either the `~sampel-palnet:dojo>` or `~sampel-palnet:chat-cli/` prompt. If you're seeing `:chat-cli` press `Ctrl-x` to switch into Dojo. At that point, you should permanently erase your keyfile from your machine.
283−
284−To shut down your ship, use `Ctrl-d`. Since you're running, you won't have much reason to do this often, since you should always have it running in your Droplet. More frequently you'll want to use `Ctrl-a` and then `d` to go back to your Droplet's command line while keeping your planet running on a detached Screen. Then, to return to your ship, run `screen -r`.
285−
286−If you need to shut down your ship, start it up again by running `./urbit sampel-palnet/` from the directory where your Urbit binary is saved. Note that in this usage, `sampel-palnet/` is the path of a folder, which by default is located in the same folder as the Urbit binary. This folder is called your ship's **pier**.
287−
288−Never boot multiple instances of your ship at the same time. You can prevent this from happening accidently by only ever keeping a single copy of your pier.
289−
290−Now you're ready to explore the network and make your ship easily accessible from a remote browser. Jump to the [System Administration](#admin) section to do so.
291−
292−### Option B: Local Installation {#local}
200+## Hosting
293201
294−You can run an Urbit on your laptop, your desktop, or an old tower in your closet. There are fewer steps than installing it on a cloud service, but it won't be as slick of an experience in the long run.
202+There are two supported ways of running an Urbit ship: using a cloud service, or running it locally on your own machine. Most users run things locally at first, but we recommend eventually using a cloud service for Urbit because it allows your ship to be accessed from anywhere on multiple devices. Hosting your ship in the cloud also allows it to always be online and ready for OTA updates. It's technically possible to run your Urbit ship on a home server, but ISPs often restrict this to business plans and opening up your home network to the internet can be unsafe if done improperly.
295203
296−The Urbit binary runs on a Unix-like operating system. We have different installation instructions for different platforms. To install and run Urbit OS, the Urbit OS and its binary, run the commands that are listed for your operating system.
204+We have a guide for [hosting your ship on DigitalOcean](@/using/operations/hosting.md) which we've found works well, but any cloud hosting service should work.
297205
298−Once you've followed the appropriate install instructions, you can check if everything went right by running the `./urbit` command. Installation was successful if you get a block of output that begins with the line below:
299−
300−```
301−Urbit: a personal server operating function
302−```
303−
304−#### macOS
305−
306−```sh
307−curl -O https://bootstrap.urbit.org/urbit-v0.10.8-darwin.tgz
308−tar xzf urbit-v0.10.8-darwin.tgz
309−cd urbit-v0.10.8-darwin
310−./urbit
311−```
312−
313−#### Linux (64-bit)
206+### Booting Your Planet
314207
315−```sh
316−curl -O https://bootstrap.urbit.org/urbit-v0.10.8-linux64.tgz
317−tar xzf urbit-v0.10.8-linux64.tgz
318−cd urbit-v0.10.8-linux64
319−./urbit
320−```
321−
322−To access your Urbit via HTTP on port 80 on Ubuntu, you may need to run the following:
323−
324−```sh
325−sudo apt-get install libcap2-bin
326−sudo setcap 'cap_net_bind_service=+ep' /path/to/urbit
327−```
328−(Where `urbit` is the urbit executable downloaded with `curl` prior)
329−
330−#### Windows
331−
332−Please note that this method of installing Urbit is more experimental, and we may not be able to assist you if you encounter issues related to WSL 2, but these instructions have been tested and verified for WSL 2 + Ubuntu 18.04 LTS.
333−
334−Urbit cannot run on Windows itself, but there is a convenient way to run a Linux distro using the [Windows Subsystem for Linux 2](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux), an initiative by Microsoft to bring Linux to Windows 10. For Urbit to work, it is necessary to [install WSL 2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-install) and not just WSL, since version 2 uses virtualization and the real Linux kernel under the hood.
335−
336−Once WSL 2 is installed, open a Linux terminal in Windows and then follow the Linux installation instructions above. For performance reasons, do not install Urbit in the mounted Windows volume, but install it in the Linux file system. For example, in your home directory, by typing `cd ~`.
337−
338−### Booting Your Ship Locally
339−
340−Now the rubber meets the road. You'll be booting your ship with the keyfile that you downloaded from Bridge [earlier in this document](#id).
208+You'll be booting your ship with the keyfile that you downloaded from Bridge [earlier in this document](#id).
341209
342210Note that this section is only for booting a ship that uses the live Urbit network.
343211
@@ -368,59 +236,13 @@ Or, if you'd prefer to copy your key in, you can run:
368236
369237Either command will create a directory called `sampel-palnet/` and begin building your ship. It may take a few minutes.
370238
371−When your ship is finished booting, you will see either the `~sampel-palnet:dojo>` or `~sampel-palnet:chat-cli/` prompt. If you're seeing `:chat-cli` press `Ctrl-x` to switch into Dojo.
372−
373−**Important:** once a key has been used to boot a ship onto the network, it cannot be used to boot that ship again later - doing so will cause communication problems with other ships. For this reason you should **delete the keyfile from your machine once your ship has booted successfully**. (If you do use the same key twice, you'll need to conduct a [personal breach](#breaches) to restore your ship to full functionality).
239+When your ship is finished booting, you will see either the `~sampel-palnet:dojo>` or `~sampel-palnet:chat-cli/` prompt. If you're seeing `:chat-cli` press `Ctrl-x` to switch into Dojo. At that point, you should permanently erase your keyfile from your machine.
374240
375241To shut down your ship, use `Ctrl-d`. To start your ship up again, run `./urbit sampel-palnet/` from the directory where your Urbit binary is saved. Note that in this usage, `sampel-palnet/` is the path of a folder, which by default is located in the same folder as the Urbit binary. This folder is called your ship's **pier**, and you can put it wherever you like.
376242
377243Never boot multiple instances of your ship at the same time. You can prevent this from happening on accident by only ever keeping a single copy of your pier.
378244
379−## System Administration {#admin}
380−
381−Welcome to your ship. Let's start exploring.
382−
383−
384−### The Dojo
385−
386−Let's try our first command in the Dojo, the Urbit OS command line and Hoon REPL, to get oriented.
387−
388−Type `(add 2 2)` into the Dojo. You should see the following:
389−
390−```
391−~sampel-palnet:dojo> (add 2 2)
392−```
393−
394−When you press Enter, you should see this:
395−
396−```
397−> (add 2 2)
398−4
399−```
400−
401−Good, your Dojo is working correctly. Now let's run our first useful command in the Dojo. The first thing you generally want to do with a new ship is to **mount** it. A ship being mounted means that it has a presence on your Unix filesystem, allowing files to be shared between Unix and your ship. To mount your ship, type `|mount %` at the Dojo prompt.
402−
403−```
404−|mount %
405−>=
406−```
407−
408−The `>=` output means that a command was successful. Now you can see your ship's files in its Unix directory.
409−
410−### Setting Up DNS {#dns}
411−
412−Landscape is the Urbit web interface, and it's the best way to interact with your ship. Chrome and Brave are the recommended browsers for using Landscape. The best way to access Landscape is to set DNS proxying, so that you can access your ship easily from a web browser on any computer.
413−
414−1. Start your ship. In the boot messages, look for a line that says something like `http: live (insecure, public) on 80`. The number given is the port that your ship is using.
415−2. If the port given is 80, simply type `localhost` into your browser's address bar. If the given port is a different number, such as `8080`, you would type `localhost:8080`. Alternatively, you access landscape by navigating to `sampel-palnet.arvo.network` into your URL bar, where `sampel-palnet` is the name of your ship, without the `~`. You will need to [set up DNS proxying](@/using/operations/using-your-ship.md#dns-proxying) to use this option. To do so, simply run this command in your ship's Dojo: `> -dns-address &dns-address [%if .1.2.3.4]`, where `.1.2.3.4` is the IP address.
416−3. Type `+code` into your ship's Dojo. Copy-paste the returned code into the field asking for it in the browser page.
417−4. You're in! Now you can explore apps such as Chat for messages, Publish for blogging, and Weather.
418−
419−### Joining the community
420−
421−Once you are in Landscape we recommend joining the Urbit Community group. You will need to obtain an invite, which can be had by first joining the `~/~dopzod/urbit-help` chat channel and asking for an invitation from there. This is most likely to succeed quickly during standard US West Coast working hours. Once you have the invite you can accept it by navigating to your Groups by clicking on All Groups in the upper left hand corner of Landscape, then Manage All Groups, and in there you should see an invitation. From this interface you can join the various Chat, Publish, and Link instances contained in the group.
422−
423−You can join `~/~dopzod/urbit-help` from either Landscape or chat-cli. To join from Landscape first click on the Messaging tile on the home screen. Then press Join Chat in the upper left corner and enter `~/~dopzod/urbit-help` into the prompt and press Join Chat. To join from chat-cli, first make sure your console has been switched from Dojo to the `:chat-cli` application by pressing `Ctrl-x`. The prompt will display `~sampel-palnet:chat-cli` if in the correct mode. Then type `;join ~/~dopzod/urbit-help` and press Enter.
245+**Important:** once a key has been used to boot a ship onto the network, it cannot be used to boot that ship again later - doing so will cause communication problems with other ships. For this reason you should **delete the keyfile from your machine once your ship has booted successfully**. (If you do use the same key twice, you'll need to conduct a [personal breach](#breaches) to restore your ship to full functionality).
424246
425247### Updating to the latest binary
426248
@@ -440,7 +262,7 @@ For details on breaching, please read the [Guide to Breaches](@/docs/tutorials/g
440262
441263If you find a bug, please report it as an Issue at https://github.com/urbit/urbit/issues/new/choose. Give as much detail as possible with your bug report so the engineer team can fix it.
442264
443−## Running a Supernode
265+## Running a Star or Galaxy {#supernode}
444266
445267Setting up and running a star or galaxy is a little bit different from setting up and running a planet.
446268
@@ -457,12 +279,10 @@ Galaxies are rare and extremely valuable, meaning that there is no liquid market
457279
458280As mentioned before, stars are valuable. You are solely responsible for safeguarding your seeds and secret keys, and arming yourself with the computer-security knowledge that is attendant upon that safeguarding. You act at your own risk in reliance upon the contents of the manual. In no way is the Tlon Corporation responsible for the actions, decisions, or other behavior taken or not taken by you in reliance upon this manual.
459281
460−It’s a good idea to store your keys redundantly; for example, on both a USB stick and a piece of paper in the safe, in case one of those methods fails. If you deem a key to be valuable enough, you can shard it into thirds and store each third in secure, geographically distributed locations. Consider these storage media options:
461−
462−- Printing the secret on a piece of paper. However, paper wallets are vulnerable to various forms of physical damage, such as rot, water damage, smoke, or fire. Laminating the paper can mitigates some of these risks, but the lamination can potentially trap moisture. Make sure that you trust the printer: some have memory and network connections.
463−- Storing the secret on a brand-new USB stick or hardware wallet (such as a Ledger) that is never connected to a networked machine.
464−- Engraving the secret on a strip of stainless steel. This medium is resistant to both water damage and fire damage.
282+It’s a good idea to store your keys redundantly in case one method fails. If you deem a key to be valuable enough, you can shard it into thirds and store each third in secure, geographically distributed locations. Consider these storage media options:
465283
284+- Storing the secret on a hardware wallet that is never connected to a networked machine.
285+- There are products that let you store the key on steel. This medium is resistant to both water damage and fire damage.
466286
467287### Getting a Star's Keyfile
468288
@@ -473,79 +293,9 @@ It’s a good idea to store your keys redundantly; for example, on both a USB st
473293
474294### Star: Setup And Install
475295
476−Because of their need for near-perfect uptime Stars should use cloud services. We like to use DigitalOcean (DO), and our instructions here support that service.
477−
478−Navigate to https://www.digitalocean.com/ and sign up. You'll need to add a credit cart or a PayPal to start an account. The final part of the registration process involves choosing what we're trying to get online. Simply choose "Ubuntu server." You'll be asked to create a special password for your "Droplet"; remember it. It's different from your DO account password, and it's used to access your Droplet remotely.
479−
480−The default resources you'll be given with your Droplet is 1 GB of memory, 1 CPU, and 25 GB of storage for 5 USD per month. It must be noted that Urbit ships require at least 2GB of memory to be present, so you'll either need to upgrade your DO Droplet.
481−
482−#### Resizing Your Droplet
483−
484−An Urbit instance needs 2GB of memory available -- it doesn't need to use all of it, it just needs know that it's there. This memory is in addition to anything that the operating system and other processes require.
485−
486−1. On the sidebar, click `Droplets`.
487−2. There should one option with a name that looks like `ubuntu-s-1vcpu-1gb-nyc1-01`. Click on the the `More`, and on the resulting dropdown menu click `Resize Droplet`.
488−3. On the resize page there is an `On` button for your Droplet. Click it off.
489−4. Make sure the `CPU and RAM only` category is selected. Then scroll down and select the option that provides 3 GB of memory. This will bump your fee to 15 a months
490−5. Turn your Droplet back on.
491−
492−Now you can continue onto installing the Urbit software on your Droplet.
493−
494−#### Installing Urbit On Your Droplet
495−
496−Let's access your Droplet by using SSH, which is a secure protocol for using a remote computer.
497−
498−1. Find your Droplet's IP address on your DigitalOcean account. It will be under the `Droplets` option on the `Manage` sidebar. Copy the IP address and keep it handy.
499−2. Open you local computer's terminal. Then run the SSH command, which has the syntax `ssh root@1.2.3.4`, where `1.2.3.4` is the IP address that you copied. Your Droplet's default name is `root`, but this can be changed.
500−3. You'll be prompted with a password. Enter the one that you set earlier. If you see a block of messages beginning with something like `Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)` and ending with something like `root@ubuntu-s-1pvcu-1gb-nyc1-01:`, you're in!
501−
502−Now that you're inside your Droplet, you'll want to install the Urbit binary. Run the following commands:
503−
504−```sh
505−curl -O https://bootstrap.urbit.org/urbit-v0.10.8-linux64.tgz
506−tar xzf urbit-v0.10.8-linux64.tgz
507−cd urbit-v0.10.8-linux64
508−./urbit
509−```
510−
511−If you see a block of messages beginning with `Urbit: a personal server operating function`, then you've successfully installed the Urbit software, and it's time to copy your keyfile that from your local machine, the one that ends in `.key` that you got from the [Getting Your Keyfile](#keyfile) instructions. Open it with a text editor and keep it handy so you can copy it. Then return to the terminal window that's running your Droplet.
512−
513−Now, on your Droplet, you'll want to use a Linux functionality called Scree. Screen is used to create virtual terminals (windows) to run persistent processes in the same remote session, so we don't have to close those processes whenever we want to do other things on our Droplet. This makes Screen perfect for running a remote Urbit ship.
514−
515−To start Screen, enter
516−
517−```
518−screen
519−```
520−
521−You'll be met with some copyright information. Hit enter or return to move past this info. Once you're inside Screen, you use `Ctrl-a` to tell it that you're about to enter a command. Screen is controlled through keyboard shortcuts. Here are some useful ones to be run inside a Screen:
522−
523−- To create a new Screen window, enter `Ctrl-a` and then `c`.
524−- To exit a Screen window and go back to your regular Droplet terminal ("Detach" it), enter `Ctrl-a` and then `d`.
525−- To see all Screen shortcuts, enter `Ctrl-a` and then `?`.
526−
527−There are a few useful Screen commands that can be run from your regular Droplet terminal.
528−
529−- To see all running Screen windows, enter `screen -ls`. This is useful if you're not sure if you're inside a Screen window; if you are, it will show a window as "Attached". (Note that you'll only ever need one screen for the purposes of hosting an Urbit remotely)
530−- To return to the Screen window that you made ("Attach" it), enter `screen -r`.
531−- To delete *all* Screen windows, enter `killall screen`.
532−
533−Now, let's put this information to use to boot your Urbit ship in a Screen window.
534−
535−1. Enter `cd urbit-v0.10.8-linux64` to change your directory to the folder containing the Urbit binary.
536−2. Enter `screen -ls`. If you get anything but a message like `No Sockets found in /run/screen/S-root.`, run `killall screen` to wipe the slate clean.
537−3. Enter `screen` and skip past the information. You're in an attached Screen window now; enter `screen -ls` to verify this.
538−4. Open your keyfile on your local machine and copy the contents. On the Screen in your Droplet, enter `./urbit -w sampel -G rAnDoMkEy`, where `rAnDoMkEy` is the copied contents of the keyfile.
539−
540−Your ship should be booting, and displaying a series of boot messages starting with `urbit 0.10.8`. A directory called `sampel/` and begin building your ship. It may take a few minutes.
541−
542−When your ship is finished booting, you will see either the `~sampel:dojo>` or `~sampel:chat-cli/` prompt. If you're seeing `:chat-cli` press `Ctrl-x` to switch into Dojo. At that point, you should permanently erase your keyfile from your machine.
543−
544−To shut down your ship, use `Ctrl-d`. Since you're running, you won't have much reason to do this often, since you should always have it running in your Droplet. More frequently you'll want to use `Ctrl-a` and then `d` to go back to your Droplet's command line while keeping your planet running on a detached Screen. Then, to return to your ship, run `screen -r`.
545−
546−If you need to shut down your ship, start it up again by running `./urbit sampel` from the directory where your Urbit binary is saved. Note that in this usage, `sampel/` is the path of a folder, which by default is located in the same folder as the Urbit binary. This folder is called your ship's **pier**.
296+Because of their need for near-perfect uptime Stars should be hosted on cloud services.
547297
548−Never boot multiple instances of your ship at the same time. You can prevent this from happening accidently by only ever keeping a single copy of your pier.
298+We have a guide for [hosting on DigitalOcean](@/using/operations/hosting.md), but any cloud provider should work.
549299
550300#### Maintaining a Star
551301
content/using/operations/creating-a-comet.mddeleted−33
@@ -1,33 +0,0 @@
1−+++
2−title = "Creating a Comet"
3−description = "Comets are disposable identities you can use on the live network."
4−weight = 4
5−aliases = ["/docs/using/creating-a-comet/"]
6−[extra]
7−hideprevious = "true"
8−hidenext = "true"
9−+++
10−
11−**Comets** are Urbits whose names are 128-bits or 16 syllables, such as:
12−
13−`~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`
14−
15−Comet names aren't quite as memorable as others, but they're disposable identities that anyone can make for free to join the live network.
16−
17−### Booting a comet
18−
19−To boot your comet, go into the command line and run the following command from the directory that was created during Urbit installation:
20−
21−```sh
22−$ ./urbit -c mycomet
23−```
24−
25−This will take a few minutes and will spin out a bunch of boot messages. Toward the end, you'll see something like:
26−
27−```
28−ames: on localhost, UDP 31337.
29−http: live (insecure, public) on 8080
30−http: live ("secure", public) on 8443
31−http: live (insecure, loopback) on 12321
32−~dasres_marzod:dojo>
33−```
content/using/operations/hosting.mdnew file+176
@@ -0,0 +1,176 @@
1++++
2+title = "Hosting Your Ship In The Cloud"
3+description = "How to host your ship in the cloud so you can access it from any device."
4+template = "page_indiced.html"
5+weight = 2
6+[extra]
7+hidetitle = "true"
8++++
9+
10+## Hosting Your Ship In The Cloud
11+The goal of this guide is to have clear and easy to follow best practices for deploying an Urbit node to a server you control in the cloud. Deploying in the cloud allows you to access your Urbit from any device.
12+
13+Most Urbit users start out running their ship locally on one machine in order to play with it, but this means when your machine is offline your Urbit node is offline too (and can't get updates). You can also only access your Urbit from that one machine.
14+
15+This guide uses Digital Ocean as the cloud provider, but others can be used.
16+
17+## Create a Digital Ocean droplet
18+ - Create an account on [Digital Ocean][Digital Ocean].
19+ - Create a droplet with the following settings:
20+ - **Image**: Ubuntu 18.04 x64
21+ - **Plan**: Standard
22+ - **Size**:
23+ - **Minimum**: $10 (2GB/1CPU)
24+ - **Recommended**: $15 (3GB/1CPU)
25+ - **Bonus**: $20 (4GB/2CPU)
26+ - **Add block storage**: Skip
27+ - **Datacenter Region**: Choose the region closest to you.
28+ - **VPC Network**: No VPC
29+ - **Additional Options**: None
30+ - **Authentication**: SSH keys, add a New SSH Key following the instructions DO gives you.
31+ - **How many Droplets**: 1
32+ - **Choose a hostname**: This will be the hostname of the box you ssh into (can be whatever you want, I used my Urbit planet name).
33+ - **Add tags**: None
34+ - **Project**: It'll select your default.
35+ - **Backups**: Optional (it costs a little extra, but I have it enabled for peace of mind).
36+
37+## Getting your own domain
38+Your own domain will make accessing your Urbit a lot easier (it'll also allow you to secure things with a Let's Encrypt cert). Domains are relatively inexpensive and since this guide is about best practices it's a required step.
39+
40+There are a lot of domain name registrars you can use, this guide suggests [gandi.net][Gandi]. From there you can search for and register a domain that you like.
41+
42+## Configuring your domain for your Digital Ocean droplet
43+Once you've registered your domain you'll need to configure it to use Digital Ocean for DNS. The following steps are done on the Gandi website.
44+ - Click Domain on the left panel
45+ - Click the domain you're going to use for Urbit
46+ - Click "Gandi's LiveDNS nameservers" under name servers on the overview page
47+ - Click Change
48+ - Remove Gandi servers and add the Digital Ocean ones instead:
49+ - `ns1.digitalocean.com`
50+ - `ns2.digitalocean.com`
51+ - `ns3.digitalocean.com`
52+ - Save the change.
53+ - It can take some time for this change to propagate, but I found it to be pretty quick (a few minutes).
54+ - Now that you've updated the DNS records you can add the domain to your droplet.
55+ - Back on the DO site, click Networking from the left panel and then enter the domain you registered to have it set for your project.
56+
57+## Creating your non-root user
58+With our domain in place we're now ready to actually log into the box and start to configure the server itself.
59+ - Since we don't yet have a user we'll need to log in as root:
60+ ```
61+ $ ssh root@your_server_ip
62+ ```
63+ - If you set a passphrase on your ssh key, you'll be asked for it. If not, you should automatically be logged in.
64+ - Create a new user, in our example we'll use *sammy* (to match the DO docs), but you should use your own username:
65+ ```
66+ # adduser sammy
67+ ```
68+ - Enter a strong password for your user. The questions `adduser` asks you don't matter, hit enter to skip them.
69+ - Give your new user sudo access:
70+ ```
71+ # usermod -aG sudo sammy
72+ ```
73+ - Next we need to enable external access to our new user by moving the ssh key over from root (and setting proper permissions on it).
74+ - Be careful to note the **lack of trailing slash** in the command below after `/.ssh`:
75+ ```
76+ # rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
77+ ```
78+ - Test this connection with `ssh sammy@your_server_ip` from your local machine in a new terminal window.
79+ - To test that your domain is working try `ssh sammy@your_domain` from a new terminal on your local machine.
80+ - You should now be able to use this user going forward with `sudo` when necessary.
81+
82+## Setting up a basic firewall
83+Continuing to follow the DO docs we're going to configure the ufw firewall.
84+ - The below command shows us the applications available to be easily configured with firewall rules by ufw.
85+ ```
86+ $ sudo ufw app list
87+ ```
88+ - Next we'll configure ufw to allow connections via ssh and to allow Urbit to use the standard web port when the firewall is enabled.
89+ ```
90+ $ sudo ufw allow OpenSSH
91+ $ sudo ufw allow www
92+ ```
93+ - Next we'll turn on the firewall.
94+ ```
95+ $ sudo ufw enable
96+ ```
97+ - To see the current the current firewall status use the following.
98+ ```
99+ $ sudo ufw status
100+ ```
101+
102+## Installing Urbit
103+Finally we're ready to install Urbit on your very own server. This part is actually pretty easy, if you haven't installed Urbit locally then the instructions are the exact same as the ones in the Urbit [install doc](@/using/install.md). If you have a local ship already, we're going to install Urbit on the server and then send your local ship up.
104+ - **WARN**: Since Urbit is p2p you don't want to ever run two copies of your ship simultaneously. This is because other nodes that interact with each of your copies will be confused by which one is the most up to date. If you end up accidentally doing this you'll have to do a 'personal breach' described in the Urbit docs to fix things.
105+ - The first thing you're going to want to do is shut down your local ship, either with control-d or `|exit` in dojo.
106+ - Next we're going to install Urbit on the server and permit it to bind to the web port:
107+ ```
108+ $ ssh your_user@your_domain
109+ $ curl -O https://bootstrap.urbit.org/urbit-v0.10.8-linux64.tgz
110+ $ tar xzf urbit-v0.10.8-linux64.tgz
111+ $ cd urbit-v0.10.8-linux64
112+ $ sudo setcap 'cap_net_bind_service=+ep' urbit
113+ ```
114+ - Now we're going to tar up your local ship and send it to your server, from your local machine's urbit directory:
115+ ```
116+ $ tar -zcvf <ship_dir_name>.tar.gz <ship_dir_name>
117+ $ scp <ship_dir_name>.tar.gz your_user@your_domain:/home/your_user/urbit-v0.10.8-linux64
118+ ```
119+ - Back on your server let's untar your ship and start it up with the Ames port we allowed through the firewall:
120+ ```
121+ $ ssh your_user@your_domain
122+ $ cd urbit-v0.10.8-linux64
123+ $ tar -zxvf <ship_dir_name>.tar.gz
124+ $ ./urbit <ship_dir_name>
125+ ```
126+ - Now we run a few commands in Dojo to request a Let’s Encrypt cert for your domain (replace `tld` with whatever your top-level domain is e.g. `com` in `example.com`:
127+ ```
128+ ~sampel-palnet:dojo> |start %acme
129+ ~sampel-palnet:dojo> :acme &path /tld/your_domain
130+ ```
131+ - Your ship should now be sailing on the digital ocean. Check `https://your_domain`, if everything is working properly you should see a login page.
132+ - Log in with the code from `+code` in dojo like normal and you should see all of your applications.
133+
134+## Leaving your Urbit running in a Screen session
135+Finally, to leave your Urbit running after you disconnect we can leave it in a Screen session. This is just a way to leave applications running in the background and then reconnect to them later. Alternatively, the same can be done with tmux.
136+ - First start with your ship stopped, then run the following:
137+ ```
138+ $ screen -S urbit
139+ ```
140+ - This will start a screen session, we can now start up the Urbit ship in this session:
141+ ```
142+ $ ./urbit <ship_dir_name>
143+ ```
144+ - Then we can disconnect from the screen session and leave the ship running with `control-a d`
145+ - To get back into the screen sesssion:
146+ ```
147+ $ screen -r
148+ ```
149+- There are more screen commands for interacting with sessions that are easy to find on the internet.
150+
151+## Links and Misc.
152+A lot of the above documentation comes from combining existing resources.
153+
154+Nginx is also pretty powerful and configurable. You can do things like have your Urbit on an existing server under a subdomain.
155+
156+On iOS you can save a website to your homescreen as an icon. If you do this for your Urbit domain it's a little like having it as an app.
157+
158+ - For the docs that made up this guide see the following links.
159+ - [Digital Ocean Initial Setup][DO Initial Setup]
160+ - [Digital Ocean DNS][DO DNS]
161+ - [Digital Ocean Nginx Installation][DO Nginx Install]
162+ - [Digital Ocean Nginx Config][DO Nginx Config]
163+ - [Digital Ocean SSL Cert Setup][DO SSL Config]
164+ - [Urbit Install Docs](@/using/install.md)
165+ - [Urbit Basic Cloud Install][Urbit Basic Cloud Install]
166+
167+ [Gandi]: https://www.gandi.net/
168+ [Digital Ocean]: https://www.digitalocean.com/
169+ [DO DNS]: https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars
170+ [DO Nginx Install]: https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04
171+ [DO Nginx Config]: https://www.digitalocean.com/community/tutorials/how-to-deploy-a-go-web-application-using-nginx-on-ubuntu-18-04
172+ [DO SSL Config]: https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04
173+ [Urbit Basic Cloud Install]: https://medium.com/@urbitlive/hello-world-urbit-edition-install-boot-and-run-your-urbit-planet-on-a-10-cloud-server-b9579745b9a8
174+ [DO Initial Setup]: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04
175+ [Blog Github]: https://github.com/zalberico/zalberico.github.io
176+
content/using/operations/using-your-ship.md+1−1
@@ -175,7 +175,7 @@ To cycle the keys of a moon without breaching, run:
175175```
176176
177177
178−### Escaping A Sponsor
178+### Escaping A Sponsor {#escape}
179179
180180To use the network as a planet or star, you must be sponsored by an active star or galaxy, respectively. If your sponsor isn't suiting your needs, you can escape to a different one. The [Bridge](https://bridge.urbit.org/) software doesn't yet support escaping. For the time being, however, you can follow this guide.
181181