on master help sign in
restored files from docs repo into urbit.org and fixed links
commit85ddbf029885bf993a3d39dc1cbcc9f8719b5e62 authorDavid Kerschner <dkerschner@hcoop.net> dateThu 4 Mar 2021, 11:39 (6 years ago) parent5aef216
17 files changed+219−1444
content/community/community-grants.md+1−1 content/faq.md+2−2 content/reset.md+2−2 content/understanding-urbit/interface.md+1−1 content/using/develop.md+3−3 content/using/id/creating-an-invite-pool.md+106 content/using/id/guide-to-breaches.md+90 content/using/id/using-bridge.md+2−2 content/using/running/install.md → content/using/install.md content/using/operations/using-your-ship.md−1421 content/using/os/filesystem.md+1−1 content/using/os/shell.md+1−1 content/using/os/stars-and-galaxies.md+2−2 content/using/os/using-your-ship.md+2−2 content/using/planet.md+2−2 content/using/running/hosting.md+3−3 templates/sections/docs/hoon.html+1−1
content/community/community-grants.md+1−1
@@ -7,7 +7,7 @@ hideprevious = "true"
77hidenext = "true"
88+++
99
10−Interested in getting your community on Urbit? We are currently accepting applications for select groups to get started on Urbit together using an [invite pool](@/docs/tutorials/creating-an-invite-pool.md).
10+Interested in getting your community on Urbit? We are currently accepting applications for select groups to get started on Urbit together using an [invite pool](@/using/id/creating-an-invite-pool.md).
1111
1212To get started, fill out the application below. Any information you share will be held privately, and only for the purpose of consideration for the grant.
1313
content/faq.md+2−2
@@ -75,7 +75,7 @@ In addition to the three classes of identities mentioned above, there are two ot
7575
7676### What is a `@p`? Why is my username generated for me? {#what-is-patp}
7777
78−A `@p` ([pronounced](@/docs/tutorials/hoon/hoon-school/hoon-syntax.md#reading-hoon-aloud) *pat-pee*) is a name like `~zod` or `~lodleb-ritrul` composed of pronounceable, three-letter phonemic elements like `zod`, `lod`, `leb`, `rit` and `rul`. Shorter names, such as `~zod` and `~marzod`, are assigned to [ship](@/docs/glossary/ship.md)s with special duties on the [Arvo](#what-is-arvo) network galaxies and stars, respectively. Longer names like `~palfun-foslup` are identities for typical users.
78+A `@p` ([pronounced](@/docs/hoon/hoon-school/hoon-syntax.md#reading-hoon-aloud) *pat-pee*) is a name like `~zod` or `~lodleb-ritrul` composed of pronounceable, three-letter phonemic elements like `zod`, `lod`, `leb`, `rit` and `rul`. Shorter names, such as `~zod` and `~marzod`, are assigned to [ship](@/docs/glossary/ship.md)s with special duties on the [Arvo](#what-is-arvo) network galaxies and stars, respectively. Longer names like `~palfun-foslup` are identities for typical users.
7979
8080These names map directly to a corresponding number in the Urbit ID address space. Galaxies occupy the 8-bit address space, so any galaxy is actually a number between zero and 255. Stars occupy the 16-bit address space, and planets occupy the 32-bit address space.
8181
@@ -263,7 +263,7 @@ Your sponsor, a star or galaxy that your ship is connected to, may send you new
263263
264264Follow our guide on how to boot a ship [here](@/using/planet.md).
265265
266−Get on the [mailing list](https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&amp;id=be143888d2). Learn [Hoon](@/docs/tutorials/hoon/hoon-school/_index.md). Sign up for [Hooniversity](https://hooniversity.org/). [Make stuff](https://grants.urbit.org).
266+Get on the [mailing list](https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&amp;id=be143888d2). Learn [Hoon](@/docs/hoon/hoon-school/_index.md). Sign up for [Hooniversity](https://hooniversity.org/). [Make stuff](https://grants.urbit.org).
267267
268268
269269## Urbit Grants
content/reset.md+2−2
@@ -77,8 +77,8 @@ Yes, by following these steps (note that these steps **will not** back up your d
77771. Download your [keyfile from Bridge](https://urbit.org/using/install/#keyfile).
78782. Shut down your ship.
79793. [Archive and move your old pier](https://urbit.org/using/operations/using-your-ship/#moving-your-pier) (this is the directory that contains your urbit event log).
80−4. [Download the latest version](@/using/running/install.md#macos-and-linux) of the urbit binary.
81−5. [Boot your ship with the new keyfile](https://urbit.org/using/running/install/#boot-your-planet).
80+4. [Download the latest version](@/using/install.md#macos-and-linux) of the urbit binary.
81+5. [Boot your ship with the new keyfile](@/using/install.md#boot-your-planet).
8282
8383## I’m hosted by Tlon, or someone else—what do I need to do?
8484
content/understanding-urbit/interface.md+1−1
@@ -43,7 +43,7 @@ OS 1 is a minimal, multipurpose interface for bringing a group together to chat,
4343
4444We built OS 1 for ourselves. We were sick of using centralized, mainstream software. We didn’t want to be stuck switching between bloated, monolithic services in order to keep in touch and move our work forward. We were done relying on some third party to take care of our community—so we exited to Urbit, and it feels good.
4545
46−If you’re curious to get a complete overview of OS 1, check out [this post](https://urbit.org/blog/introducing-os1/), watch the [release event](https://www.youtube.com/watch?v=71ViyftPkGk&feature=youtu.be&t=3963) or feel free to [boot a node](@/using/running/install.md#comet) to come talk to us.
46+If you’re curious to get a complete overview of OS 1, check out [this post](https://urbit.org/blog/introducing-os1/), watch the [release event](https://www.youtube.com/watch?v=71ViyftPkGk&feature=youtu.be&t=3963) or feel free to [boot a node](@/using/install.md#comet) to come talk to us.
4747
4848(Running Urbit still requires a little fiddling around in the command-line, so it’s not for everyone—but we do have [plans for that to improve](https://urbit.org/blog/providers/).)
4949
content/using/develop.md+3−3
@@ -18,7 +18,7 @@ This guide will start by getting you set up to run an Urbit ship, and then tell
1818
1919We assume you’ve gotten a basic introduction to Urbit. If you haven’t, read the [Understanding Urbit](@/understanding-urbit/_index.md) series.
2020
21−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/running/install.md#comet).
21+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).
2222
2323When 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.
2424
@@ -40,9 +40,9 @@ To get started quickly with the language of your choice, see the following libra
4040
4141Urbit applications are still young, but can be fun to experiment with.
4242
43−When creating user applications on Urbit, you aren’t tied to any particular user interface. They can work without providing a response to the user, or by printing to the Dojo, or with an interface in Landscape, which uses [Eyre](@/docs/tutorials/arvo/eyre.md) (the Arvo vane that serves HTTP to serve a React-based interface to the application through a web browser).
43+When creating user applications on Urbit, you aren’t tied to any particular user interface. They can work without providing a response to the user, or by printing to the Dojo, or with an interface in Landscape, which uses [Eyre](@/docs/arvo/eyre/eyre.md) (the Arvo vane that serves HTTP to serve a React-based interface to the application through a web browser).
4444
45−When writing applications, you will often make use of [Gall](@/docs/tutorials/hoon/hoon-school/gall.md), the Arvo vane that manages user applications.
45+When writing applications, you will often make use of [Gall](@/docs/hoon/hoon-school/gall.md), the Arvo vane that manages user applications.
4646
4747If you want to see examples of Urbit applications with common functionality requirements, you can see our [examples](https://github.com/urbit/examples) repository. If you want to get started building applications with a Landscape interface, check out our [create-landscape-app](https://github.com/urbit/create-landscape-app) repository.
4848
content/using/id/creating-an-invite-pool.mdnew file+106
@@ -0,0 +1,106 @@
1++++
2+title = "Creating an Invite Pool"
3+weight = 9
4+template = "doc.html"
5++++
6+
7+If you're a star owner, you have the ability to create **invite pools**. These
8+invite pools let you give your friends a piece of the network in the form of a
9+planet. This document will give you an explanation of how to create an invite
10+pool and how to share it with your friends using our tool
11+[Bridge](https://bridge.urbit.org).
12+
13+For more general tips on using your star, check out the [Star and Galaxy
14+Operations page](https://urbit.org/using/operations/stars-and-galaxies/).
15+
16+## Anatomy of an Invite Pool
17+
18+An invite pool is a set of planet invites that can be distributed via email or
19+URL; each invite is worth one planet when redeemed. An invite pool can be as big
20+as you'd like, providing that you have enough planets left to spawn. All invite
21+pools must be created by a star, but they must be given to a planet. If you're
22+interested in how this works technically, take a look at the
23+[DelegatedSending.sol
24+contract](https://github.com/urbit/azimuth/blob/master/contracts/DelegatedSending.sol).
25+
26+Keep in mind that all planets will have access to the invite pool until the
27+invite pool is exhausted.
28+
29+For example: As `~marzod`, I spawn `~wicdev-wisryt` and give it an invite pool
30+of 100 planets. `~wicdev-wisryt` can now send an invite to a friend at
31+galen@tlon.io. When Galen claims his planet (`~ravmel-ropdyl`), `~ravmel-ropdyl`
32+can now invite his friend — or 99 of them. `~wicdev-wisryt` may also continue to
33+use the invite pool, as can anybody they invite.
34+
35+## How To Create an Invite Pool
36+
37+Giving your friends a piece of Urbit only takes a few minutes: send an invite
38+pool to a planet, and then that planet can email an invite to a friend (or
39+friends)
40+
41+1. Log into Bridge using your ownership address for your star.
42+
43+2. Change the spawn proxy of your star to
44+ `0xF7908Ab1F1e352F83c5ebc75051c0565AEaea5FB`. This is a contract address that
45+ will handle the spawning of planets for invitees.
46+
47+3. Get the `@p` (like `~poldec-tonteg`) of the planet to whom you'd like to give
48+ access to the invite pool. It can be one you control or a friend's. It does
49+ not have to be a planet sponsored by your star.
50+
51+3. Click "Manage Invite Pools" to assign an invite pool to the planet. You may
52+ receive a notification that you need to assign your spawn proxy to the
53+ address of the Delegated Sending contract. This is so that the contract can
54+ send invites on your behalf when the recipient claims them. This address is
55+ `0xF7908Ab1F1e352F83c5ebc75051c0565AEaea5FB`, which is also displayed in Bridge.
56+
57+![](https://media.urbit.org/docs/invite-pool/browser-point.png)
58+
59+4. Enter the `@p` of the planet and the number of invites you'd like to assign to them.
60+
61+![](https://media.urbit.org/docs/invite-pool/browser-create-pool.png)
62+
63+Once the transaction is complete, the planet will have access to the invite pool.
64+
65+## How to Send an Invite
66+
67+1. Log into Bridge using the planet assigned an invite pool above using the
68+ planet's Master Ticket or ownership address.
69+
70+2. Under "Invite Group", click "Add Members" to unroll the invitation UI.
71+
72+3. Select either "Email" or "URL".
73+
74+4. If you selected "Email", enter the email address(es) of those you wish to
75+ invite to the dialog box. You may add more than one email address. Click "Add to
76+ Invite Group" when finished, and wait for the transaction to complete. Your
77+ friend(s) will get an email shortly with your gift of an identity for life!
78+
79+ If you selected "URL", click "Generate Invite URL" to create an invitation URL
80+ that you can then share.
81+
82+## FAQ
83+
84+Q. What happens if the spawn proxy address is changed away from
85+`0xF7908Ab1F1e352F83c5ebc75051c0565AEaea5FB` after an invite pool has been
86+created? Will outstanding invite pool(s) still function?
87+A. They won't. Existing balances will remain, but Bridge (and `azimuth-js`) won't
88+consider any of the invites from that star usable, and trying to send one of
89+their planets anyway will result in a failed transaction.
90+
91+Q. Can a star create more than one invite pool at a time?
92+A. Yes, a star can allow any given planet to send any number of invites
93+independently from one another.
94+
95+Q. Can an invite pool be revoked?
96+A. Yes, this may be done by assigning zero invites to a planet that had been
97+previously been given access to an invite pool.
98+
99+Q. Can a delegated planet have more than one invite pool assigned to it?
100+A. Yes, as a planet, multiple stars can give you invites to use.
101+
102+Q. What can you do if you send an invite to an email address by mistake?
103+A. Planets that have been sent but not yet claimed live at the
104+ownership address of the star that created the invite pool. Log into Bridge
105+using the ownership address for the star and you will be able to cancel the
106+pending invite. Once an invite has been accepted, nothing can be done!
content/using/id/guide-to-breaches.mdnew file+90
@@ -0,0 +1,90 @@
1++++
2+title = "Guide to Breaches"
3+weight = 10
4+template = "doc.html"
5++++
6+
7+An important concept on the [Ames](@/docs/arvo/ames/ames.md) network is that of continuity. Continuity refers to how ships remember the order of their own network messages and the network messages of others -- these messages are numbered, starting from zero. A _breach_ is when ships on the network agree to forget about this sequence and treat one or more ships like they are brand new.
8+
9+There are two kinds of breaches: **personal breaches** and **network breaches**.
10+
11+## Personal Breaches
12+
13+Ships on the Ames network sometimes need to reset their continuity. A personal breach is when an individual ship announces to the network: "I forgot who I am, let's start over from scratch." That is, it clears its own event log and sends an announcement to the network, asking all ships that have communicated with it to reset its networking information in their state. This makes it as though the ship was just started for the first time again, since everyone on the network has forgotten about it.
14+
15+Personal breaches often fix connectivity issues, but should only be used as a
16+last resort. Before performing a personal breach, look at alternative fixes in
17+the [Ship Troubleshooting](../ship-troubleshooting) guide. Also reach out for
18+help in the Help channel in the Urbit Community group
19+`~bitbet-bolbel/urbit-community`, or, failing that, in the
20+`#ship-starting-support` channel in our [Discord
21+server](https://discord.gg/n9xhMdz) to see if there is another option.
22+
23+There are two types of personal breaches - one where your Ethereum ownership address
24+remains the same, and one where you are switching to a new Ethereum ownership
25+address. We make the emphasis about the Ethereum _ownership_ address as
26+changing your [proxies](@/docs/glossary/proxies.md) does not require a breach.
27+
28+If you will be keeping the same Ethereum ownership address and would like to perform a
29+personal breach, follow the steps below.
30+
31+- Go to [bridge.urbit.org](https://bridge.urbit.org) and log into your identity.
32+- Click on `OS: Urbit OS Settings` at the bottom, then click `Reset Networking Keys`.
33+- Check the `Breach Continuity` box. Click `Reset Networking Keys`, and then click `Send Transaction` and wait for the progress bar to appear.
34+- Download your new keyfile following these instructions: [Generate your
35+ keyfile](@/using/id/using-bridge.md#generate-your-keyfile).
36+- Delete or archive your old [pier](@/docs/glossary/pier.md).
37+- Proceed to [boot your ship](@/using/install.md#boot-your-planet) with the new keyfile.
38+- Delete your keyfile after successfully booting.
39+- Rejoin your favorite chat channels and subscriptions.
40+
41+If you are switching to a new Ethereum ownership address you will have the
42+choice as to whether or not you want to breach. This is to cover the case when
43+you are transferring to another address you own. The process here is slightly different.
44+
45+- Go to [bridge.urbit.org](https://bridge.urbit.org) and log into your identity.
46+- Click on `ID: Identity and security settings` at the bottom, then click
47+ `Transfer this point`.
48+- Enter the new Ethereum address you would like to transfer ownership to. Click
49+ `Generate & Sign Transaction`, then click `Send Transaction` and wait for the
50+ progress bar to complete.
51+- Logout of your current session in Bridge by clicking `Logout` at the top, and
52+ then login to your new ownership address.
53+- From here, following the directions on how to [Accept your
54+ transfer](@/using/id/using-bridge.md#accept-your-transfer), [Set your
55+ networking keys](@/using/id/using-bridge.md#set-your-networking-keys),
56+ and [Generate your
57+ keyfile](@/using/id/using-bridge.md#generate-your-keyfile). The option
58+ whether or not to breach is in the Accept your Transfer step.
59+- Delete or archive your old [pier](@/docs/glossary/pier.md).
60+- Proceed to [boot your ship](@/using/install.md#boot-your-planet) with the new keyfile.
61+- Delete your keyfile after successfully booting.
62+- Rejoin your favorite chat channels and subscriptions.
63+
64+Performing a personal breach on your ship increments an integer value called
65+your ship's _life_ by one, which refers to your ship's [Azimuth](@/docs/azimuth/azimuth.md) _key
66+revision number_. This value is utilized by
67+Ames and Jael to ensure that you are
68+communicating with a ship created using its most recent set of keys. Your
69+ship's life is written at the end of the name of its keyfile, e.g.
70+`sampel-palnet-4.key`. Changing the Etherum address that holds the Urbit ID,
71+called _reticketing_, increments a number called the ship's _rift_ by one in
72+addition to incrementing your ship's life.
73+Rift refers to your ship's Azimuth _continuity number_.
74+
75+You can check your current life and rift number by running the
76+`+keys our` generator in Dojo. You can inspect another ship's life and rift can be checked by
77+running `+keys ~sampel-palnet`.
78+
79+
80+## Network Breaches
81+
82+A network breach is an event where all ships on the network are required to update to a new continuity era. Network breaches happen when an Arvo update is released that is too large to release over the air. The current continuity era is given by a value in Ames, our networking vane, that is incremented when a network breaches; only ships with the same such value are able to communicate with one another.
83+
84+If a network breach is happening, follow the steps below.
85+
86+- Delete your old Urbit binary.
87+- Delete or archive your old pier.
88+- Download the new Urbit binary by following the instructions in the [Install page](@/using/install.md).
89+- Create a new pier by booting your ship with your key, according to the instructions on the install page. (Note: You do _not_ need to use a new key to boot into a new continuity era.)
90+- Rejoin your favorite chat channels and subscriptions.
content/using/id/using-bridge.md+2−2
@@ -14,7 +14,7 @@ This guide assumes that you have an Urbit ID, or that you have found someone to
1414
1515To connect to Bridge, go to [https://bridge.urbit.org](https://bridge.urbit.org) into your browser, and enter your identity's credentials in the appropriate fields. If you were invited to claim an Urbit ID, it's very likely that you received an email that would direct you to Bridge, and you can simply follow the hyperlink in that email.
1616
17−You'll arrive at a page and see two major choices: `ID` and `OS`. `OS` is the only option that you're interested in right now; click on it. On the `OS` page, click the `Download Arvo Keyfile` button. Once you have downloaded the keyfile, you can exit Bridge and proceed to [install the Urbit binary](@/using/running/install.md).
17+You'll arrive at a page and see two major choices: `ID` and `OS`. `OS` is the only option that you're interested in right now; click on it. On the `OS` page, click the `Download Arvo Keyfile` button. Once you have downloaded the keyfile, you can exit Bridge and proceed to [install the Urbit binary](@/using/install.md).
1818
1919### Local Bridge
2020
@@ -72,7 +72,7 @@ It should be noted that setting your network keys is an event on the Ethereum ne
7272From the detail page associated with your point, click the `Generate Arvo Keyfile` link and you'll be taken to a page with a field titled `Network seed`. This field should already be filled in, and should match the hexadecimal string that you entered in the previous step. If it's not filled in or does not match, fill it in with the correct string.
7373Click `Generate ->`, which will download a keyfile onto your machine.
7474
75−With that keyfile in hand, you can now exit Bridge and continue to the guide to [install the Urbit binary](@/using/running/install.md).
75+With that keyfile in hand, you can now exit Bridge and continue to the guide to [install the Urbit binary](@/using/install.md).
7676
7777### Escaping your sponsor
7878
content/using/running/install.md → content/using/install.mdrenamed

The content is the same.

content/using/operations/using-your-ship.mddeleted−1421
@@ -1,1421 +0,0 @@
1−+++
2−title = "Using Your Ship"
3−description = "How to operate your ship, including using your ship's filesystem and messaging applications, starting a moon, or requesting a DNS proxy."
4−template = "page_indiced.html"
5−weight = 2
6−[extra]
7−hidetitle = "true"
8−+++
9−
10−## Using your ship
11−
12−Your urbit (also called your _ship_) is a persistent Unix process that you mainly control from the console.
13−
14−### Shutdown
15−
16−You can turn your urbit off with `Ctrl-d` from the Chat or Dojo prompts.
17−
18−You can force-quit your urbit with `Ctrl-z` from anywhere.
19−
20−### Restart
21−
22−To restart your urbit simply pass the name of your pier:
23−
24−```sh
25−$ ./urbit some-planet
26−```
27−
28−or
29−
30−```sh
31−$ ./urbit comet
32−```
33−
34−### Logging
35−
36−To log an urbit's command line output to a file, use `script`:
37−
38−```sh
39−$ script urbit.log ./urbit your-urbit
40−```
41−
42−### Moving your pier
43−
44−Piers are designed to be portable, but it _must_ be done while the urbit
45−is not running. Urbit networking is stateful, so you can't run two copies
46−of the same urbit in two places.
47−
48−To move a pier, simply move the contents of the directory it lives in.
49−To keep these files as small as possible we usually use the `--sparse`
50−option in `tar`. With a pier `your-urbit/`, something like this should work:
51−
52−```sh
53−tar -Scvzf ~/your-urbit.tar.gz ~/your-urbit/
54−scp your-old-server:~/your-urbit.tar.gz your-new-server:~
55−```
56−
57−Then to unzip it, on your other Unix server, run:
58−
59−```sh
60−tar xfvz your-urbit.tar.gz
61−```
62−
63−Delete the tar file, and, after installing Urbit on your new server, start your urbit back up with:
64−
65−```sh
66−./urbit your-urbit
67−```
68−
69−### Hardware requirements
70−
71−Urbit can run on any x86 computer (unofficial, unsupported [ARM binaries](https://botter-nidnul.github.io/AArch64_Urbit_Static_Binaries.html) are also available), ideally with at least 2GB of RAM.
72−
73−Urbit maintains a persistent log of the history of your ship. Eventually this log will be automatically trimmed when necessary, but for now it only increases in size. An actively used planet will consume 5-50 GB of storage space per year of operation.
74−
75−### Console
76−
77−Your Urbit terminal is separated into two parts: the prompt (the bottom line) and the record (everything above that). The record is shared; all the output from all the apps in your command set appears in it. The prompt is multiplexed.
78−
79−In the CLI, Urbit apps can process your input before you hit return. To see this in action try entering `)` as the first character at the Dojo prompt. Since there is no Dojo command or Hoon expression that starts with ')', the Dojo rejects it.
80−
81−`Ctrl-x` - Switches the prompt between running console apps
82−
83−`Ctrl-c` - Crash current event. Processed at the Unix layer and prints a stack
84−trace.
85−
86−`Ctrl-d` - From Chat or Dojo, stops your Urbit process.
87−
88−`Ctrl-z` - Stops the Urbit process from _anywhere_.
89−
90−`↑` / `↓` - History navigation
91−
92−The following emacs-style key bindings are available:
93−
94−```
95−Ctrl-a Cursor to beginning of the line (Home)
96−Ctrl-b Cursor one character backward (left-arrow)
97−Ctrl-e Cursor to the end of the line (End)
98−Ctrl-f Cursor one character forward (right-arrow)
99−Ctrl-g Beep; cancel reverse-search
100−Ctrl-k Kill to end of line
101−Ctrl-l Clear the screen
102−Ctrl-n Next line in history (down-arrow)
103−Ctrl-p Previous line in history (up-arrow)
104−Ctrl-r Reverse-search
105−Ctrl-t Transpose characters
106−Ctrl-u Kill to beginning of line
107−Ctrl-y Yank from kill buffer
108−```
109−
110−### Updates
111−
112−By default, you will automatically receive updates ([OTAs](@/docs/glossary/ota-updates.md)) from your sponsor. To check your OTA source, run `|ota` in the [dojo](@/docs/glossary/dojo.md).
113−
114−If for some reason (for example, if your sponsor is out of date), you can switch OTA sources by running `|ota ~otasrc %kids` in the dojo, where `~otasrc` is the ship from which you want to receive updates. It is a good idea to contact the source ship and ask permission to sync from them.
115−
116−If OTAs are not succeeding, or if you are on an version of Urbit before the `|ota` command was introduced, you can run `|merge %home (sein:title our now our) %kids, =gem %take-that`. **Note:** This will wipe out any custom changes to the base distribution.
117−
118−#### Additional OTA Troubleshooting
119−Please check the Support Wiki for additional OTA troubleshooting, such as:
120−[OTA 1.0.71 failed](https://github.com/urbit/support/wiki/OTA-1.0.71-failed),
121−[Missing OTA](https://github.com/urbit/support/wiki/Missing-OTA),
122−[Stuck flow preventing planets from receiving
123−OTAs](https://github.com/urbit/support/wiki/Stuck-flow-preventing-planets-from-receiving-OTAs),
124−and [No content shows in Links page after OTA](https://github.com/urbit/support/wiki/No-content-shows-in-Links-page-after-OTA).
125−
126−### Landscape
127−
128−On startup Urbit tries to bind to `localhost:80`. If you're already running something on port `80` -- such as any other HTTP server, or another urbit -- you'll find the urbit that you just started on `8080`, `8081`, and so on. For planets only, we also proxy web domains through Urbit's own servers. Any planet `~your-urbit` is also at `your-urbit.arvo.network`, but only after you [set up DNS](#dns-proxying).
129−
130−Once running, you can sign into Landscape, your ship’s web interface, from `http://localhost` or `https://your-urbit.arvo.network`. Since our HTTPS isn't audited / battle tested, we just call it "secure" HTTPS. You can find that on `8443`. Or `8444` (and so on) if you're already running something on `8443`.
131−
132−### Moons {#moons}
133−
134−Planets can spawn moons, which are meant for connected devices: phones, smart TVs, digital thermostats. The basic idea is that your planet runs permanently in a data center somewhere, while moons run on all your devices. Each planet can issue ~4 billion (`2^32`) moons.
135−
136−To generate a random moon from your planet, run:
137−
138−```
139−~sampel-palnet:dojo> |moon
140−moon: ~faswep-navred-sampel-palnet
141−\/0w5cT5t.wCO6i.~e1xg.Oz0qb.QNO6I.3Kt2T.h9M9F.U3vU~.X3Qu0.gtb19.IYTkY.80kWZ.SI\/
142− EUE.DXa8i.TiDof.o3-1C.RHLKS.k81M0.ecz5o.ic0Bg.600g1
143−\/ \/
144−```
145−
146−You must manually edit the output of `|moon` to get the correct format for the `<key>`:
147−
148−- strip out the `\/`
149−
150−- combine into one line, omitting spaces
151−
152−`<key>` would be `0w5cT5t.wCO6i.~e1xg.Oz0qb.QNO6I.3Kt2T.h9M9F.U3vU~.X3Qu0.gtb19.IYTkY.80kWZ.SIEUE.DXa8i.TiDof.o3-1C.RHLKS.k81M0.ecz5o.ic0Bg.600g1`
153−in this example.
154−
155−Put `<key>` in a file and that file becomes `<keyfile>`.
156−
157−You can use the resulting output in the same installation flow from the [Installing Urbit](@/using/running/install.md) guide, following the same scheme as for booting a planet. That scheme is:
158−
159−```sh
160−$ ./urbit -w <moonname> -G <key> -c <piername>
161−```
162−
163−or
164−
165−```sh
166−$ ./urbit -w <moonname> -k <keyfile> -c <piername>
167−```
168−
169−The `-c <piername>` argument is not required, but it is recommended; otherwise,
170−the resulting directory is a rather unwieldy moon name.
171−
172−Here's how an example moon might be booted:
173−
174−```sh
175−$ ./urbit -w faswep-navred-sampel-palnet -G <key> -c mymoon
176−```
177−
178−or
179−
180−```sh
181−$ ./urbit -w faswep-navred-sampel-palnet -k <keyfile> -c mymoon
182−```
183−
184−Moons are automatically synced to their parent `%kids` desk, and can control applications on their parent planet using `|link`.
185−
186−To breach a moon -- that is, to reset its presence on the network so that it's treated as a freshly spawned ship by others -- run from the parent ship:
187−
188−```
189−|moon-breach ~faswep-navred-sampel-palnet
190−```
191−
192−To cycle the keys of a moon without breaching, run:
193−
194−```
195−|moon-cycle-keys ~sampel-sipnym-wicdev-wisryt
196−```
197−
198−
199−### Escaping A Sponsor {#escape}
200−
201−To use the network as a planet or star, you must be sponsored by an active star
202−or galaxy, respectively. If your sponsor isn't suiting your needs, you can
203−escape to a different one. This can be done with
204−[Bridge](https://bridge.urbit.org/) following the instructions
205−[here](@/using/id/using-bridge.md#escaping-your-sponsor).
206−
207−### Continuity breaches
208−
209−While the Urbit network is in this alpha state, we sometimes have to reboot the whole network. This happens either when major changes need to be shipped or we hit a bug that can't be fixed over the air.
210−
211−Because Urbit networking is stateful we call this a _continuity breach_. Everything has to be restarted from scratch. Your pier will continue to function after we have breached, but it won’t connect to the rest of the Urbit network.
212−
213−When this happens, back up any files you'd like to save, shut down your urbit, and recreate it (as if you were starting for the first time).
214−
215−### Life and rift number
216−
217−You can check your ship's _life_ and _rift_ number by running `+keys our` in
218−dojo. You can inspect another ship's life and rift number by running `+keys
219−~sampel-palnet`. For information on what life and rift are, see [Guide to Breaches](@/docs/tutorials/guide-to-breaches.md).
220−
221−## DNS proxying {#dns-proxying}
222−
223−We have a system that lets you request a domain name for your ship in the form of `ship.arvo.network`, where `ship` is your ship's name minus the `~`. This allows users to access their ships remotely using Landscape, our graphical web interface.
224−
225−Stars and planets follow the same process DNS proxying process, and galaxies have their own requirements. Moons and comets are not supported.
226−
227−### Planets and Stars
228−
229−For a planet or star's DNS proxying request to be made and fulfilled, they must be hosting their ship someplace with a public IP address, and its HTTP server must be listening on port 80.
230−
231−To get `ship.arvo.network` on a planet or star, you must set up DNS routing with its parent ship by starting the `:dns` app.
232−
233−To do so, simply run this command in your ship's Dojo, passing the IP address as an argument, using the .0.0.0.0 (`@if`) syntax. For example:
234−
235−```
236−> -dns-address &dns-address [%if .1.2.3.4]
237−```
238−
239−`:dns`, running locally, will make an HTTP request to that IP address on port 80 to confirm that it is itself available at that IP and port. If that fails, you'll receive a `%bail-early` message in `:chat-cli`; this request will retry a few times. If the self-check is successful, the request is relayed to `~zod`, and you'll receive a message saying, `request for DNS sent to ~zod`. Once `~zod` has acknowledged receipt of the request, your local `:dns` app will send a `:chat-cli` message saying `awaiting response from ~zod`.
240−
241−The request will be picked up shortly, and the `ship.arvo.network` DNS record will be set to the given IP address. Once that's set up, `~zod` will be notified and `~zod` will, in turn, notify your ship. That ship will now try to verify that it can reach itself on `ship.arvo.network` over port 80. If it can't, it'll send a message saying, `unable to access via ship.arvo.network`. If it can, it will configure itself with that domain and say `confirmed access via ship.arvo.network`.
242−
243−Great! You're set up now. Try accessing your `ship.arvo.network` in your browser to use Landscape; we recommend Chrome or Brave.
244−
245−### Configuring SSL
246−
247−To enable SSL on your ship, use the `acme` agent, which will request a certificate through Let's Encrypt. First, make sure the agent is started:
248−
249−```
250−> |start %acme
251−```
252−
253−Next, provide the path for the SSL certificate by poking the `acme` agent. The path format is `/tld/your_domain/your_subdomain`, so if your domain is `sampel-palnet.arvo.network`, you'd use it like so:
254−
255−```
256−> :acme &path /network/arvo/sampel-palnet
257−```
258−
259−### Galaxies
260−
261−Galaxies are already required to have separate DNS entry at galaxy.urbit.org. There's no automated process for getting that binding, so if you're a galaxy-holder, get in touch with us at support@urbit.org.
262−
263−There is a command for galaxies that will try to re-use their already-necessary Ames DNS entry for HTTPS:
264−
265−```
266−> -dns-auto
267−```
268−
269−This will make HTTP-requests to self-check availability over `galaxy.$AMES-DOMAIN` (currently galaxy.urbit.org), where `galaxy` is the galaxy's name minus the `~`.
270−
271−Otherwise, `-dns-auto` works the same as `:dns|ip` does with stars and planets: if it's available or unavailable, Chat messages, and so on.
272−
273−### Ports
274−
275−The built-in logic for listening on port 80 is to try to bind to port 80; if it cannot, it tries 8080, then increments until it can bind a port. Port 80 is available to unprivileged process on recent version of macOS. Otherwise, the process needs to either be run as root, or be given special permission (CAP\_NET_BIND on Linux).
276−
277−## Messaging {#messaging}
278−
279−Let’s get started using the `:chat-cli` application, also known more simply as _Chat_. It's the simplest way to talk to people using the command line interface.
280−
281−### Quickstart
282−
283−The most common use for `:chat-cli` right now is, of course, communicating in group chats.
284−
285−### Joining a chat
286−
287−In `:chat-cli`, any kind of medium for a message is called a _chat_. There are four "types" of chats, but for now we'll be dealing with the _channel_, a publicly accessible chatroom for general use. We'll discuss the other three kinds in the [chat management](#chat-management) section later on.
288−
289−Join the Urbit Community from Dojo using `:group-store|join ~bitbet-bolbel/urbit-community`. Once you've joined, join the General chat from chat-cli. Use `ctrl-x` to switch from the Dojo prompt to the Chat prompt.
290−
291−Then:
292−
293−```
294−~sampel-palnet:chat-cli/ ;join ~darrux-landes/general
295−```
296−
297−Now that you're in, try post a line to `~darrux-landes/general`:
298−
299−```
300−~sampel-palnet:chat-cli= Hello, world!
301−```
302−
303−You'll see your message printed below messages from others that came before it. You can always type `;chats` in the `chat-cli` prompt to list all the chats you're in:
304−
305−```
306−~sampel-palnet:chat-cli= ;chats
307−~darrux-landes/general
308−```
309−
310−Glyphs will be automatically assigned to channels, but have the option of binding a glyph (single non-alphanumeric character) to the channel you're joining; the syntax is in the form of `;join ~/~dopzod/books +`. The chosen glyph will be the symbol that ends your prompt, and it will be what you use as a shortcut to switch to this channel.
311−
312−```
313−~sampel-palnet:chat-cli= ;+
314−~sampel-palnet:chat-cli+
315−```
316−
317−Use `;leave` to unsubscribe from a channel:
318−
319−```
320−~sampel-palnet:chat-cli= ;leave ~darrux-landes/general
321−```
322−
323−Now, let's create a channel we can invite some friends to:
324−
325−```
326−~sampel-palnet:chat-cli= ;create channel /my-channel
327−```
328−
329−Now you can tell your friends to `;join ~your-urbit/my-channel`.
330−
331−In order to see messages in `:chat-cli` you may need to do the following in Dojo:
332−
333−```
334−:chat-cli %connect
335−```
336−
337−### Hoon
338−
339−You can use Chat to evaluate Hoon code and share the results with everyone in a chat. To do so, preface your Hoon with `#`.
340−
341−```
342−~sampel-palnet:chat-cli= #(add 2 2)
343−```
344−
345−This will print as:
346−
347−```
348−~sampel-palnet# (add 2 2)
349− 4
350−```
351−
352−### URLs
353−
354−To share a URL, send it as its own message, with no content before or after it.
355−
356−```
357−~sampel-palnet:chat-cli= https://urbit.org/
358−```
359−
360−This will print as:
361−
362−```
363−~sampel-palnet/ https://urbit.org/
364−```
365−
366−### Expanding messages
367−
368−In the case of URLs, they may be too long to display on a single message line. For Hoon code, the code or result could be big. In `:chat-cli`, these get shortened when initially printed out. To view the entire contents, you can select the message in various ways.
369−
370−```
371−~sampel-palnet+ some message
372−----------[240]
373−~sampel-palnet+ let's try selecting this message!
374−~sampel-palnet+ another message
375−~sampel-palnet:chat-cli=
376−```
377−
378−In the above example, we can select the middle message by issuing any of the following command:
379−
380−```
381−;240
382−;40
383−;;
384−```
385−
386−`;n` looks for the last message whose sequence number ends in `n`. `;;` simply picks the second-to-last message.
387−
388−Detailed message output will look something like this:
389−
390−```
391−? 240
392− 0v5.g7r7l.n0d7m.mp4bn.gp6vr.sm5lj at ~2019.10.17..22.08.27..8a03
393− ~sampel-palnet
394− to ~dopzod/urbit-help
395−let's try selecting this message!
396−```
397−
398−### Creating and managing chats {#chat-management}
399−
400−As mentioned before, any urbit can host any number of chats. Existing chats can be deleted or modified with various commands. All commands in this section should be sent from the `chat-cli>` prompt.
401−
402−#### Create
403−
404−Syntax: `;create [type] /name +`, where `+` represents an optional glyph.
405−
406−Creates and joins a chat, where `[type]` is any of the following:
407−- `channel`: public chat. Has a blacklist for write control.
408−- `village`: invite-only chat.
409−- `journal`: publicly readable, invite-only for writing.
410−- `mailbox`: publicly writeable, invite-only for reading.
411−
412−Let's create an example mailbox:
413−
414−```
415−~sampel-palnet:chat-cli> ;create mailbox /coolbox ^
416−```
417−
418−#### Delete
419−
420−Syntax: `;delete /name`
421−
422−Deletes a chat.
423−
424−#### Permission management
425−
426−You can permit and ban people from reading and/or writing to the chats you host, using `;invite` and `;banish` command respectively.
427−
428−Syntax: `;invite [rw] /name ~ships`
429−
430−Where `rw` is either `r`, `w`, or `rw`, representing "read" and "write" permissions.
431−And where `~ships` is a comma-seperated list of ships to invite.
432−
433−For example, to grant two people full access to a `village` we created:
434−
435−```
436−~sampel-palnet:chat-cli> ;invite rw /hidden-village ~ravmel-ropdyl, ~rapfyr-diglyt
437−```
438−
439−Similarly, if we later want to revoke the writing permissions for one of them, but still allow them to read new messages, we can run:
440−
441−```
442−~sampel-palnet:chat-cli> ;banish w /hidden-village ~rapfyr-diglyt
443−```
444−
445−#### Chat glyphs
446−
447−Glyphs are found at the end of your prompt, as a quick indicator of where
448−your messages will be sent.
449−
450−Glyphs are assigned by chat hash out of the following list:
451−
452−```
453−! @ # $ % ^ & ( ) - = _ + [ ] { } ; ' \ : " , . < > ?
454−```
455−
456−Alphanumeric characters and `|#/*~` are reserved; all others can be manually assigned.
457−
458−For example, `-` the glyph at the end of the prompt below might indicates that
459−messages sent from this prompt will go to some chat with that glyph:
460−
461−```
462−~sampel-palnet:chat-cli-
463−```
464−
465−To see what chat is bound to a glyph, use the `;what` command followed by the
466−glyph in question, or use `;what` without specifying a glyph to see all of your
467−subscriptions which are bound to glyphs. For example, to see `=`:
468−
469−```
470−~sampel-palnet:chat-cli> ;what =
471−~dopzod/urbit-help
472−```
473−
474−To see all of your glyph bindings:
475−
476−```
477−~sampel-palnet:chat-cli> ;what
478−> ~paldev/numismatic-forum
479−. ~middev/ny-martians
480−= ~dopzod/urbit-help
481−```
482−
483−When the messaging target doesn't have a glyph, we see their name at the end of
484−the prompt instead. Here we're talking into `~dannum-mitryl/homework`:
485−
486−```
487−~sampel-palnet:chat-cli[~dannum-mitryl/homework]
488−```
489−
490−#### Bind
491−
492−Syntax: `;bind [glyph] ~host/chat-name`
493−
494−Assigns the chosen glyph to a chat.
495−
496−For example:
497−
498−```
499−~sampel-palnet:chat-cli> ;bind + ~dopzod/urbit-help
500−```
501−
502−#### Unbind
503−
504−Syntax: `;unbind [glyph] ~host/chat-name`
505−
506−Unassigns the chosen glyph from a chat owned by your ship.
507−
508−For example:
509−
510−```
511−~sampel-palnet:chat-cli> ;unbind + ~dopzod/urbit-help
512−```
513−
514−If you don't specify a chat, all bindings for that glyph are removed.
515−
516−#### Prefixes
517−
518−Received posts are prefixed with a glyph to let you know what the
519−audience is. You can activate an individual post to see the full
520−audience.
521−
522−There are a few special-purpose "glyphs":
523−
524−- `|` - Informational messages
525−- `*` - Posts to a target you don't have a glyph binding for
526−
527−
528−### Configuration
529−
530−#### Set audience
531−
532−`;~ship/chat`
533−
534−Set audience to `~ship/chat`.
535−
536−#### Set audience by glyph
537−
538−Syntax: `;[glyph]`
539−
540−Set audience to the chat previously bound to the chosen glyph.
541−
542−#### Set audience to own chat
543−
544−Syntax: `;/chat`
545−
546−Set audience to a chat on your own ship.
547−
548−### Miscellaneous configuration
549−
550−#### Change timezone
551−
552−Syntax: `;set timezone [+/-][hours]`
553−
554−Adjust the display of timestamps to a specific timezone. Relative to UTC.
555−
556−#### Set width
557−
558−Syntax: `;set width [number]`
559−
560−Set the rendering width of `:chat-cli` to a specific number of characters.
561−(Minimum of 30.)
562−
563−#### Show timestamps
564−
565−Syntax: `;set showtime`
566−
567−Show the timestamp for each message. This is set by default.
568−
569−#### Hide timestamps
570−
571−Syntax: `;unset showtime`
572−
573−Stop showing the timestamp for each message.
574−
575−#### Sound notification on
576−
577−Syntax: `;set notify`
578−
579−Emit a terminal bell sound if your six-syllable ship name is mentioned in
580−a message. This is set by default.
581−
582−#### Sound notification off
583−
584−Syntax `;unset notify`
585−
586−Do not notify when your ship name is mentioned.
587−
588−
589−## S3 {#s3}
590−
591−Amazon S3, which stands for Amazon Simple Storage Service, is a technology that was introduced by Amazon Web Services for cloud storage that has since been extended more broadly into a [standard programming interface](https://en.wikipedia.org/wiki/Amazon_S3#S3_API_and_competing_services).
592−
593−Our S3 support lets you store credentials for your S3 object storage buckets on your Urbit ship; once you have done so, you will get additional functionality for uploading your own media within Chat and Groups (for avatars).
594−
595−To enable S3 support on your ship you'll need to first set up a bucket, and then add its credentials to Landscape using *either* Landscape or the Dojo.
596−
597−### Bucket Setup
598−
599−If you’re using AWS, it will have to support signature v2, not v4. We've found DigitalOcean's Spaces to work well also. The bucket has to be publicly readable, allow CORS from `*` origins, allow GET and PUT methods, and allow `*` headers. Your provider should have details on setting access permissions and CORS.
600−
601−### Add your credentials: Landscape
602−
603−Navigate to your `https://<your-ship-url>/~profile/settings`, or click your sigil in the upper-right corner of the window. Fill out the **S3 Credentials** and **S3 Buckets** sections and you're all set!
604−
605−### Add your credentials: Dojo
606−
607−Once you have gotten your bucket setup, poke the `s3-store` on your ship with your details. You can do this in Dojo or in web Dojo.
608−
609−```
610−:s3-store|set-endpoint 'endpoint.mys3provider.com'
611−:: AWS endpoint example: s3-us-west-2.amazonaws.com
612−:: Digital Ocean endpoint example: sfo2.digitaloceanspaces.com
613−:s3-store|set-access-key-id 'MYACCESSKEYID'
614−:s3-store|set-secret-access-key 'MYSECRETACCESSKEY'
615−:s3-store|set-current-bucket 'yourbucketname'
616−```
617−
618−Done! If you need to peek at s3-store’s state, you can always run :s3-store +dbug (inside Dojo, not web Dojo, unfortunately). You’ll see the additional functionality appear in Groups and Chat.
619−
620−## Shell {#using-the-shell}
621−
622−The Dojo is our shell; it processes system commands and returns output. It's a
623−good place to quickly experiment with Urbit. On the surface the Dojo is just a
624−Hoon REPL. On the inside, the Dojo is a system for operating on and transforming
625−data in Urbit.
626−
627−### Quickstart
628−
629−You can use the Dojo to run arbitrary Hoon code, as well as non-Hoon system
630−commands.
631−
632−#### Math
633−
634−Evaluate a Hoon expression (whitespace matters):
635−
636−```
637−~your-urbit:dojo> (add 2 2)
638−~your-urbit:dojo> %+ add 2 2
639−```
640−
641−Tall-form Hoon may require multiple lines:
642−
643−```
644−~your-urbit:dojo> %+ add
645−~your-urbit:dojo< 2
646−~your-urbit:dojo< 2
647−```
648−
649−Hoon uses something called [the subject](@/docs/tutorials/hoon/hoon-school/the-subject-and-its-legs.md).
650−The Dojo has its own subject and that's where Hoon's equivalent of variables,
651−called faces, are stored.
652−
653−Use `=var` to save faces to the Dojo subject.
654−
655−```
656−~your-urbit:dojo> =foo (add 2 2)
657−```
658−
659−Note, however, that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
660−face in a `.hoon` file in this way.
661−
662−#### System commands
663−
664−Use `=dir` to set the current working directory:
665−
666−```
667−~your-urbit:dojo> =dir %/gen
668−```
669−
670−(`%` represents your current directory. For a complete explanation on urbit
671−paths, see the [filesystem section](#filesystem).)
672−
673−Generators (files in `/gen`) are run with `+`:
674−
675−```
676−~your-urbit:dojo> +hello 'world'
677−```
678−
679−Save output to a file in `%clay` with `*`:
680−
681−```
682−~your-urbit:dojo> *some/file/path/hoon 'hello world'
683−```
684−
685−Run system commands from `:hood`, like `reload`, using `|`:
686−
687−```
688−~your-urbit:dojo> |reload %eyre
689−```
690−
691−### Generators
692−
693−Generators are short Hoon scripts, saved as `.hoon` files in the `/gen`
694−directory. Many Dojo commands exist in the form of generators. The syntax for
695−running a generator is `+genname` for a generator saved as `genname.hoon`.
696−
697−#### `+cat`
698−
699−Accepts a path and displays the file. Similar to Unix `cat`.
700−
701−```
702−~your-urbit:dojo> +cat %/gen/curl/hoon
703−```
704−
705−#### `+code`
706−
707−Generates a code that is used to remotely log into your ship. No
708−arguments.
709−
710−```
711−~your-urbit:dojo> +code
712−```
713−
714−You can change your code to a new randomly generated one by entering `|code
715−%reset`. Please note that this will prevent [Bridge](@/docs/glossary/bridge.md)
716−from being able to derive your code in the future.
717−
718−#### `+curl`
719−
720−Retrieves data from a URL. Accepts a `tape`. Similar to Unix `curl`.
721−
722−```
723−~your-urbit:dojo> +curl "http://nyt.com"
724−```
725−
726−#### `+hello`
727−
728−Just prints the argument. Accepts a `@ta`.
729−
730−```
731−~your-urbit:dojo> +hello 'mars'
732−```
733−
734−#### `+ls`
735−
736−Similar to Unix `ls`. Accepts a path.
737−
738−```
739−~your-urbit:dojo> +ls %/gen
740−~your-urbit:dojo> +ls /~talsur-todres/home/2/gen/program
741−```
742−
743−#### `+solid`
744−
745−Compile the current state of the kernel and output a
746−noun. Usually downloaded to a file in unix. No arguments.
747−
748−```
749−~your-urbit:dojo> .urbit/pill +solid
750−```
751−
752−#### `+test`
753−
754−Testrunner. Can test multiple generators at once, conventionally ones
755−in the `/test` folder. Takes a path.
756−
757−```
758−~your-urbit:dojo> +test /lib
759−```
760−
761−#### `+ticket`
762−
763−Generate a ticket for an urbit ship. Takes an urbit name (`@p`).
764−
765−
766−```
767−~your-urbit:dojo> +ticket ~talsur-todres-your-urbit
768−```
769−
770−#### `+tree`
771−
772−Generate a recursive directory listing. Takes a path.
773−
774−```
775−~your-urbit:dojo> +tree %/sys
776−```
777−
778−### Hood
779−
780−The hood is the system daemon. See `gen/hood` and `app/hood`.
781−
782−`|hi` - Sends a direct message. Sort of like Unix `write`. Accepts
783−an urbit name (`@p`) and a string (`tape`, which is text wrapped with double-quotes).
784−
785−```
786−~your-urbit:dojo> |hi ~binzod "you there?"
787−```
788−
789−`|link` / `|unlink` - Link / unlink a remote app. Accepts an
790−Urbit name and an app name.
791−
792−```
793−~your-urbit:dojo> |link ~talsur-todres %octo
794−```
795−
796−`|mass` - Prints the current memory usage of all the kernel modules.
797−No arguments.
798−
799−```
800−~your-urbit:dojo> |mass
801−```
802−
803−`|reload` - Reloads a kernel module (vane) from source. Accepts any
804−number of vane names.
805−
806−```
807−~your-urbit:dojo> |reload %clay %eyre
808−```
809−
810−`|reset` - Reloads `hoon.hoon` and all modules. No arguments.
811−
812−```
813−~your-urbit:dojo> |reset
814−```
815−
816−`|start` - Starts an app. Accepts an app name.
817−
818−```
819−~your-urbit:dojo> |start %curl
820−```
821−
822−---
823−
824−### Dojo manual
825−
826−#### Sources and sinks
827−
828−A Dojo command is either a **source** or a **sink**. A source is just something
829−that can be printed to your console or the result of some computation. A
830−sink is an **effect**: a change to the filesystem, a network message, a
831−change to your environment, or a typed message to an app.
832−
833−Sources can be chained together, but we can only produce one effect per
834−command.
835−
836−#### Sinks
837−
838−#### `=` - Set variable
839−
840−Set any environment variable:
841−
842−```
843−~your-urbit:dojo> =foo 42
844−~your-urbit:dojo> (add 2 foo)
845−
846−44
847−```
848−
849−Make sure to note that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
850−variable in a `.hoon` file in this way.
851−
852−#### Special variables
853−
854−There are a few special variables that the Dojo maintains.
855−
856−#### `:` - Send to app
857−
858−`:app` goes to a local `app`, `:~ship/app` goes to the `app` on `~ship`.
859−
860−Send a `helm-hi` message to `hood`:
861−
862−```
863−~your-urbit:dojo> :hood &helm-hi 'hi'
864−```
865−
866−Apps usually expect marked data, so `&` is often used here.
867−
868−#### `*` - Save in `%clay`
869−
870−Save a new `.hoon` file in `gen`:
871−
872−```
873−~your-urbit:dojo> *%/gen/foo/hoon '# hello'
874−```
875−
876−The last component of the path is expected to be the mark (or mime
877−type).
878−
879−#### `.` - Export to Unix
880−
881−Export a noun to Unix with `.`:
882−
883−```
884−~your-urbit:dojo> .foo/bar/baz (add 2 2)
885−```
886−
887−Which creates a file at `pier/.urb/put/foo/bar.baz`.
888−
889−This is very often used with `+solid`:
890−
891−```
892−~your-urbit:dojo> .urbit/pill +solid
893−```
894−
895−Which outputs a new `urbit.pill` to `pier/.urb/put/urbit.pill`
896−
897−### Sources
898−
899−#### `_` - Run a function
900−
901−Use `_` to run a gate (or function):
902−
903−Write an arbitrary function and pass data to it:
904−
905−```
906−~your-urbit:dojo> _|=([a=@] (mul a 3)) 3
907−9
908−```
909−
910−Use a function to get the status code from an http request:
911−
912−```
913−~your-urbit:dojo> _|=([p=@ud q=* r=*] p) +http://google.com
914−301
915−```
916−
917−#### `+` `-` - HTTP requests
918−
919−`+http[s]://example.com` - sends a GET request
920−
921−`+http[s]://example.com &json [%s 'hi']` - sends a POST request with the
922−JSON `"hi"` in the body.
923−
924−`-http[s]://example.com &json [%s 'hi']` - sends a PUT request with the
925−JSON `"hi"` in the body.
926−
927−Note that the first of these is a source while the last two are sinks.
928−
929−#### `+` - Generators
930−
931−Generators are simple Hoon scripts loaded from the filesystem. They live
932−in `gen/`.
933−
934−An example of a generator that is built into your urbit is `+code`. It produces
935−the code needed to log into your ship remotely.
936−
937−```
938−~your-urbit:dojo> +code
939−fintyr-haldet-fassev-solhex
940−```
941−
942−### Variables
943−
944−You can use `=` to set an environment variable in Dojo, but there are
945−a few reserved names that have special uses.
946−
947−#### `dir`
948−
949−Current working `%clay` desk and revision. Read / write.
950−
951−**Examples:**
952−
953−```
954−~your-urbit:dojo> =dir %/gen
955−~your-urbit:dojo> +ls %
956−404/hoon docs/ dojo/hoon lib/ listen/hoon md static/udon talk/ testing/udon tree/main/ unmark/ womb/
957−```
958−
959−#### `lib`
960−
961−Current set of libraries (`/lib`) in your environment. Can be set
962−with `/+`. Read / write.
963−
964−**Examples:**
965−
966−```
967−~your-urbit:dojo> /+ number-to-words
968−```
969−Now we can use arms from lib/number-to-words.hoon
970−```
971−~your-urbit:dojo> (to-words:eng-us:number-to-words 123.456)
972−```
973−
974−#### `sur`
975−
976−Current set of structures (`/sur`) in your environment. Can be set
977−with `/-`. Read / write.
978−
979−**Examples:**
980−
981−```
982−~your-urbit:dojo> /- sole
983−```
984−Now we can use arms in sur/sole.hoon.
985−```
986−~your-urbit:dojo> `sole-effect:sole`[%bel ~]
987−```
988−
989−#### `now`
990−
991−The current (128-bit `@da`) time. Read-only.
992−
993−**Example:**
994−
995−```
996−~your-urbit:dojo> now
997−~2016.3.21..21.10.57..429a
998−```
999−
1000−#### `our`
1001−
1002−The current urbit ship. Read-only.
1003−
1004−**Example:**
1005−
1006−```
1007−~your-urbit:dojo> our
1008−~your-urbit
1009−```
1010−
1011−#### `eny`
1012−
1013−512 bits of entropy. Read-only.
1014−
1015−**Example:**
1016−
1017−```
1018−~your-urbit:dojo> eny
1019−\/0vnt.d474o.gpahj.jcf3o.448fh.2lamb.82ljm.8ol8u.b02vi.mrvvp.b7et2.knb7m.l8he\/
1020− 8.8qb9s.drm36.77n9b.a0qst.30g03.l5lb5.nvsbc.v39tn
1021−\/
1022−```
1023−
1024−### Troubleshooting
1025−
1026−If you encounter `%dy-edit-busy` while entering commands, it is
1027−because your Dojo is blocked on a timer or an HTTP request. Type backspace
1028−and your Dojo will end the blocked command.
1029−
1030−
1031−## Filesystem {#filesystem}
1032−
1033−Urbit has its own revision-controlled filesystem, Clay. Clay is a typed, global,
1034−referentially transparent namespace. An easy way to think about it is like typed
1035−`git`.
1036−
1037−The most common way to use Clay is to mount a Clay node in a Unix directory. The mounted directory is always at the root of your pier directory.
1038−
1039−### Quickstart
1040−
1041−This quick-start guide will walk you through some common commands. Follow along
1042−using your Dojo. When you get a `>=` message after entering a command, this means
1043−that the command was successful.
1044−
1045−It's important to note that whenever you want to sync changes from your Unix
1046−directory to your ship, you must use the `|commit %desk` command, where `%desk`
1047−is the desk that you'd like to sync to.
1048−
1049−When developing it's a good idea to use a separate desk. Create a `%sandbox`
1050−desk based on the `%home` desk:
1051−
1052−```
1053−~your-urbit:dojo> |merge %sandbox ~your-urbit %home
1054−```
1055−
1056−Running `our` produces your ship-name, meaning that you can run the following
1057−command instead of typing out the entire thing. Useful for comets due to their
1058−very long names.
1059−
1060−```
1061−~your-urbit:dojo> |merge %sandbox our %home
1062−```
1063−
1064−Most of the time we want to use Clay from Unix. Mount the entire contents of
1065−your `sandbox` desk to Unix:
1066−
1067−```
1068−~your-urbit:dojo> |mount /=sandbox=
1069−```
1070−
1071−To explore the filesystem from inside Urbit `+ls` and `+cat` are useful. `+ls`
1072−displays files in the current directory, and `+cat` displays the contents of
1073−a file.
1074−
1075−We can use `%` to mean "current directory." The result of the command below
1076−is just like using `ls` in a Unix terminal.
1077−
1078−```
1079−~your-urbit:dojo> +ls %
1080−```
1081−
1082−Notice how `+cat %` does the same thing. That's because everything in Clay,
1083−including directories, is a file.
1084−
1085−Sync from your friend `~some-ship`'s `%experiment` desk to your
1086−`%sandbox` desk:
1087−
1088−```
1089−~your-urbit:dojo> |sync %sandbox ~some-ship %experiment
1090−```
1091−
1092−If and when your sync is successful, you will receive a message:
1093−
1094−```
1095−activated sync from %experiment on ~some-ship to %sandbox
1096−```
1097−
1098−The ship that you sync from will get their own message indicating that you're
1099−both connected as peers:
1100−
1101−```
1102−; ~your-urbit is your neighbor.
1103−```
1104−
1105−---
1106−
1107−### Clay manual
1108−
1109−#### Paths
1110−
1111−A path in Clay is a list of URL-safe text, restricted to the characters
1112−`[a z]`,`[0 9]`, `.`, `-`, `_`, and `~`. Formally this is a `(list knot)`,
1113−meaning that each segment, delineated by `/`, is of the `knot` ASCII-text type.
1114−In other words, paths are expressed as `/foo/bar/baz`. File extensions are
1115−separated from file names with `/`, not `.`. Extensions are syntactically
1116−identical to subdirectories, except that they must terminate the path.
1117−
1118−Paths begin with a piece of data called a `beak`. A beak is formally a
1119−`(p=ship q=desk r=case)`; it has three components, and might look like
1120−`/~dozbud-namsep/home/11`.
1121−
1122−The first `beak` component is `ship`, which is, as you might guess, the name of
1123−an Urbit ship. The second component is `desk`, which is a workspace meant to
1124−contain other directories; the default desk is `%home`. The third component is
1125−`case`, which represents version information in various ways: date and time;
1126−a version sequence, which is a value incremented by one whenever a file on the
1127−given `desk` is modified; or an arbitrary plaintext label.
1128−
1129−You can find what your `beak` is at any given moment by
1130−typing `%` in the Dojo and looking at the first three results.
1131−
1132−We use `beak`s because, unlike the current internet, the Urbit network uses a
1133−global namespace. That means that a file named `example.hoon` in the `/gen`
1134−directory on the `%home` desk of your ship `~lodleb-ritrul` would have a
1135−universal address to anyone else on the network:
1136−`/~lodleb-ritrul/home/186/gen/example/hoon`. That, of
1137−course, doesn't mean that everyone on the network has privileges to access that
1138−path.
1139−
1140−The structure that combines a `beak` with further path information is called a
1141−`beam`.
1142−
1143−#### Relative paths
1144−
1145−The `%` command, which we gestured at in the above section, represents the
1146−**relative path**, which is the path where you are currently working. If your
1147−working directory is just your home desk, indicated by the
1148−prompt `~your-planet:dojo>`, then running the command below will print your
1149−working directory's `beam` information: your `beak`, and a `~` that represents
1150−the empty list since no path is present.
1151−
1152−```
1153−~your-urbit:dojo> %
1154−```
1155−
1156−`%`s can be stacked to indicate one level further up in the hierarchy for each
1157−additional `%`. Try the following command:
1158−
1159−```
1160−~your-planet:dojo> %%%
1161−```
1162−
1163−You'll probably notice that it only has your ship name and the empty list. The
1164−two additional `%`s abandoned the `case` and the `desk` information by moving
1165−up twice the hierarchy.
1166−
1167−There are no local relative paths. `/foo/bar` must be written as
1168−`%/foo/bar`.
1169−
1170−#### Substitution
1171−
1172−You don't need to write out the explicit path every time you want to reference
1173−somewhere outside of your working directory. You can substitute `=` for the
1174−segments of a path.
1175−
1176−Recall that a full address in the the Urbit namespace is a `beam`: the
1177−`/ship/desk/case/path`. If you've switched to another desk before, you're
1178−already familiar with substitution syntax:
1179−
1180−```
1181−~your-urbit:dojo> =dir /=sandbox=
1182−```
1183−
1184−The above command uses substitution to use your current `ship` and
1185−`case`; only the `desk` argument, which is located between the other two, is
1186−given something new. Without substitution, you would need to write:
1187−
1188−```
1189−~your-urbit:dojo> =dir /~your-urbit/sandbox/85
1190−```
1191−
1192−Substitutions work the same way in `beak`s (the `ship/desk/case` part) and
1193−paths. For example, if you are in the `/gen` directory, you can reference a file
1194−in the `/app` directory like below. (`+cat` displays the contents of a file).
1195−
1196−```
1197−~your-urbit:dojo> =dir %/gen
1198−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> +cat /===/app/curl/hoon
1199−```
1200−
1201−Note what was substituted out, and note that we don't need to separate `=` with
1202−`/`.
1203−
1204−If we changed our working directory to something called `/gen/gmail`, we could
1205−access a file called
1206−
1207−```
1208−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %/gmail
1209−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /===/app/=/split/hoon
1210−```
1211−
1212−Because both paths share a directory named `/gmail` at the same position in the
1213−address hierarchy – which, if you recall, is just a `list` – the above command
1214−works!
1215−
1216−We can do the same thing between desks. If `%sandbox` has been merged with
1217−`%home`, the following command will produce the same results as the above
1218−command.
1219−
1220−```
1221−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /=sandbox=/app/=/split/hoon
1222−```
1223−
1224−Most commonly this is used to avoid having to know the current revision
1225−number in the `dojo`: `/~lodleb-ritrul/home/~2018.10.2..00.35.44..d7e8/gen/example/hoon`
1226−
1227−#### Changing directories
1228−
1229−Change the working directory with `=dir`. It's our equivalent of the Unix `cd`.
1230−
1231−For example, the syntax to navigate to `/home/gen/ask` is:
1232−
1233−```
1234−~your-urbit:dojo> =dir /=home=/gen/ask
1235−```
1236−
1237−This command will turn your prompt into something like this:
1238−
1239−```
1240−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask>
1241−```
1242−
1243−Using `=dir` without anything else uses the null path, which returns you to
1244−your home desk.
1245−
1246−```
1247−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask> =dir
1248−```
1249−
1250−Your dojo prompt will turn back into `~your-urbit:dojo>`.
1251−
1252−To go up levels in the path hierarchy, recall the relative path expression
1253−`%`. Stacking them represents another level higher in the hierarchy than
1254−the current working directory for each `%` beyond the initial. The command below
1255−brings you one level up:
1256−
1257−```
1258−~your-urbit:dojo> =dir %/gen
1259−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %%
1260−```
1261−
1262−### Revision-control
1263−
1264−#### Mount
1265−
1266−Syntax: `|mount /clay/path [Unix-name]`
1267−
1268−Mount the `clay-path` at the Unix mount point `Unix-name`.
1269−
1270−**Examples:**
1271−
1272−```
1273−|mount %/gen generators
1274−```
1275−
1276−Mounts `%/gen` to `/generators` inside your pier directory.
1277−
1278−#### Unmount
1279−
1280−```
1281−|unmount [clay-path || Unix-name]
1282−```
1283−
1284−Unmount the path or name from Unix.
1285−
1286−**Examples:**
1287−
1288−```
1289−|unmount %/gen
1290−```
1291−
1292−Unmounts the Clay path `%/gen` from whatever name it was mounted as.
1293−
1294−```
1295−|unmount %generators
1296−```
1297−
1298−Unmounts the Unix path `/generators`.
1299−
1300−#### Merge
1301−
1302−```
1303−|merge desk beak[, =gem strategy]
1304−```
1305−
1306−Merges a `beak` into a `desk` using an optional merge `strategy`.
1307−
1308−A `beak` is a ship-desk-case triple, encoded as a
1309−path(`/~dozbud/home/2`)
1310−
1311−**Examples:**
1312−
1313−```
1314−|merge %home-work /=home=, =gem %fine
1315−```
1316−
1317−Merge `/=home=` into `%home-work` using merge strategy `%fine`.
1318−
1319−```
1320−|merge %examples ~wacbex-ribmex %examples
1321−```
1322−
1323−Merge the `%examples` desk from `~waxbex-ribmex`
1324−
1325−#### Sync
1326−
1327−```
1328−|sync desk plot [plot-desk]
1329−```
1330−
1331−Subscribe to continuous updates from remote `plot` on local `desk`.
1332−`plot-desk` can specify the remote `desk` name. When omitted it defaults
1333−to being the same as `desk`. Non-comet urbits have
1334−`|sync %home ~parent %kids` automatically set up (where `~parent` is the
1335−planet that issued a moon, the star that issued a planet, or the galaxy
1336−that issued a star).
1337−
1338−**Examples:**
1339−
1340−```
1341−|sync %home-local ~dozbud %home
1342−
1343−|sync %home ~doznec
1344−```
1345−
1346−#### Unsync
1347−
1348−```
1349−|unsync desk plot [plot-desk]
1350−```
1351−
1352−Unsubscribe from updates from remote `plot` on local `desk` with
1353−optional `plot-desk`. Arguments must match original `|sync` command.
1354−
1355−Example:
1356−
1357−```
1358−|unsync %home-local ~dozbud %home
1359−```
1360−
1361−#### Label
1362−
1363−```
1364−|label desk name
1365−```
1366−
1367−Label the current version of `desk` `name`.
1368−
1369−Example:
1370−
1371−```
1372−|label %home release
1373−```
1374−
1375−### Merge strategies
1376−
1377−See [Clay merge strategies](@/docs/tutorials/arvo/clay.md#merge-strategies).
1378−
1379−### Manipulation
1380−
1381−#### `+cat`
1382−
1383−Syntax: `+cat path [path ...]`
1384−
1385−Similar to Unix `cat`. `+cat` takes one or more `path`s, and prints their
1386−contents. If that `path` is a file, the contents of the file is printed. If the
1387−`path` terminates in a directory, the list of names at that path is produced.
1388−
1389−#### `+ls`
1390−
1391−Syntax: `+ls path`
1392−
1393−Similar to Unix `ls`. `+ls` takes a single `path`.
1394−
1395−Produces a list of names at the `path`.
1396−
1397−```
1398−~your-urbit:dojo> +cat %/our/home/gen/curl/hoon
1399−```
1400−
1401−#### `|rm`
1402−
1403−Syntax: `|rm path`
1404−
1405−Remove the data at `path`. `Path` must be a path to the actual node, not a
1406−'directory'.
1407−
1408−#### `|cp`
1409−
1410−Syntax: `|cp to from`
1411−
1412−Copy the file at `from` into the path `to`.
1413−
1414−#### `|mv`
1415−
1416−Syntax: `|mv to from`
1417−
1418−Move the file at `from` into the path `to`.
1419−
1420−In Clay, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
1421−doesn't happen unless the `|cp` succeeds.
content/using/os/filesystem.md+1−1
@@ -350,7 +350,7 @@ Example:
350350
351351### Merge strategies
352352
353−See [Clay merge strategies](@/docs/tutorials/arvo/clay.md#merge-strategies).
353+See [Clay merge strategies](@/docs/arvo/clay/clay.md#merge-strategies).
354354
355355### Manipulation
356356
content/using/os/shell.md+1−1
@@ -33,7 +33,7 @@ Tall-form Hoon may require multiple lines:
3333~your-urbit:dojo< 2
3434```
3535
36−Hoon uses something called [the subject](@/docs/tutorials/hoon/hoon-school/the-subject-and-its-legs.md).
36+Hoon uses something called [the subject](@/docs/hoon/hoon-school/the-subject-and-its-legs.md).
3737The Dojo has its own subject and that's where Hoon's equivalent of variables,
3838called faces, are stored.
3939
content/using/os/stars-and-galaxies.md+2−2
@@ -6,7 +6,7 @@ aliases = ["/docs/using/operating-a-star/"]
66template = "page_indiced.html"
77+++
88
9−To boot your galaxy or star, follow our [installation instructions](@/using/running/install.md).
9+To boot your galaxy or star, follow our [installation instructions](@/using/install.md).
1010
1111### Hosting your star
1212
@@ -27,7 +27,7 @@ By default, your star accepts software updates from its galaxy and routes them t
2727
2828#### Breaches
2929
30−To ensure new planets can connect to your ship, users are expected to participate in network-wide breaches by [updating to the latest Urbit version](@/using/running/install.md), deleting (or archiving) your pier, and then booting your ship using the new binary. If you don’t participate, you won’t be able to communicate with anyone on the network who has updated to the new era.
30+To ensure new planets can connect to your ship, users are expected to participate in network-wide breaches by [updating to the latest Urbit version](@/using/install.md), deleting (or archiving) your pier, and then booting your ship using the new binary. If you don’t participate, you won’t be able to communicate with anyone on the network who has updated to the new era.
3131
3232Network-wide breaches are distinct from personal breaches, wherein an individual ship cycles its personal network keys using Bridge, and then follows the same steps outlined above.
3333
content/using/os/using-your-ship.md+2−2
@@ -155,7 +155,7 @@ in this example.
155155
156156Put `<key>` in a file and that file becomes `<keyfile>`.
157157
158−You can use the resulting output in the same installation flow from the [Installing Urbit](@/using/running/install.md) guide, following the same scheme as for booting a planet. That scheme is:
158+You can use the resulting output in the same installation flow from the [Installing Urbit](@/using/install.md) guide, following the same scheme as for booting a planet. That scheme is:
159159
160160```sh
161161$ ./urbit -w <moonname> -G <key> -c <piername>
@@ -217,7 +217,7 @@ When this happens, back up any files you'd like to save, shut down your urbit, a
217217
218218You can check your ship's _life_ and _rift_ number by running `+keys our` in
219219dojo. You can inspect another ship's life and rift number by running `+keys
220−~sampel-palnet`. For information on what life and rift are, see [Guide to Breaches](@/docs/tutorials/guide-to-breaches.md).
220+~sampel-palnet`. For information on what life and rift are, see [Guide to Breaches](@/using/id/guide-to-breaches.md).
221221
222222## DNS proxying {#dns-proxying}
223223
content/using/planet.md+2−2
@@ -5,7 +5,7 @@ description = "Getting started with a permanent Urbit identity."
55template = "page_indiced.html"
66+++
77
8−A planet is a permanent Urbit identity. Like all Urbit identities, they can never be taken away from you. Unlike comets which are free, planets are designed for use well into the future. If you're not yet familiar with the Urbit network, please follow the [Getting Started guide](/using/running/install), which will explain the bafasdfsics and walk you through using a free identity. This guide explains the next steps.
8+A planet is a permanent Urbit identity. Like all Urbit identities, they can never be taken away from you. Unlike comets which are free, planets are designed for use well into the future. If you're not yet familiar with the Urbit network, please follow the [Getting Started guide](@/using/install.md), which will explain the bafasdfsics and walk you through using a free identity. This guide explains the next steps.
99
1010### Purchase a planet {#purchase}
1111
@@ -103,7 +103,7 @@ The first thing you generally want to do with a new planet is to **mount** it. A
103103
104104The `>=` output means that a command was successful. Now you can see your planet's files in its directory.
105105
106−To understand what happened with this command, read more about Urbit’s filesystem (called “clay”) [here](@/docs/tutorials/arvo/clay.md).
106+To understand what happened with this command, read more about Urbit’s filesystem (called “clay”) [here](@/docs/arvo/clay/clay.md).
107107
108108## Updating {#updating}
109109
content/using/running/hosting.md+3−3
@@ -104,8 +104,8 @@ Continuing to follow the DO docs we're going to configure the ufw firewall.
104104 ```
105105
106106## Installing Urbit
107−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/running/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.
108− - **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 [guide to breaches](@/docs/tutorials/guide-to-breaches.md) to fix things.
107+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.
108+ - **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 [guide to breaches](@/using/id/guide-to-breaches.md) to fix things.
109109 - The first thing you're going to want to do is shut down your local ship, either with control-d or `|exit` in dojo.
110110 - Next we're going to install Urbit on the server and permit it to bind to the web ports:
111111 ```
@@ -167,7 +167,7 @@ On iOS you can save a website to your homescreen as an icon. If you do this for
167167 - [Digital Ocean Nginx Installation][DO Nginx Install]
168168 - [Digital Ocean Nginx Config][DO Nginx Config]
169169 - [Digital Ocean SSL Cert Setup][DO SSL Config]
170− - [Urbit Install Docs](@/using/running/install.md)
170+ - [Urbit Install Docs](@/using/install.md)
171171 - [Urbit Basic Cloud Install][Urbit Basic Cloud Install]
172172
173173 [Gandi]: https://www.gandi.net/
templates/sections/docs/hoon.html+1−1
@@ -25,7 +25,7 @@
2525<div class="measure-wide mb4">
2626{{ section.content | safe }}
2727
28−{% set lessons = get_section(path="docs/tutorials/hoon/hoon-school/_index.md") %}
28+{% set lessons = get_section(path="docs/hoon/hoon-school/_index.md") %}
2929
3030<ul>
3131 <h2 class="mv4">Chapter 1</h2>