@@ -7,443 +7,36 @@
8# Getting Started
8# Getting Started
10−This guide is broken into five parts:
10+Pages in this section are guides to getting you started with Urbit.
12−+ [Urbit Identities](#acquire)
12+But first, the absolute basics. Arvo is the name of the Urbit operating system and the name of network. Azimuth is the name of the Urbit identity layer. Urbit is the project as the whole.
13−+ [Using Bridge](#bridge)
14−+ [Installing Arvo](#arvo)
15−+ [Booting Your Ship](#boot)
16−+ [Basic Operations](#operation)
18−_If you just want to install the Urbit OS, Arvo, and don't need to be on the
14+An instance of the Arvo operating system is called a _ship_. If you want to get on the Arvo network, you need an Azimuth identity, called a _point_.
19−Urbit network, you can skip to [Installing Arvo](#arvo)._
23− ;div(id "acquire"): Urbit Identities
16+## Urbit Identities
27−Urbit's identity layer, called Azimuth, is a public-key infrastructure (PKI)
28−that uses the Ethereum blockchain. An Azimuth address, called a point,
29−functions as an identity and
30−a network address for Arvo, the Urbit OS. An instance of Arvo is called a
31−*ship*. A ship can't use the Arvo network unless it's been booted with the keys
18+An Azimuth point functions as an identity and a network address for Arvo. A ship can't use the Arvo network unless it's been booted with the keys registered to a point.
32−registered to a point.
34−Throughout this guide, we'll refer to \"Urbit identities\" and \"points\"
20+Points are generally not freely available, so you will need to either purchase one or get one from a friend. To receive one, you will need an Ethereum wallet that supports the BIP39 mnemonic seed functionality, which allows you to access your wallet with a series of dictionary words. Hardware wallets, such as Ledger and TREZOR devices, satisfy this requirement. So do various web-based wallets.
37−Points are generally not freely available, so you will need to either
22+Once you have such a wallet, give your Ethereum address to the person who agreed to give you a point. Have them transfer the point to your address, and continue to the with our guides below.
38−purchase one or get one from a friend. To receive one, you will need an Ethereum
39−wallet that supports the BIP39 mnemonic seed functionality, which allows you to
40−access your wallet with a series of dictionary words.
41−Hardware wallets, such as Ledger and TREZOR devices, satisfy this requirement.
42−So do various web-based wallets.
44−Once you have such a wallet, give your Ethereum address to the person who agreed
24+## Guides
45−to give you a point. Have them transfer the point to your address, and continue to the
48−;=
26+Follow these guides in the order that they are listed.
50− ;div(id "bridge"): Using Bridge
54−Bridge is a client for accessing and managing your Urbit identities.
28+### [Using Bridge](azimuth)
55−Importantly, Bridge also allows you to generate a keyfile that you will need to
56−boot your ship so that it can use the Arvo network. Once you boot a ship
57−with a keyfile, you can restart it later without the keyfile.
59−*Note:* Bridge allows you to make _writes_ to the blockchain, but we ask you to confirm
30+Bridge is our client for managing Azimuth points. This guide will tell you how to use it to get your point's _keyfile_, the item you need to boot your ship booted onto the Arvo network.
60−anything that will incur a transaction cost. If you plan to do anything heavy-duty, make
61−sure your Ethereum address has some pocket ETH.
63−Download Bridge [here](https://github.com/urbit/bridge/releases), and follow
32+### [Installing Urbit](installing-urbit)
64−the instructions to run that program. Get a little bit of ETH on your address,
65−enough for a couple of transactions.
67−Once the program is running in your browser, go through each step according to
34+This guide will tell you everything you need to know about installing our software.
68−what kind of wallet you have.
70−### Accept Your Transfer
36+### [Booting a Ship](booting-a-ship)
72−After you access your Ethereum address, if a point was sent to that address,
38+This guide will walk you through the process of getting your ship operational and on the Arvo network.
73−you'll come to a page that has an `Incoming Transfers` header, under which is
74−a graphic. Click the `Details ->` link under that graphic.
76−Now you'll be on the management page of your point. The transfer isn't completed
40+### [Creating a Development Ship](creating-a-development-ship)
77−yet, so click `Accept incoming transfer`. Then check both boxes and and click
78−their associated `Sign Transaction` and `Send Transaction` buttons.
80−If you already own a point, then click on the `Details ->` under your sigil in the
42+If you just want to do development work with Arvo, and don't need to be on the Urbit network, this section is for you.
81−`Your Points` section.
83−### Set Your Networking Keys
85−If you just accepted a point, you'll be returned to your point screen. Notice that
86−that links and buttons are now clickable. You now own this point!
88−Click the link that says `Set Urbit networking keys`. The field that is presented
89−in the resulting page expects a 32-byte hexadecimal string; you can generate
90−this data any way you please, but in the terminal on MacOS or Linux, you can write
93−hexdump -n 32 -e '4/4 "%08X"' /dev/random
98−It should be noted that setting your network keys is an event on the Ethereum network,
99−and will therefore cost a trivial, but non-zero, amount of
100−[gas](https://github.com/ethereum/wiki/wiki/Design-Rationale#gas-and-fees) to complete.
102−### Generate Your Keyfile
104−From the detail page associated with your point, click the `Generate Arvo Keyfile`
105−link and you'll be taken to a page with a field titled `Network seed`. This
106−field should already be filled in, and should match the hexadecimal string that you
107−entered in the previous step. If its not filled in or does not match, fill it in
108−with the correct string.
110−Click `Generate ->`, which will download a keyfile onto your machine.
112−With that keyfile in hand, you can now exit Bridge.
116− ;div(id "arvo"): Installing Arvo
120−Now you're ready to run Arvo. You're almost there!
122−But first, some terminology:
123−- `vere` or `urbit`: the interpreter that runs when you run a command like `urbit` or `/bin/urbit` in your command line
124−- `arvo`: the deterministic OS that lives in a directory whose name matches your Azimuth point, ie `~famreb-todmec` lives in `/famreb-todmec`
126−Arvo runs nicely on a Unix-like operating system -- Ubuntu,
127−Fedora, macOS, and FreeBSD, for example. If you're using Windows, you'll need
128−to get one of the aforementioned systems. Don't worry: most of them are free.
130−We have different installation instructions for different platforms. To install
131−and run Arvo, run the commands that are listed for your operating system.
133−On any platform, you can check your Arvo installation by running the `urbit`
134−command. Installation was successful if you get a block of output that begins
138−Urbit: a personal server operating function
147−C compiler (gcc or clang)
166−We recommend using the Homebrew package manager to run Arvo on MacOS.
172−brew install gcc git gmp libsigsegv libtool meson ninja pkg-config python2 openssl
173−git clone https://github.com/urbit/urbit
177−sudo ninja -C ./build/ meson-install
181−#### Ubuntu or Debian
187−sudo apt-get install g++ git libcurl4-gnutls-dev libgmp3-dev libncurses5-dev libsigsegv-dev libssl-dev make openssl pkg-config python python3 python3-pip zlib1g-dev ninja-build
188−sudo -H pip3 install --upgrade pip
189−sudo -H pip3 install meson
191−git clone https://github.com/urbit/urbit
195−sudo ninja -C ./build/ install
205−sudo yum install autoconf automake cmake ctags gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel libtool ncurses-devel ninja-build openssl openssl-devel pkgconfig python2 python3 ragel re2c wget
207−# meson requires python 3.5; RHEL supplies wrong version
209− sudo wget https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz
210− sudo tar xzf Python-3.5.5.tgz
212− sudo ./configure --enable--optimizations
213− sudo make altinstall
216− sudo ln -s python3.5 python3
220−curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
221−sudo /usr/local/bin/python3 get-pip.py
222−# downgrade meson to avoid dependencies that redhat can't meet
223−sudo -H /usr/local/bin/pip3 install meson
226−git clone git://github.com/ninja-build/ninja.git && cd ninja
228−./configure.py --boostrap
229−sudo cp ./ninja /usr/local/bin
231−git clone https://github.com/urbit/urbit
235−sudo /usr/local/bin/ninja -C ./build/ install
245−sudo pacman -S --needed curl gcc git gmp libsigsegv ncurses ninja openssl python python-pip meson
246−git clone https://github.com/urbit/urbit
252−sudo ninja meson-install
262−sudo pkg install curl gcc git gmake gmp libsigsegv python python3 ncurses openssl gmp
263−curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
264−sudo python3 get-pip.py
265−sudo -H pip install --upgrade pip
266−sudo -H pip install meson
267−sudo pkg install ninja
268−git clone https://github.com/urbit/urbit
270−sh ./scripts/bootstrap
272−sudo ninja -C ./build/ meson-install
276−#### Amazon Web Services
282−sudo yum install gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel ncurses-devel openssl openssl-devel pkgconfig python2 python3 python3-pip wget git
283−sudo env "PATH=$PATH" pip3 install --upgrade pip
284−sudo env "PATH=$PATH" pip3 install meson
290−wget http://dl.fedoraproject.org/pub/fedora/linux/releases/25/Everything/x86_64/os/Packages/l/libsigsegv-2.10-10.fc24.x86_64.rpm
291−wget http://dl.fedoraproject.org/pub/fedora/linux/releases/25/Everything/x86_64/os/Packages/l/libsigsegv-devel-2.10-10.fc24.x86_64.rpm
292−sudo yum localinstall libsigsegv-2.10-10.fc24.x86_64.rpm
293−sudo yum localinstall libsigsegv-devel-2.10-10.fc24.x86_64.rpm
295−git clone git://github.com/ninja-build/ninja.git
297− git checkout release
298− ./configure.py --bootstrap
299− sudo cp ./ninja /usr/local/bin
303−git clone https://github.com/urbit/urbit
307−sudo env "PATH=$PATH" ninja -C ./build/ install
312−### Using a Fake Ship
314−Perhaps you want to boot a ship without an identity. We recommend doing that
315−for development purposes, or if you just want to play around with an
316−un-networked ship without getting a point. You can now use
317−the command of the scheme below to boot a fake `~zod`.
323−If you want to get on the Arvo network with your point, then continue to the
328− ;div(id "swap"): Set Up Swap
332−If you're running Urbit in the cloud on a small instance, you may need to additionally configure swap space. If you're not, skip this section.
334−Urbit wants to map 2GB of memory when it boots up. We won’t necessarily use all this memory, we just want to see it. On a normal modern PC or Mac, or on a large cloud virtual machine, this is not an issue. On some small cloud virtual machines (Amazon or Digital Ocean), the default memory configuration is smaller than this, and you need to manually configure a swapfile.
336−Digital Ocean has a post on adding swap [here](https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04). For Amazon there’s a StackOverflow thread [here](https://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance).
338−Don’t spend a lot of time tweaking these settings; the simplest thing is fine.
342− ;div(id "boot"): Booting Your Ship
347−Now the rubber meets the road. You'll be booting your ship with the keyfile
348−that you downloaded from Bridge.
350−### Step 1: Find Your Point's Name
352−This will look something like `~lodleb-ritrul`. You can see the name of your
353−point(s) when you log into your wallet using the Bridge client.
355−;img@"http://media.urbit.org/site/bridge-0.png"(width "100%");
357−### Step 2: Find the path to your keyfile
359−Find the absolute path to the keyfile that you downloaded from Bridge. Copy it.
361−### Step 3: Run the boot command
363−Type `cd` in your terminal to return to your home directory. If you want to
364−store your ship somewhere besides your home directory, change the terminal's
365−working directory to the desired directory.
367−Run the command below, except with `~sample-planet` replaced by the name of your
368−Urbit identity, and `path/to/my-planet.key` replaced with the path to your
372−urbit -w ~sample-planet -k path/to/my-planet.key
375−Or, if you'd prefer to copy your key in, you can run:
378−urbit -w ~sample-planet -G rAnDoMkEy
381−Either command will create a directory called `sample-planet/` and begin
382−building your ship. It may take a few minutes.
384−When your ship is finished booting, you will see the `~sample-planet:dojo>`
385−prompt. At that point, you should permanently erase your keyfile from your
390− ;div(id "operation"): Basic Operations
394−Welcome to your urbit! There's a few things you should do to become oriented.
398−Let's try out the Dojo, the Arvo command line and Hoon REPL:
401−~sample-planet:dojo> (add 2 2)
415−Clay, the Arvo filesystem, isn't mounted to Unix by default. Switch to the Dojo
419−~sample-planet:dojo> |mount %
428−which indicates that the command was processed.
430−`|mount %` will cause a `home/` directory to appear inside your _pier_ folder in
431−Unix (the "pier" is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files are automatically synced into your ship.
435−Landscape is web app we built for chatting and making posts on the Urbit network using the Hall messaging protocol. In the future we plan to use Landscape to run a few experimental "cities" -- private discussion communities -- as a closed beta of sorts. If you have an Azimuth point and you'd like to be involved, let us know [by email](mailto:support@urbit.org).
439−If you've successfully booted your Urbit, you can access a support channel we run on the network at `~dopzod/urbit-help`. To join, type `ctrl-x` in your ship's terminal window to toggle between the Dojo and the Talk prompts, then enter the command `;join ~dopzod/urbit-help`.
441−### Shutting Down and Restarting
443−You can turn your ship off with `ctrl-d` from the Talk or Dojo prompts.
445−To restart your ship, simply pass the name of your pier: