on master help sign in
Merge pull request #1488 from urbit/mp/getting-started
dc18e2eGordon
components/ContentArea.js+16−15
@@ -60,23 +60,24 @@ export default function ContentArea(props) {
60 </button>
60 </button>
61 </div>
61 </div>
62 </div>
62 </div>
63− <div className="w-full flex justify-center">
63+ <div className="flex justify-between">
64− {props.narrow ? (
64+ <div className="min-w-0 max-w-screen-md">
65− <Section narrow className={""}>
65+ <div className="mb-16">
66− <h2 className="mb-16 mt-24">{props.title}</h2>
66+ <h2 className="mt-24">{props.title}</h2>
67− {props.children}
67+ {props?.description && (
68− <div className="pb-24" />
68+ <p className="text-wall-400 font-bold text-xl">
69− </Section>
69+ {props.description}
70+ </p>
70− ) : (
71+ )}
71− <div className="min-w-0">
72− <h2 className="mb-16 mt-24">{props.title}</h2>
73− {props.children}
74− <div className="pb-24" />
75 </div>
72 </div>
73+ {props.children}
74+ <div className="pb-24" />
75+ </div>
76+ {!props?.disableToC && (
77+ <TableOfContents
78+ key={props.params.slug?.join("/") || Math.random()}
79+ />
76 )}
80 )}
77− <TableOfContents
78− key={props.params.slug?.join("/") || Math.random()}
79− />
80 </div>
81 </div>
81 </div>
82 </div>
82 </div>
83 </div>
content/getting-started/_index.md+12−119
@@ -1,132 +1,25 @@
1+++
1+++
2−title = "Getting Started"
2+title = "Overview"
3weight = 0
3weight = 0
4−description = "How to install Urbit."
4+description = ""
5−page_template = "page_indiced.html"
6−template = "getting-started/index.html"
7+++
5+++
8
6
9−Don't know what Urbit is? Spend ten minutes or so reading our page on
7+### Introduction
10−[Understanding Urbit](/understanding-urbit/).
11
8
12−If you want to jump right in and try out Urbit with a free, disposible ID called a **Comet**, you can download the desktop app [**Port**](#port). Once installed, start it up and hit the `Start without an ID` button. It'll take a few minutes to spin up the new Comet, then click `Launch Ship into Urbit` and you'll be at the login screen. Click on `Copy Access Key` at the bottom-left, paste it into the `Access Key` field, and hit `Continue`. You'll now be at your ship's home screen and ready to explore Urbit. You can also have a look at the [Next Steps](#next-steps) section below to help you get going.
9+Nothing about building a new OS from scratch has been easy. Or creating an identity system that adequately replaces the IP address.
13
10
14−If you want to get a permanent Urbit ID called a **Planet**, have a look at the [Get a planet](#get-a-planet) section below.
11+Getting on Urbit isn't always easy, either. The onboarding process hasn't been optimized by product managers in search of maximal profit. There's no checkbox for your interests—you have to discover them yourself.
15
12
16−If you have a **Planet** and want some help getting it up and running the first time, see the [Setting up your urbit](/getting-started/planet) guide.
13+But we like to think this hard work is exactly what makes Urbit special. **Consider yourself warned.**
17
14
18−If you want to use a **Planet** without worrying about the gritty bits, you may want to consider a [hosting provider](#hosting-providers).
15+### Why Urbit?
19
16
20−If you're technically proficient and would like greater control over the Urbit virtual machine than is possible with [Port](#port), or are setting up Urbit on a cloud droplet, try [installation using the command line](/getting-started/cli).
17+**As a user**, you can explore the people, community, and sheer novelty of the Urbit ecosystem while owning your entire experience. Your data, your messages, your apps.
21
18
22−## Get Port {#port}
19+**As a developer**, you can now build apps, a protocol for a whole suite of apps, or an entire online subculture, and distribute your work directly to your users' operating systems. No middlemen, no MEGACORPs, and no lock-in.
23
20
24−**Port** is a desktop GUI application that allows you to spin up, access, and manage your Urbit ships without any knowledge of the command line or Urbit binary.
21+Someone once said, "All the smart people I know disappear into Urbit." If you're smart, you will too — not just installing and running Urbit, but taking the first step toward deploying your Final Computer.
25
22
26−<div id="port-os" class="os mv3">
23+### Launch into Urbit
27− <input type="radio" id="port-macos" name="port-os" checked>
28− <label for="port-macos">MacOS</label>
29− <div class="tab">
30− <p>To install <strong>Port</strong> on MacOS simply download and open the <code>.dmg</code> file.</p>
31− <a href="https://github.com/urbit/port/releases/latest/download/Port.dmg" class="badge-sm bg-green-400 text-white" style="width: 12rem;">
32− Download Port
33− </a>
34− </div>
35
24
36− <input type="radio" id="port-linux" name="port-os">
25+Choose how you want to disappear into Urbit.
37− <label for="port-linux">Linux</label>
38− <div class="tab">
39−
40−We use `snap` so that **Port** can stay updated automatically. If you already have `snap` installed, simply run:
41−
42−```sh
43−sudo snap install port
44−```
45−
46−Or to install `snap` for your distribution, snapcraft provides [installation instructions](https://snapcraft.io/docs/installing-snapd).
47−
48− </div>
49−
50− <input type="radio" id="port-windows" name="port-os">
51− <label for="port-windows">Windows</label>
52− <div class="tab">
53− <p>To install <strong>Port</strong> on Windows simply download and open the <code>.exe</code> file.</p>
54− <a href="https://github.com/urbit/port/releases/latest/download/PortSetup.exe" class="badge-sm bg-green-400 text-white" style="width: 12rem;">
55− Download Port
56− </a>
57− <p><small>
58− Note: The Windows version is newly released and is not yet code signed so you will have to click through a prompt warning you about running it. If you simply click <code>more info</code> -> <code>run anyway</code> it will run.
59− </small></p>
60− </div>
61−</div>
62−
63−<style>
64− .os {
65− display: flex;
66− flex-wrap: wrap;
67− }
68− .os label {
69− order: -1;
70− padding: .5rem;
71− min-width: 70px;
72− text-align: center;
73− cursor: pointer;
74− }
75− .os input[type="radio"] {
76− display: none;
77− }
78− .os .tab {
79− display: none;
80− margin-top: 1rem;
81− width: 100%;
82− max-width: 100%;
83− }
84− .os .tab p:first-child {
85− margin-top: 0;
86− }
87− .os .tab p:last-child {
88− margin-bottom: 0;
89− }
90− .os input[type='radio']:checked + label {
91− font-weight: bold;
92− background-color: rgba(244,243,241,1);
93− border-radius: 0.5em;
94− }
95− .os input[type='radio']:checked + label + .tab {
96− display: block;
97−}
98−</style>
99−
100−## Get a planet
101−
102−There are a few ways to get your own planet:
103−
104−- Getting an invitation from a friend (or stranger).
105−- Purchasing a planet, including hosting, from a [hosting provider](#hosting-providers).
106−- Manually setting up and hosting a planet purchased from a third party such as [azimuth.shop](https://azimuth.shop/), [urbit.live](https://urbit.live), [urbit.me](https://urbit.me), [Urbitex](https://urbitex.io), [Urbit Marketplace](https://urbitmarketplace.com/), or [Wexpert Systems](https://wexpert.systems).
107−
108−## Hosting Providers {#hosting-providers}
109−
110−Hosting providers will often sell you a planet and run it for you. This option is very simple but will probably cost a regular fee.
111−
112−Urbit is designed to be portable. This means that if you sign up for hosting now but later want to leave your hosting provider and run your Urbit yourself, you should be able to work with them to obtain all of your data and boot your planet back up without losing anything.
113−
114−Using hosting does mean that you're trusting your provider with your data, but so long as you have your planet, you'll always own your identity.
115−
116−Current hosting providers are:
117−
118−- [escape pod store](https://www.escapepod.store/)
119−- [Third Earth](https://third.earth/)
120−- [Tlon Corporation](https://tlon.io)
121−- [UrbitHost](https://urbithost.com)
122−
123−## Next steps
124−
125−Once you've got your ship up and running, you might like to join the official Urbit Community group and say hello. Just click on the `Groups` app and it will open Urbit's communications suite. In Groups, hit `Join Group` and enter `~bitbet-bolbel/urbit-community`. Once joined, a new tile for the group will appear on the Groups home screen. Open that, click on the `General` channel in the sidebar, and hit `Join Channel`. It'll take a couple of minutes to download the chat history, then you'll be able to post a message.
126−
127−If you haven't already done so, we recommend spending a few minutes reading
128−[Understanding Urbit](/understanding-urbit) to get acquainted with the project.
129−Then once you've been become acquainted with your ship and explored the network
130−for awhile, consider checking out the [User's Manual](/using) which provides
131−guidance and reference material for operating your ship, as well as explanations
132−for Urbit concepts everyone should eventually learn.
content/getting-started/cli.md+4−3
@@ -2,6 +2,7 @@
2title = "Command line install"
2title = "Command line install"
3weight = 4
3weight = 4
4description = "Installation instructions for power users."
4description = "Installation instructions for power users."
5+tag = "additional"
5+++
6+++
6
7
7If you're a power user, you can run the Urbit virtual machine directly using the command line. Choose the code for your operating system and run the commands in your terminal.
8If you're a power user, you can run the Urbit virtual machine directly using the command line. Choose the code for your operating system and run the commands in your terminal.
@@ -81,9 +82,9 @@ There are five kinds of Urbit IDs but to get started you only need to know about
81
82
82A planet name looks like `~sampel-palnet`.
83A planet name looks like `~sampel-palnet`.
83
84
84−[Follow this guide](/getting-started/planet) if you have already acquired a planet.
85+[Follow this guide](/getting-started/) if you have already acquired a planet.
85
86
86−[Find a planet to purchase](/getting-started#get-a-planet)
87+[Find a planet to purchase](/getting-started/get-planet)
87
88
88---
89---
89
90
@@ -160,7 +161,7 @@ You can continue using this comet indefinitely. There are currently few differen
160
161
161A comet also comes with a long and fairly unmemorable name whereas a planet has a short name and a "sigil" (avatar) associated with it that makes it more identifiable on the network. You may notice all this within the first few minutes of using Urbit.
162A comet also comes with a long and fairly unmemorable name whereas a planet has a short name and a "sigil" (avatar) associated with it that makes it more identifiable on the network. You may notice all this within the first few minutes of using Urbit.
162
163
163−[For details of how to purchase a planet, visit this page](/getting-started#get-a-planet).
164+[For details of how to purchase a planet, visit this page](/getting-started/get-planet).
164
165
165<style>
166<style>
166 .os {
167 .os {
content/getting-started/desktop.mdnew file+114
@@ -0,0 +1,114 @@
1++++
2+title = "Desktop app"
3+description = "Run Urbit locally as a desktop application"
4+weight = 1
5++++
6+
7+### 1. Get Port
8+
9+Port is a desktop GUI application that allows you to spin up, access, and manage your Urbit ships without any knowledge of the command line or Urbit binary.
10+
11+<div id="port-os" class="os">
12+ <input type="radio" id="port-macos" name="port-os" checked>
13+ <label for="port-macos">MacOS</label>
14+ <div class="tab">
15+ <p>To install <strong>Port</strong> on MacOS simply download and open the <code>.dmg</code> file.</p>
16+ <a href="https://github.com/urbit/port/releases/latest/download/Port.dmg" class="button-lg bg-green-400 text-white" style="width: 12rem;">
17+ Download Port
18+ </a>
19+ </div>
20+
21+ <input type="radio" id="port-linux" name="port-os">
22+ <label for="port-linux">Linux</label>
23+ <div class="tab">
24+
25+We use `snap` so that **Port** can stay updated automatically. If you already have `snap` installed, simply run:
26+
27+```sh
28+sudo snap install port
29+```
30+
31+Or to install `snap` for your distribution, snapcraft provides [installation instructions](https://snapcraft.io/docs/installing-snapd).
32+
33+ </div>
34+
35+ <input type="radio" id="port-windows" name="port-os">
36+ <label for="port-windows">Windows</label>
37+ <div class="tab">
38+ <p>To install <strong>Port</strong> on Windows simply download and open the <code>.exe</code> file.</p>
39+ <a href="https://github.com/urbit/port/releases/latest/download/PortSetup.exe" class="button-lg bg-green-400 text-white" style="width: 12rem;">
40+ Download Port
41+ </a>
42+ <p><small>
43+ Note: The Windows version is newly released and is not yet code signed so you will have to click through a prompt warning you about running it. If you simply click <code>more info</code> -> <code>run anyway</code> it will run.
44+ </small></p>
45+ </div>
46+</div>
47+
48+<style>
49+ .os {
50+ display: flex;
51+ flex-wrap: wrap;
52+ }
53+ .os label {
54+ order: -1;
55+ padding: .5rem;
56+ min-width: 70px;
57+ text-align: center;
58+ cursor: pointer;
59+ }
60+ .os input[type="radio"] {
61+ display: none;
62+ }
63+ .os .tab {
64+ display: none;
65+ margin-top: 1rem;
66+ width: 100%;
67+ max-width: 100%;
68+ }
69+ .os .tab p:first-child {
70+ margin-top: 0;
71+ }
72+ .os .tab p:last-child {
73+ margin-bottom: 0;
74+ }
75+ .os input[type='radio']:checked + label {
76+ font-weight: bold;
77+ background-color: rgba(244,243,241,1);
78+ border-radius: 0.5em;
79+ }
80+ .os input[type='radio']:checked + label + .tab {
81+ display: block;
82+}
83+</style>
84+
85+### 2. Boot a comet
86+
87+A comet serves as a temporary identity for the network. It works just fine for checking out the network, but to download applications and get the full functionality of Urbit ID you’ll need a to get a planet.
88+
89+Start Port and hit the **Start without an ID** button. It'll take a few minutes to spin up the new comet.
90+
91+![](https://media.urbit.org/site/getting-started/Desktop-app-1.jpg)
92+
93+### 3. Launch your ship
94+
95+Once that's finished, click **Launch Ship into Urbit** and you'll be on the network.
96+
97+![](https://media.urbit.org/site/getting-started/Desktop-app-2.jpg)
98+
99+<div className="bg-wall-100 p-7 rounded-xl markdown-callout">
100+
101+**Want to combine the simplicity of Port with a permanent Urbit ID?**
102+
103+If you already have a planet, first get your keyfile.
104+Start Port, click the **Boot a fresh ID** option. Give your ship a name, and in the **Shipname** field, enter your planet name, like `~sampel-palnet`. For the **Key File** field, browse to the keyfile, select it, and hit **Continue**.
105+
106+Port will boot your Urbit in a few minutes!
107+
108+For more information on getting a planet, see our [Getting an Urbit ID](/guides/getting-an-urbit-id) guide.
109+
110+</div>
111+
112+### Next steps
113+
114+Learn how to [get around your urbit](/getting-started/getting-around).
content/getting-started/get-planet.mdnew file+95
@@ -0,0 +1,95 @@
1++++
2+title = "Get a planet"
3+weight = 1
4+description = "How to acquire a planet, or an Urbit ID"
5+tag = "additional"
6++++
7+
8+### What's a planet?
9+
10+Planets are a type of [Urbit ID](/understanding-urbit/urbit-id) that is useful for providing individuals long-term access to the Urbit network.
11+
12+### Where to get a planet
13+
14+There are a few ways to get your own planet:
15+
16+- Getting an invitation from a friend (or stranger)
17+- Purchasing a planet, including hosting, from a hosting provider
18+- Manually setting up and hosting a planet purchased from a third party marketplace
19+
20+### Hosting Providers {#hosting-providers}
21+
22+Hosting providers will often sell you a planet and run it for you. This option is very simple but will probably cost a regular fee.
23+
24+Urbit is designed to be portable. This means that if you sign up for hosting now but later want to leave your hosting provider and run your Urbit yourself, you should be able to work with them to obtain all of your data and boot your planet back up without losing anything.
25+
26+Using hosting does mean that you're trusting your provider with your data, but so long as you have your planet, you'll always own your identity.
27+
28+Current hosting providers are:
29+
30+- [UrbitHost](https://urbithost.com)
31+- [escape pod store](https://www.escapepod.store/)
32+- [Third Earth](https://third.earth/)
33+- [Tlon Corporation](https://tlon.io)
34+
35+### Buying a planet
36+
37+There are many places to buy a planet using either cryptocurrency or fiat.
38+
39+Layer 1 planets are the most available through marketplaces, however they can be expensive due to Ethereum gas fees. You will need an Ethereum wallet such as Metamask to purchase these planets, and will later need to sign in to Bridge with your wallet to configure your planet.
40+
41+Layer 2 planets do not require any crypto wallet management, but are at present less readily available on marketplaces.
42+
43+Don’t worry, both types work the same on the network.
44+
45+Here are a few of the places where you can buy planets:
46+
47+<div style="display: flex;padding-top: 2rem;">
48+
49+<div class="column">
50+
51+**L1 Planet Markets**
52+
53+- [Urbitex](https://urbitex.io)
54+- [Urbit.live](https://urbit.live)
55+- [Urbit.me](https://urbit.me)
56+
57+</div>
58+
59+<div class="column">
60+
61+**L2 Planet Markets**
62+
63+- [azimuth.shop](https://azimuth.shop)
64+- [\_networked subject](https://subject.network)
65+- [~mocbel house](https://mocbel.house)
66+- [Wexpert Systems](https://wexpert.systems)
67+
68+</div>
69+</div>
70+
71+<div class="rounded-xl bg-wall-100" style="padding: 2rem; margin-top: 4rem;">
72+
73+**Layer 2 for planets**
74+
75+Learn more about [layer 2 for planets](/using/id/layer-2-for-planets) in the User's Manual page on the topic.
76+
77+</div>
78+
79+### Next steps
80+
81+Got your planet?
82+
83+Get your planet [set it up locally with Port](/getting-started/easy).
84+
85+Read the [Server setup](/getting-started/fun) guide to learn how to get it set up on a server.
86+
87+Or, follow the instructions of a [hosting provider](/getting-started/hosted) and set up your planet there.
88+
89+Remember, your planet is yours and you can always change how you run your urbit in the future.
90+
91+<style>
92+ .column {
93+ flex-basis: 50%;
94+ }
95+</style>
content/getting-started/getting-around.mdnew file+79
@@ -0,0 +1,79 @@
1++++
2+title = "Getting around"
3+description = "Get around your urbit"
4+weight = 4
5++++
6+
7+### 1. Get oriented
8+
9+After you've logged into your Urbit for the first time, you're officially an Urbiter! You've unlocked the entire Urbit network with your newly-minted ID — the key to your new digital life.
10+
11+![](https://media.urbit.org/site/getting-started/Getting-around-1.jpg)
12+
13+You'll see your Home and a few pre-installed applications: Terminal, Groups, and Bitcoin. More on them in a moment.
14+
15+Above those are buttons to view System Preferences and Help and Support and check out notifications for newly-installed or recently-updated applications, respectively. The search bar helps you surface applications you already have installed, or discover developers and applications across the Urbit network.
16+
17+You'll likely want to focus on finding and joining new communities, which you can do with the **Groups** app. Click on the box to open the application.
18+
19+### 2. Join a few groups with fellow Urbiters
20+
21+No two people will ever have the same experience on Urbit. That depends entirely on who you find and where they invite you to join them. But we can set you down a good path.
22+
23+With Groups open, you'll see three boxes for **My Channels**, your local weather, and a stylized clock. You can dig into those later, but let's focus on joining new communities, which is likely one of the reasons you wanted to try out Urbit in the first place.
24+
25+Click on Join Group, and in that modal, enter [~bitbet-bolbel/urbit-community](/groups/~bitbet-bolbel/urbit-community) — the official Urbit community. You can either automatically join all channels by clicking the Join all channels checkbox, or leave it blank and hit Join Group right away. Your Urbit will connect to the P2P network and download information about the group, like a list of all its participants. When that's finished, click **View Group**.
26+
27+You're now looking at a single group and all of its channels. If you didn't choose to join all channels right away, click on an individual channel and then **Join Channel**, which immediately opens the feed of latest messages.
28+
29+Here are a few more useful groups to join:
30+
31+- [`~rondev/group-discovery`](/groups/~rondev/group-discovery): A group for finding other groups.
32+- [`~middev/the-forge`](/groups/~middev/the-forge): A group for sharing, discussing, and discovering new Urbit applications.
33+- [`~hocwyn-tipwex/uqbar-event-horizon`](/groups/~hocwyn-tipwex/uqbar-event-horizon): A community around [Uqbar](https://uqbar.network), a company creating applications and experiences on top of Urbit — notably EScape, which is an alternative to the default Groups application for joining communities and messaging with other Urbiters.
34+
35+### 3. Get more Urbit apps
36+
37+Groups are great, but Urbit goes way deeper with apps that are developed specifically for Urbit and use P2P networking for everything.
38+
39+We'll use [Canvas](/applications/~dister-norsyr-torryn/canvas) — a collaborative app for creating pixel art with others — as an example to show the process.
40+
41+Head back to your Urbit's home — the URL you used to log in and view your preinstalled apps. From there, click on the search bar and enter `~dister-norsyr-torryn/canvas`. Click on the first result, which shows you details about the developer, the license, a website for more information, and when the app was last updated.
42+
43+Click **Get App**, then **Get "Canvas"** to continue. Your Urbit gets to work, and once installation is finished, click Open App to see it in action.
44+
45+Some popular apps to get things moving:
46+
47+- [EScape](/applications/~dister-fabnev-hinmur/escape): An alternative UI to the core groups, communities, and messaging capabilities in Urbit.
48+- [Studio](/applications/~tirrel/studio): Tools for making money on the Urbit network.
49+- [Wrdu](/applications/~magped-magped-rabsef-bicrym/wrdu): A Wordle clone.
50+
51+### 4. Get help
52+
53+If you need help getting around Urbit, the best place to go is the official Urbit community: [`~bitbet-bolbel/urbit-community`](/groups/~bitbet-bolbel/urbit-community). Those in the Help channel are willing to troubleshoot or provide links to resources to help you get out of a jam.
54+
55+That community isn't for every support request, however. If your question involves an app, you're better served reaching out to the developer — for example, if you have an issue with EScape's notifications feature, reach out to Uqbar in [`~hocwyn-tipwex/uqbar-event-horizon`](/groups/~hocwyn-tipwex/uqbar-event-horizon).
56+
57+If you're having trouble with your planet or the hosting provider that's running your ship, try their support, as they'll have more context and resources to help solve your issue.
58+
59+And if you can't get through this guide and launch into Urbit, you may have luck with the [Urbit Live community](https://t.me/UrbitLiveGroup) on Telegram.
60+
61+### 5. What's next?
62+
63+You made it! You did the work and now have your Final Computer.
64+
65+What you do with it is up to you. Where you go from here is up to you. No two experiences on Urbit will be the same, so we encourage you to follow your own. Explore. Discover! Get lost and find the people who make you feel like you're not lost any more.
66+
67+Still need some bumpers to guide you along the way?
68+
69+**Learn more about using Urbit**: Check out the [User's Manual](/using/).
70+
71+**Get updates about Urbit**: [Subscribe](https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&id=be143888d2) to the Urbit Newsletter for new blog posts and events from one of the primary organizations responsible for Urbit development.
72+
73+**Join an event or meetup**: Many of the organizations and people behind Urbit host virtual and in-person events on a regular basis — check out the latest on our [Events feed](/events/).
74+
75+**Learn how to build on Urbit**: If you're the kind of person who wants to build applications directly for discerning communities with built-in identity and networking primitives, or even jump into the Urbit kernel's core, we have the most phenomenally-comprehensive information to get you started.
76+
77+- Read the [Development Docs](/docs/).
78+- Check out the development-driven [Getting Started guide](/docs/development/develop).
79+- Join [Hoon School Live (HSL)](https://hooniversity.org), the cohort-driven course that teaches you Hoon, with the goal of getting you comfortable writing generators, working with core concepts, using the standard library, and distributing code using desks.
content/getting-started/hosted.mdnew file+23
@@ -0,0 +1,23 @@
1++++
2+title = "Hosted urbit"
3+description = "Run Urbit on a managed service"
4+weight = 3
5++++
6+
7+### 1. Select a hosting provider
8+
9+Hosting providers can sell you a planet and manage the hosting for you for a regular fee. We recommend [Urbit Host](https://urbithost.com) (not directly affiliated with Urbit.org) for quickly acquiring a planet and the hosting required to make your Urbit experience accessible from anywhere.
10+
11+Two important points about hosting providers:
12+
13+- Because the provider has access to the resources that run your Urbit experience, you must trust them with your data.
14+
15+- Urbit has portable data, so you should be able to work with a hosting provider to download all your data and boot up elsewhere if you choose to migrate or start self-hosting.
16+
17+### 2. Log in
18+
19+The exact steps for logging into your Urbit will depend on your hosting provider's infrastructure and the flow they've developed. If you have questions about logging into your hosted Urbit ship, contact their support.
20+
21+### Next steps
22+
23+Learn how to [get around your urbit](/getting-started/getting-around).
content/guides/installing-applications.md → content/getting-started/installing-applications.mdrenamed+12−10
@@ -1,8 +1,10 @@
1+++
1+++
2−title = "Installing applications on Urbit"
2+title = "Installing apps"
3+tag = "additional"
4+weight = 3
3+++
5+++
4
6
5−## 1. Get on the network
7+### 1. Get on the network
6
8
7First, you’ll need to get on Urbit. You can quickly check out the network by [downloading the Port application](https://github.com/urbit/port) and booting up a comet–a temporary Urbit ID.
9First, you’ll need to get on Urbit. You can quickly check out the network by [downloading the Port application](https://github.com/urbit/port) and booting up a comet–a temporary Urbit ID.
8
10
@@ -10,13 +12,13 @@ For long-term use, you’ll want to get a permanent Urbit ID and consider a runn
10
12
11Read our [Getting Started guide](https://urbit.org/install) for details.
13Read our [Getting Started guide](https://urbit.org/install) for details.
12
14
13−## 2. Finding applications
15+### 2. Finding applications
14
16
15Urbit is still in its early stages, so you’ll need to join groups and browse around the network to discover new applications as they are being brought up.
17Urbit is still in its early stages, so you’ll need to join groups and browse around the network to discover new applications as they are being brought up.
16
18
17However, we can get started a simple app from Urbit developer [`~paldev`](/ids/~paldev).
19However, we can get started a simple app from Urbit developer [`~paldev`](/ids/~paldev).
18
20
19−## 3. Search for a Developer
21+### 3. Search for a Developer
20
22
21Once you’re on the network, you’ll see and large tiled interface with a few applications installed and a search bar on the top of the page.
23Once you’re on the network, you’ll see and large tiled interface with a few applications installed and a search bar on the top of the page.
22
24
@@ -24,16 +26,16 @@ Click and the search bar and search for the software provider’s Urbit ID.
24
26
25For example, to install the picture application, search for `~paldev` and then click on the result for `~paldev` to show his applications.
27For example, to install the picture application, search for `~paldev` and then click on the result for `~paldev` to show his applications.
26
28
27−![](https://media.urbit.org/site/application/app-guide1.png)
29+![](https://media.urbit.org/site/additional-guides/Installing-apps-1.jpg)
28
30
29−![](https://media.urbit.org/site/application/app-guide2.png)
31+![](https://media.urbit.org/site/additional-guides/Installing-apps-2.jpg)
30
32
31−## 4. Get the Application
33+### 4. Get the Application
32
34
33After selecting the “picture” app, a pane will open that shows some information about the application. Go ahead and click the “Get App” button, and confirm the following modal window to begin the installation process.
35After selecting the “picture” app, a pane will open that shows some information about the application. Go ahead and click the “Get App” button, and confirm the following modal window to begin the installation process.
34
36
35Soon you’ll have a new application tile on your home screen that will let you upload and display a picture to your home screen.
37Soon you’ll have a new application tile on your home screen that will let you upload and display a picture to your home screen.
36
38
37−![](https://media.urbit.org/site/application/app-guide3.png)
39+![](https://media.urbit.org/site/additional-guides/Installing-apps-3.jpg)
38−
40+<br><br>
39−![](https://media.urbit.org/site/application/app-guide4.png)
41+![](https://media.urbit.org/site/additional-guides/Installing-apps-4.jpg)
content/guides/joining-groups.md → content/getting-started/joining-groups.mdrenamed+18−13
@@ -1,8 +1,10 @@
1+++
1+++
2−title = "Joining groups on Urbit"
2+title = "Joining groups"
3+tag = "additional"
4+weight = 2
3+++
5+++
4
6
5−## 1. Get on the network
7+### 1. Get on the network
6
8
7First, you’ll need to get on Urbit. You can quickly check out the network by [downloading the Port application](https://github.com/urbit/port) and booting up a comet–a temporary Urbit ID.
9First, you’ll need to get on Urbit. You can quickly check out the network by [downloading the Port application](https://github.com/urbit/port) and booting up a comet–a temporary Urbit ID.
8
10
@@ -10,13 +12,13 @@ For long-term use, you’ll want to get a permanent Urbit ID and consider a runn
10
12
11Read our [Getting Started guide](https://urbit.org/install) for details.
13Read our [Getting Started guide](https://urbit.org/install) for details.
12
14
13−## 2. Open the Groups app
15+### 2. Open the Groups app
14
16
15Once you’re on the network, you’ll see and large tiled interface with a few applications installed: Terminal, Groups, and Bitcoin. Click on Groups.
17Once you’re on the network, you’ll see and large tiled interface with a few applications installed: Terminal, Groups, and Bitcoin. Click on Groups.
16
18
17−![](https://media.urbit.org/site/group/groups-guide1.png)
19+![](https://media.urbit.org/site/additional-guides/Joining-groups-1.jpg)
18
20
19−## 3. Enter the group shortcode
21+### 3. Enter the group shortcode
20
22
21We’ll start by joining Urbit Community, a friendly introductory Urbit group.
23We’ll start by joining Urbit Community, a friendly introductory Urbit group.
22
24
@@ -24,10 +26,10 @@ In the Groups app, click the “Join Group” button and enter `~bitbet-bolbel/u
24
26
25Then confirm by clicking with the second “Join Group” button.
27Then confirm by clicking with the second “Join Group” button.
26
28
27−![](https://media.urbit.org/site/group/groups-guide2.png)
29+![](https://media.urbit.org/site/additional-guides/Joining-groups-2.jpg)
28−![](https://media.urbit.org/site/group/groups-guide3.png)
30+![](https://media.urbit.org/site/additional-guides/Joining-groups-3.jpg)
29
31
30−## 4. Confirm join
32+### 4. Confirm join
31
33
32You should see a window that provides a description and group information. If not, check the spelling of the group name and address and try again.
34You should see a window that provides a description and group information. If not, check the spelling of the group name and address and try again.
33
35
@@ -35,9 +37,9 @@ Alternatively, the ship that is hosting the group may be offline.
35
37
36Click "Join Urbit Community".
38Click "Join Urbit Community".
37
39
38−![](https://media.urbit.org/site/group/groups-guide4.png)
40+![](https://media.urbit.org/site/additional-guides/Joining-groups-4.jpg)
39
41
40−## 5. Join channels
42+### 5. Join channels
41
43
42Congratulations, if you’re seeing a window like the one that appears below then you’ve joined the group!
44Congratulations, if you’re seeing a window like the one that appears below then you’ve joined the group!
43
45
@@ -45,9 +47,12 @@ There two types of channels in the left column: Chats, and Notebooks. The former
45
47
46To join a channel within the group, select a channel name from the left column, and click the Join Channel button.
48To join a channel within the group, select a channel name from the left column, and click the Join Channel button.
47
49
48−![](https://media.urbit.org/site/group/groups-guide5.png)
50+![](https://media.urbit.org/site/additional-guides/Joining-groups-4.jpg)
49−![](https://media.urbit.org/site/group/groups-guide6.png)
50
51
52+![](https://media.urbit.org/site/additional-guides/Joining-groups-6.jpg)
53+
51−## 6. Chat and post on the network
54+### 6. Chat and post on the network
52
55
53Congratulations you’re now a part of a peer-to-peer Urbit group. Be friendly, be curious, and have fun.
56Congratulations you’re now a part of a peer-to-peer Urbit group. Be friendly, be curious, and have fun.
57+
58+![](https://media.urbit.org/site/additional-guides/Joining-groups-7.jpg)
content/getting-started/planet.mddeleted−216
@@ -1,216 +0,0 @@
1−+++
2−title = "Setting up your urbit"
3−weight = 2
4−description = "Getting started with a permanent Urbit identity."
5−+++
6−
7−A planet is a permanent Urbit identity. Like all Urbit identities, they can
8−never be taken away from you. Unlike comets which are free, planets are designed
9−for use well into the future. If you're not yet familiar with the Urbit network
10−and are looking to try it out with a free Comet, are looking to purchase a
11−planet, or are looking for an easy hosting solution, see the [Getting Started
12−guide](/getting-started/) instead. This guide is for those who have already
13−obtained a planet and want to get it running for the first time.
14−
15−## Step 1: Keyfile {#keyfile}
16−
17−The Urbit runtime needs a planet's keyfile in order to boot it up for the first
18−time. The keyfile contains the private cryptographic keys necessary for a planet
19−to sign messages it sends and decrypt messages it receives. These keys are
20−separate from either your Master Ticket (if applicable) or the Ethereum keys
21−used to manage your Urbit ID. The method to obtain your planet's keyfile differs
22−slightly, depending on whether you're on a Master Ticket or use an alternative
23−custody method like a Metamask wallet, hardware wallet, etc.
24−
25−### Master Ticket
26−
27−A Master Ticket is like a paper wallet for your planet. From the planet name and
28−Master Ticket password, [Bridge](https://bridge.urbit.org) can derive everything
29−necessary to manage your Urbit ID, such as Ethereum addresses, networking keys,
30−and so on.
31−
32−If you received an email invite to Urbit or were otherwise given an invite URL
33−and claimed your planet that way, you'll likely be on a Master Ticket. To get
34−the keyfile, you can look in the `.zip` file you downloaded when claiming your
35−planet - it'll be named `sampel-palnet-1.key` (except with your planet rather
36−than `sampel-palnet`).
37−
38−If you have misplaced that `.key` file, you can also download it from
39−[Bridge](https://bridge.urbit.org). First, login to Bridge with your planet name
40−and Master Ticket password. Once in, click on `OS` and then `Download Arvo Keyfile`.
41−
42−### Other methods
43−
44−If you bought your planet from a third party such as
45−[OpenSea](https://opensea.io), [urbit.live](#https://urbit.live), or another
46−[third party](/getting-started#get-a-planet), or otherwise if someone
47−transferred the planet to an Ethereum address you own, you will probably not be
48−on a Master Ticket. This is perfectly fine and you don't need to transfer your
49−planet to a Master Ticket if you don't want to. The one small difference,
50−though, is that Bridge will not have automatically derived your keyfile.
51−Instead, you'll need to login to [Bridge](https://bridge.urbit.org) and perform
52−a transaction to set your Networking keys.
53−
54−When you visit [Bridge](https://bridge.urbit.org), you'll need to select the
55−login option that says `Metamask, Mnemonic, Hardware Wallet...`, and it will
56−have a list of options:
57−
58−- `Metamask` - If your planet is owned by your Metamask wallet, select this. It
59− may prompt you to login to Metamask, then it will ask you to sign the `Bridge Authentication Token`. Once signed, you'll be logged into Bridge.
60−
61−- `Ledger` and `Trezor` - If your planet is owned by one of these hardware
62− wallets, select the appropriate one and follow its connection process.
63−
64−- `WalletConnect` - If your planet is owned by a wallet which supports the
65− WalletConnect protocol, select this and either scan the QR code or select one
66− of the desktop options.
67−
68−- `Mnemonic`, `Ethereum Private Key` and `Ethereum Keystore` - If your planet is
69− owned by another Ethereum wallet which does not support WalletConnect, you can
70− still login with one of these. `Mnemonic` lets you paste in the BIP39 mnemonic
71− seed phrase (a series of random words) for your wallet. `Ethereum Private Key`, as the name suggests, lets you paste in the private key of the Ethereum
72− address which owns your planet. `Ethereum Keystore` lets you upload an
73− Ethereum keystore file and specify its password for decryption.
74−
75−<small>Note: Bridge runs purely in your local browser, it does not transfer any
76−secrets across the network or store any secrets on a remote server. If you'd
77−prefer though, it's also possible to run the Bridge software locally (though
78−it's a little more more complicated), see the [Readme in the Bridge Github
79−repo](https://github.com/urbit/bridge) for details.</small>
80−
81−If you've been transferred a planet and not yet accepted it, you'll need to do
82−that first (you can skip this bit if you've already done it). Having logged in
83−with one of the methods described above, you'll see see an `Incoming Transfer`
84−request. Click `Accept`, then click `Generate & Sign Transaction` (This will
85−require some ETH for transaction fees). Once the transaction's complete, click
86−on `return`.
87−
88−Now that you're logged in to Bridge and have your planet, you can set the
89−networking keys. From the main screen for your planet, hit `OS` and then
90−`Initialize Networking Keys`. If the planet has never been spawned before, you
91−can leave `Breach Continuity` unchecked. Send the transaction (this will require
92−some ETH for transaction fees). Once complete, you can click `Download Arvo Keyfile` and save the `.key` file on your computer.
93−
94−## Step 2: Install
95−
96−Urbit must run on an existing computer somewhere. Some users run their planet on
97−their personal computer, but we recommend eventually using a cloud service
98−(Digital Ocean, Linode, etc) because it allows your planet to be accessed from
99−anywhere on multiple devices. Hosting your planet in the cloud also allows it to
100−always be online and ready for automatic updates. You are welcome to run from
101−your personal computer and switch to the cloud later...all without losing any
102−data!
103−
104−### Port
105−
106−Port is an Urbit GUI application available for MacOS, Linux and Windows. This
107−option is much easier but runs locally rather than in the cloud. Note that if
108−you have your planet in the cloud, Port can also be used as a client to connect
109−to your planet's web interface. [You can download Port
110−here](/getting-started#port).
111−
112−### Command line
113−
114−Running Urbit from the command line is suitable for either a cloud installation
115−or a local installation. If you're comfortable with the command line and would
116−like greater control over the Urbit virtual machine, this is the right option.
117−The Urbit runtime is available for Linux, MacOS and Windows.
118−Additionally, there are guides for [hosting your planet on
119−DigitalOcean](/using/running/hosting) and [hosting your planet on Linode
120−(external
121−link)](https://jeremytunnell.com/2021/01/09/how-to-install-urbit-on-a-linode-vps),
122−though most other cloud providers should be fine as well. [See here for download
123−and installation instructions](/getting-started/cli).
124−
125−## Step 3: Boot
126−
127−### Port
128−
129−If you've decided to use Port, booting is very simple. Just start up Port and select `Boot a fresh ID`. Then, give your ship a name in the `Name` field - this is just for convenience, a label used locally by Port to identify your planet. In the `Shipname` field, just enter your planet name like `~sampel-palnet`. Lastly, for the `Key File`, you can browse to the keyfile you downloaded in [Step 2](#keyfile), select it, and hit `Continue`. It'll take a few minutes to boot up your ship, and then you should be good to go.
130−
131−**Important:** once a key has been used to boot a planet onto the network, it
132−cannot be used to boot that planet again later - doing so will cause
133−communication problems with other planets. For this reason you should **delete
134−the keyfile from your machine once your planet has booted successfully**. If you
135−do use the same key twice, you'll need to reset your planet to restore its
136−functionality.
137−
138−### Command line
139−
140−For other ships on the network to communicate with your ship, the computer it's
141−running on needs to be able to receive inbound UDP traffic. Therefore, it's
142−important when running your ship locally to use the `-p ames_port` flag (replace
143−`ames_port` with a public port number from 49152 to 65535) to specify on which
144−port you'll receive UDP traffic, and to forward inbound UDP traffic arriving at
145−your router on that port to your computer.
146−
147−Navigate to your `urbit` directory. Open your keyfile (it is just a text file)
148−and copy the key inside to the clipboard. Paste it into the following command,
149−except with `ames_port` replaced with a public port number, and `sampel-palnet`
150−replaced by the name of your planet. **Do not include the tilde in your planet
151−name.**
152−
153−```sh
154−./urbit -p ames_port -w sampel-palnet -G rAnDoMkEy
155−```
156−
157−Or you can copy the keyfile into the current directory and run:
158−
159−```sh
160−./urbit -p ames_port -w sampel-palnet -k ./my-planet.key
161−```
162−
163−Either command will create a directory called `sampel-palnet/` and begin booting
164−your planet. It may take a few minutes.
165−
166−When your planet is finished booting, you will see `~sampel-palnet:dojo>` (Dojo:
167−the Urbit command line).
168−
169−To log into [Landscape](/docs/glossary/landscape), check out the directions
170−[here](/getting-started/#using-landscape).
171−
172−To shut down your planet, use `Ctrl-D`.
173−
174−To start your planet up again, run the following from your `urbit` directory,
175−with `ames_port` replaced with the public port number you used when first
176−booting your ship.
177−
178−```sh
179−./urbit -p ames_port sampel-palnet
180−```
181−
182−Note that `sampel-palnet/` is the path of a folder, which we just created in
183−your `urbit` directory. This folder is called your planet's **pier**, and it
184−holds all of your data.
185−
186−Never boot multiple instances of your planet at the same time. You can prevent
187−this from happening on accident by only ever keeping a single copy of your pier.
188−
189−**Important:** once a key has been used to boot a planet onto the network, it
190−cannot be used to boot that planet again later - doing so will cause
191−communication problems with other planets. For this reason you should **delete
192−the keyfile from your machine once your planet has booted successfully**. If you
193−do use the same key twice, you'll need to reset your planet to restore its
194−functionality.
195−
196−Delete the keyfile with the command below:
197−
198−```sh
199−rm ./my-planet.key
200−```
201−
202−## Next Steps
203−
204−Once you've got your ship up and running, you might like to join the official Urbit Community group and say hello. Just click on the `Groups` app and it will open Urbit's communications suite. In Groups, hit `Join Group` and enter `~bitbet-bolbel/urbit-community`. Once joined, a new tile for the group will appear on the Groups home screen. Open that, click on the `General` channel in the sidebar, and hit `Join Channel`. It'll take a couple of minutes to download the chat history, then you'll be able to post a message.
205−
206−If you haven't already done so, we recommend spending a few minutes reading
207−[Understanding Urbit](/understanding-urbit) to get acquainted with the project.
208−Then once you've been become acquainted with your ship and explored the network
209−for awhile, consider checking out the [User's Manual](/using) which provides
210−guidance and reference material for operating your ship, as well as explanations
211−for Urbit concepts everyone should eventually learn.
212−
213−If you're interested in developing on Urbit, check out:
214−
215−- [Learn to Develop on Urbit](/docs/development/develop): Learn how to
216− contribute to or develop on Urbit.
content/getting-started/server.mdnew file+204
@@ -0,0 +1,204 @@
1++++
2+title = "Server setup"
3+description = "Run urbit on a local or cloud server"
4+weight = 2
5++++
6+
7+### 1. Get yourself a planet
8+
9+Here's some of the hard fun work we talked about earlier.
10+
11+There are two ways to get a planet.
12+
13+**A) Ask nicely**
14+
15+Visit the instructions for [launching a temporary comet with Port](/getting-started/easy), get yourself onto the network, find a group, and start conversations with people with planets to spare. Many urbiters are also active on [Twitter](https://twitter.com), where you can also ask around.
16+
17+**B) Buy a planet**
18+
19+There are many markets and individuals selling planets such as [azimuth.shop](https://azimuth.shop), [Networked Subject](https://subject.network), and [Wexpert Systems](https://wexpert.systems) for Ethereum, Bitcoin, and USD respectively.
20+
21+<div className="bg-wall-100 p-7 rounded-xl markdown-callout">
22+
23+**Layer 1 vs Layer 2 planet purchasing**
24+
25+The websites listed in B) sell Layer 2 (L2) planets -- which means they avoid Ethereum’s volatile and expensive gas fees. However, markets such as [OpenSea](https://opensea.io) and many Urbit-specific markets such as [Urbitex](https://urbitex.io) sell planets directly on Ethereum L1, which means they are significantly more expensive.
26+
27+For this reason we generally advise using a L2 planet market, unless you are interested in a very rare sigil or a particular planet name.
28+
29+</div>
30+
31+### 2. Claim your planet
32+
33+An invitation to claim your planet comes in one of two forms.
34+
35+The first is an email invitation with an Urbit ID and a Master Ticket.
36+
37+The second, only recently made available through our [L2 solution](/getting-started/layer-2-for-planets), is an activation code or a link to activate on [Bridge](https://bridge.urbit.org), which can be thought of as an Urbit account management tool.
38+
39+![](https://media.urbit.org/site/getting-started/Server-setup-1.jpg)
40+
41+Clicking a link to activate a planet on Bridge will take you to page which will generate a Master Ticket for you. Follow the instructions which will prompt you to download a copy of your Passport - your Master Ticket, management proxy, and keyfile. Store your Master Ticket and management proxy somewhere safe, hold on to the keyfile, and proceed to the next step.
42+
43+<div className="bg-wall-100 p-7 rounded-xl markdown-callout">
44+
45+**Claiming L1 planets**
46+
47+If you’ve purchased an L1 planet, you won’t need to claim it because you already own it as an NFT. Simply log into Bridge using Metamask or your wallet of choice.
48+
49+</div>
50+
51+### 3. Use Bridge to get your keyfile
52+
53+Now that you have your planet, you can create your keyfile (eg. `sample-palnet.key`), which is the cryptographic signature required to encrypt and decrypt messages on Urbit's P2P network.
54+
55+- **Claimed L2 planets**
56+ If you’ve claimed your L2 Planet then you should already have downloaded your Passport, which contains your Master Ticket and keyfile.
57+
58+- **Master Ticket holders**
59+ If you haven’t downloaded your Passport but have a Master Ticket, then you can simply log in with Bridge using the Master Ticket option with your planet name and Master Ticket password. Click the ID box near the bottom of the page to open the ID page, then click the **Download Passport** button, which contains your keyfile.
60+
61+- **L1 Planet Purchasers**
62+ Log in to Bridge with your Ethereum wallet using Metamask or the wallet of your choice with WalletConnect. Click the “OS” box on the bottom of the page to open the OS page, and then click the **Download Keyfile** button.
63+
64+### Install Urbit via the command line
65+
66+These instructions assume you have access to a **remote Linux system** running on a **VPS or cloud provider** of your choice. If you want to run Urbit locally, whether on Linux, macOS, or Windows, click the appropriate section below.
67+
68+You may also want to see the cloud hosting guide for additional details like setting your domain name and establishing a firewall, but for now, we'll focus on getting you set up as soon as possible.
69+
70+Download Urbit with the following commands:
71+
72+<div id="os" class="os">
73+ <input type="radio" id="macos" name="os" checked>
74+ <label for="macos">MacOS</label>
75+ <div class="tab">
76+
77+```bash
78+mkdir ~/urbit
79+cd ~/urbit
80+curl -JLO https://urbit.org/install/mac/latest
81+tar zxvf ./darwin.tgz --strip=1
82+~/urbit/urbit
83+```
84+
85+ </div>
86+
87+ <input type="radio" id="linux" name="os">
88+ <label for="linux">Linux</label>
89+ <div class="tab">
90+
91+```shell
92+mkdir ~/urbit
93+cd ~/urbit
94+wget --content-disposition https://urbit.org/install/linux64/latest
95+tar zxvf ./linux64.tgz --strip=1
96+~/urbit/urbit
97+```
98+
99+Linux users may need to run this command in another terminal window to access your Urbit on port 80:
100+
101+```shell
102+sudo apt-get install libcap2-bin
103+sudo setcap 'cap_net_bind_service=+ep' ~/urbit/urbit
104+```
105+
106+</div>
107+
108+ <input type="radio" id="windows" name="os">
109+ <label for="windows">Windows</label>
110+ <div class="tab">
111+
112+```winbatch
113+mkdir %USERPROFILE%\urbit
114+cd %USERPROFILE%\urbit
115+curl -JLO https://urbit.org/install/windows/latest
116+tar zxvf .\windows.tgz --strip=1
117+%USERPROFILE%\urbit\urbit
118+```
119+
120+> Windows 10 build 17063 and later includes the familiar `curl` and `tar` command-line tools.
121+
122+</div>
123+</div>
124+
125+Next, transfer `your-keyfile.key` to your server using scp or an FTP client, then move it to the `~/urbit` directory you created in the last step.
126+
127+Now you can run Urbit for the first time. Run the below command, replacing ames_port with a public port number between 49152 to 65535, sampel-palnet with the name of your planet, and sampel-palnet.key with the name of your keyfile.
128+
129+```sh
130+./urbit -p ames_port -w sampel-palnet -k ./sampel-palnet.key
131+```
132+
133+Arvo, the Urbit OS, now creates a directory called `sampel-palnet/` and begins booting your planet and establishing connections with the P2P network. When that's finished, you'll see Dojo, the Urbit command line:
134+
135+```
136+~sampel-palnet:dojo>
137+```
138+
139+Welcome to Urbit! You can skip ahead to [log in](#log-in), or stick around for some tips.
140+
141+### 4. Tips
142+
143+Check out the [cloud hosting guide](/using/running/hosting) for tips on improving the environment for Urbit, with a particular focus on establishing your domain name and using SSL for encryption.
144+
145+Shut down your planet by typing Ctrl+D into Dojo.
146+
147+To boot your planet up again, run the following command, once again replacing `ames_port` with the port you used previously, and now referencing your planet's folder.
148+
149+Your planet's folder, `sampel-palnet/`, is called your pier, and it holds all your data. If you want to migrate your data from one system to another, you must bring your pier.
150+
151+You should also delete your keyfile from your remote system to prevent yourself from using the same key twice, which will cause communication problems with other planets.
152+
153+```sh
154+rm ./your-keyfile.key
155+```
156+
157+### 5. Log in
158+
159+First, use your browser to navigate to the URL+port where your ship is running. This could be an IP address or a fully-qualified domain name, depending on how you set yours up.
160+
161+Instead of a static password, Urbit uses an Access Key, which is given by your ship itself.
162+
163+Open up the Urbit CLI again if it's not still running, and enter +code. The output is your Access Key, which you need to copy and paste into your browser. Click Continue to finish authentication and log in.
164+
165+### Next steps
166+
167+Learn how to [get around your urbit](/getting-started/getting-around).
168+
169+<style>
170+ .os {
171+ display: flex;
172+ flex-wrap: wrap;
173+ }
174+ .os label {
175+ order: -1;
176+ padding: .5rem;
177+ min-width: 70px;
178+ text-align: center;
179+ cursor: pointer;
180+ }
181+ .os input[type="radio"] {
182+ display: none;
183+ }
184+ .os .tab {
185+ display: none;
186+ margin-top: 1rem;
187+ width: 100%;
188+ max-width: 100%;
189+ }
190+ .os .tab p:first-child {
191+ margin-top: 0;
192+ }
193+ .os .tab p:last-child {
194+ margin-bottom: 0;
195+ }
196+ .os input[type='radio']:checked + label {
197+ font-weight: bold;
198+ background-color: rgba(244,243,241,1);
199+ border-radius: 0.5em;
200+ }
201+ .os input[type='radio']:checked + label + .tab {
202+ display: block;
203+}
204+</style>
content/guides/getting-an-urbit-id.mddeleted−46
@@ -1,46 +0,0 @@
1−+++
2−title = "Getting an Urbit ID"
3−+++
4−
5−Urbit IDs are NFTs on Ethereum that give you access to the Urbit Network. There are a few types of Urbit IDs, but what most people will find useful is called a planet.
6−
7−There are a few options to obtain planets.
8−
9−## A) Ask Nicely
10−
11−Some people, such as [imperceptible.computer](https://imperceptible.computer), are generously giving away planets, so if you have patience you can sign up for a free planet.
12−
13−You can also ask around on Twitter or boot up a comet and ask on the Urbit network. If you get a planet this way you’ll get an email with instructions on setting it up.
14−
15−## B) Buy a Planet
16−
17−There are many places to buy a planet using either cryptocurrency or fiat.
18−
19−Layer 1 planets are the most available through marketplaces, however they can be expensive due to Ethereum gas fees. You will need an Ethereum wallet such as Metamask to purchase these planets, and will later need to sign in to [Bridge](https://bridge.urbit.org/) with your wallet to configure your planet.
20−
21−Layer 2 planets do not require any crypto wallet management, but are at present less readily available on marketplaces.
22−
23−Don’t worry, both types work the same on the network.
24−
25−Here are just a few of the places where you can buy planets:
26−
27−**L1 Planets**
28−
29−- [Urbitex](https://urbitex.io)
30−- [Urbit.live](https://urbit.live)
31−- [Urbit.me](https://urbit.me)
32−
33−**L2 Planets**
34−
35−- [Azimuth.shop](https://azimuth.shop)
36−- [\_networked subject\_](https://subject.network/)
37−- [~mocbel house](https://mocbel.house)
38−- [Wexpert.systems](https://wexpert.systems)
39−
40−**Included With Hosting**
41−
42−- [Urbit Host](https://urbithost.com)
43−
44−## Next steps
45−
46−Once you buy your planet you’ll want to log in to Bridge to configure your planet and get your ship running. See our [Getting Started guide](/getting-started) to learn more.
content/using/id/l2-star.md+5−5
@@ -1,5 +1,5 @@
1+++
1+++
2−title = "Layer 2 Stars"
2+title = "Layer 2 for stars"
3weight = 60
3weight = 60
4template = "doc.html"
4template = "doc.html"
5+++
5+++
@@ -10,9 +10,10 @@ respect to use of [layer 2](/docs/glossary/rollups).
10## One-way trip
10## One-way trip
11
11
12Stars have three options with respect to layer 2:
12Stars have three options with respect to layer 2:
13+
13− - Layer 1
14+- Layer 1
14− - Layer 1 with Layer 2 spawn proxy
15+- Layer 1 with Layer 2 spawn proxy
15− - Layer 2
16+- Layer 2
16
17
17A layer 1 star can move to layer 1 with layer 2 spawn proxy, or to layer 2. A
18A layer 1 star can move to layer 1 with layer 2 spawn proxy, or to layer 2. A
18star on layer 1 with layer 2 spawn proxy can move to layer 2. None of these
19star on layer 1 with layer 2 spawn proxy can move to layer 2. None of these
@@ -38,4 +39,3 @@ layer, identical to layer 1 stars.
38
39
39A star on layer 2 must perform all Urbit ID related actions on layer 2. All
40A star on layer 2 must perform all Urbit ID related actions on layer 2. All
40planets spawned by the star will be on layer 2.
41planets spawned by the star will be on layer 2.
41−
content/getting-started/layer-2-for-planets.md → content/using/id/layer-2-for-planets.mdrenamed+1−1
@@ -1,6 +1,6 @@
1+++
1+++
2title = "Layer 2 for planets"
2title = "Layer 2 for planets"
3−weight = 3
3+weight = 50
4description = "Getting started with a permanent Urbit identity."
4description = "Getting started with a permanent Urbit identity."
5+++
5+++
6
6
lib/buildPageTree.js+1
@@ -57,6 +57,7 @@ function buildPageTree(dirPath, ordering = "", content = false) {
57 );
57 );
58
58
59 return {
59 return {
60+ ...data,
60 title: data.title,
61 title: data.title,
61 base: page.name,
62 base: page.name,
62 slug: page.name.replace(/.md$/, ""),
63 slug: page.name.replace(/.md$/, ""),
pages/getting-started/[[...slug]].js+236−62
@@ -5,70 +5,39 @@ import { useRouter } from "next/router";
5import classnames from "classnames";
5import classnames from "classnames";
6import { join } from "path";
6import { join } from "path";
7import { getPage } from "../../lib/lib";
7import { getPage } from "../../lib/lib";
8+import { decode } from "html-entities";
8import Markdown from "../../components/Markdown";
9import Markdown from "../../components/Markdown";
9import ContentArea from "../../components/ContentArea";
10import ContentArea from "../../components/ContentArea";
10import Sidebar from "../../components/Sidebar";
11import Sidebar from "../../components/Sidebar";
11import GettingStartedTree from "../../cache/getting-started.json";
12import GettingStartedTree from "../../cache/getting-started.json";
12
13
13−import { decode } from "html-entities";
14+export default function UsingLayout({ posts, data, params, search, markdown }) {
14−
15−const breadcrumbs = (posts, paths) => {
16− const results = [
17− <Link href="/">Urbit</Link>,
18− <span className="px-1">/</span>,
19− <Link href="/getting-started">Getting Started</Link>,
20− ];
21− let thisLink = "/getting-started";
22− for (const path of paths) {
23− posts = posts.children[path];
24− thisLink = join(thisLink, path);
25− results.push(
26− <span className="px-1">/</span>,
27− <Link href={thisLink}>{posts.title}</Link>
28− );
29− }
30− return results;
31−};
32−
33−const childPages = (thisLink, children, level = 0) => (
34− <ul className="pl-0">
35− {children?.map((child) => (
36− <li>{pageTree(join(thisLink, child.slug), child, level)}</li>
37− ))}
38− </ul>
39−);
40−
41−const pageTree = (thisLink, tree, level = 0) => {
42 const router = useRouter();
15 const router = useRouter();
43
16
44− const isThisPage = router.asPath === thisLink;
17+ const select = (href) => {
18+ const isSelected =
19+ `/getting-started${href === "" ? "" : `/${href}`}` === router.asPath;
20+ return classnames({
21+ dot: isSelected,
22+ "text-green-400": isSelected,
23+ "text-wall-500": !isSelected,
24+ });
25+ };
26+
27+ let menu = [{ title: "Overview", slug: "", weight: 0 }],
28+ additional = [];
45
29
46− const pageItemClasses = classnames({
30+ posts.pages.map((post) => {
47− "pl-0 font-semibold text-wall-500 text-base hover:text-green-400":
31+ if (post?.tag === "additional") {
48− level === 0,
32+ additional.push(post);
49− "pl-8 text-wall-600 text-base hover:text-green-400": level === 1,
33+ } else {
50− "pl-12 text-wall-600 text-base hover:text-green-400": level === 2,
34+ menu.push(post);
51− "dot relative": isThisPage,
35+ }
52− "text-green-400": isThisPage,
53 });
36 });
54
37
55− return (
38+ menu.sort((a, b) => a.weight > b.weight);
56− <>
39+ additional.sort((a, b) => a.weight > b.weight);
57− <Link href={thisLink} passHref>
58− <a className={`${pageItemClasses} cursor-pointer`}>{tree.title}</a>
59− </Link>
60− </>
61− );
62−};
63
40
64−export default function UsingLayout({ posts, data, params, search, markdown }) {
65− const router = useRouter();
66− const isSelected = "/getting-started".includes(router.asPath);
67− const selectedClasses = classnames({
68− dot: isSelected,
69− "text-green-400": isSelected,
70− "text-wall-500": !isSelected,
71− });
72 const rootClasses = "pl-0 font-semibold text-base hover:text-green-400";
41 const rootClasses = "pl-0 font-semibold text-base hover:text-green-400";
73
42
74 return (
43 return (
@@ -79,37 +48,242 @@ export default function UsingLayout({ posts, data, params, search, markdown }) {
79 </Head>
48 </Head>
80 <div className="flex h-screen min-h-screen w-screen sidebar">
49 <div className="flex h-screen min-h-screen w-screen sidebar">
81 <Sidebar search={search}>
50 <Sidebar search={search}>
51+ <p className="uppercase pb-1 font-bold text-xs text-wall-400">
52+ Getting Started
53+ </p>
82 <ul>
54 <ul>
55+ {menu.map((post) => (
83− <li>
56+ <li>
84− <Link href="/getting-started" passHref>
57+ <Link href={post.slug} passHref>
85− <a className={`relative ${selectedClasses} ${rootClasses}`}>
58+ <a className={`relative ${select(post.slug)} ${rootClasses}`}>
86− Getting Started
59+ {post.title}
60+ </a>
61+ </Link>
62+ </li>
63+ ))}
64+ </ul>
65+ <ul className="mt-8">
66+ <p className="uppercase pb-1 font-bold text-xs text-wall-400">
67+ Additional Guides
68+ </p>
69+ {additional.map((post) => (
70+ <li>
71+ <Link href={post.slug} passHref>
72+ <a className={`relative ${select(post.slug)} ${rootClasses}`}>
73+ {post.title}
87− </a>
74+ </a>
88− </Link>
75+ </Link>
89− </li>
76+ </li>
77+ ))}
90 </ul>
78 </ul>
91− {childPages("/getting-started", posts.pages)}
92 </Sidebar>
79 </Sidebar>
93 <ContentArea
80 <ContentArea
94 breadcrumbs={breadcrumbs(posts, params.slug?.slice(0, -1) || "")}
81 breadcrumbs={breadcrumbs(posts, params.slug?.slice(0, -1) || "")}
95 title={data.title}
82 title={data.title}
83+ description={data.description}
96 search={search}
84 search={search}
97 section={"Getting Started"}
85 section={"Getting Started"}
98 params={params}
86 params={params}
87+ disableToC
99 >
88 >
100 <div className="markdown">
89 <div className="markdown">
101 <article
90 <article
102 dangerouslySetInnerHTML={{ __html: decode(markdown) }}
91 dangerouslySetInnerHTML={{ __html: decode(markdown) }}
103 ></article>
92 ></article>
104 </div>
93 </div>
94+ {!params?.slug && <LaunchCards />}
105 </ContentArea>
95 </ContentArea>
106 </div>
96 </div>
107 </>
97 </>
108 );
98 );
109}
99}
110
100
101+const breadcrumbs = (posts, paths) => {
102+ const results = [
103+ <Link href="/">Urbit</Link>,
104+ <span className="px-1">/</span>,
105+ <Link href="/getting-started">Getting Started</Link>,
106+ ];
107+ let thisLink = "/getting-started";
108+ for (const path of paths) {
109+ posts = posts.children[path];
110+ thisLink = join(thisLink, path);
111+ results.push(
112+ <span className="px-1">/</span>,
113+ <Link href={thisLink}>{posts.title}</Link>
114+ );
115+ }
116+ return results;
117+};
118+
119+function LaunchCards() {
120+ const info = [
121+ {
122+ title: "Desktop app",
123+ subtitle: "Deploy Urbit on your local system",
124+ points: [
125+ {
126+ title: "Benefits",
127+ content: ["Free", "Set up in minutes"],
128+ },
129+ {
130+ title: "Considerations",
131+ content: ["Limited functionality with certain applications"],
132+ },
133+ ],
134+ svg: (
135+ <svg
136+ width="35"
137+ height="49"
138+ viewBox="0 0 35 49"
139+ fill="none"
140+ xmlns="http://www.w3.org/2000/svg"
141+ >
142+ <path
143+ d="M7.43609 18.2477H10.856V2.43515C10.8608 1.09 11.9608 1.65662e-05 13.3153 1.65662e-05H21.4235C22.0767 -0.00236832 22.7012 0.252829 23.1623 0.71078C23.6234 1.16632 23.8828 1.7888 23.8828 2.43515V18.2477H27.3123C28.3714 18.2453 29.3393 18.8535 29.7883 19.8075C30.2399 20.7639 30.091 21.8896 29.4089 22.6982L19.4734 34.5206C18.9523 35.1359 18.1837 35.4937 17.3744 35.4937C16.565 35.4937 15.7965 35.136 15.2753 34.5206L5.3325 22.6982C4.64802 21.8896 4.50151 20.7591 4.95304 19.8051C5.40457 18.8511 6.37481 18.2429 7.43635 18.2477H7.43609Z"
144+ fill="#24221E"
145+ />
146+ <path
147+ d="M0 46.4217V44.5866C0.00657627 43.5411 0.854839 42.6928 1.90369 42.6928H32.8365C33.8853 42.6928 34.7336 43.5411 34.7402 44.5866V46.4217C34.7402 47.4738 33.8886 48.3287 32.8365 48.3352H1.90369C0.851556 48.3286 0 47.4738 0 46.4217Z"
148+ fill="#24221E"
149+ />
150+ </svg>
151+ ),
152+ href: "/getting-started/desktop",
153+ },
154+ {
155+ title: "Server setup",
156+ subtitle: "Deploy Urbit on a cloud/VPS provider",
157+ points: [
158+ {
159+ title: "Benefits",
160+ content: ["Complete data ownership", "Accessibility from anywhere"],
161+ },
162+ {
163+ title: "Considerations",
164+ content: [
165+ "Requires monthly cloud service subscription & (one-time) Urbit ID purchase",
166+ "Requires Linux proficiency",
167+ ],
168+ },
169+ ],
170+ svg: (
171+ <svg
172+ width="50"
173+ height="50"
174+ viewBox="0 0 61 45"
175+ fill="none"
176+ xmlns="http://www.w3.org/2000/svg"
177+ >
178+ <path
179+ fill-rule="evenodd"
180+ clip-rule="evenodd"
181+ d="M49.2551 15.2806C49.5291 16.4304 50.4122 17.3353 51.5533 17.636H51.5527C54.4975 18.5808 57.035 20.4998 58.7427 23.0815C60.4504 25.6633 61.227 28.7507 60.9424 31.8327C60.5301 35.2182 58.8836 38.3348 56.3195 40.5811C53.7554 42.8274 50.4492 44.0491 47.0418 44.0118H35.4601V35.1486H38.0641C38.8723 35.1521 39.6109 34.7022 39.9547 33.9966C40.2985 33.2909 40.1869 32.4547 39.6658 31.8567L32.0952 23.1122C31.6983 22.657 31.1132 22.3924 30.4969 22.3924C29.8807 22.3924 29.2955 22.657 28.8987 23.1122L21.3337 31.8567C20.8144 32.4547 20.701 33.2874 21.0448 33.9948C21.3867 34.7005 22.1237 35.1503 22.9301 35.1486H25.5414V44.0118H13.9581C10.5508 44.049 7.24457 42.8274 4.68045 40.5811C2.11627 38.3347 0.469828 35.2181 0.057545 31.8327C-0.227016 28.7505 0.549654 25.6631 2.25729 23.0815C3.9652 20.4998 6.50276 18.5808 9.44724 17.636C10.5883 17.3353 11.4714 16.4304 11.7454 15.2806C12.9452 9.48101 16.7593 4.5598 22.0737 1.9542C27.3911 -0.651399 33.6097 -0.651399 38.9268 1.9542C44.2412 4.56034 48.0555 9.48122 49.2551 15.2806Z"
182+ fill="#24221E"
183+ />
184+ </svg>
185+ ),
186+ href: "/getting-started/server",
187+ },
188+ {
189+ title: "Hosted urbit",
190+ subtitle: "Deploy Urbit on a managed service",
191+ points: [
192+ {
193+ title: "Benefits",
194+ content: [
195+ "Accessibility from anywhere",
196+ "Streamlined setup for ownership and identity",
197+ "No technical proficiency required",
198+ ],
199+ },
200+ {
201+ title: "Considerations",
202+ content: [
203+ "Requires monthly subscription",
204+ "Requires trust in your service provider",
205+ ],
206+ },
207+ ],
208+ svg: (
209+ <svg
210+ width="50"
211+ height="50"
212+ viewBox="0 0 50 50"
213+ fill="none"
214+ xmlns="http://www.w3.org/2000/svg"
215+ >
216+ <rect width="50" height="23.1481" rx="10" fill="#24221E" />
217+ <rect
218+ y="26.8519"
219+ width="50"
220+ height="23.1481"
221+ rx="10"
222+ fill="#24221E"
223+ />
224+ <ellipse
225+ cx="40.4167"
226+ cy="11.5741"
227+ rx="2.91667"
228+ ry="3.24074"
229+ fill="white"
230+ />
231+ <ellipse
232+ cx="40.4167"
233+ cy="38.4259"
234+ rx="2.91667"
235+ ry="3.24074"
236+ fill="white"
237+ />
238+ </svg>
239+ ),
240+ href: "/getting-started/hosted",
241+ },
242+ ];
243+ return (
244+ <div className="flex flex-col space-y-8 mt-8">
245+ {info.map((e) => {
246+ return (
247+ <div className="p-8 bg-wall-100 rounded-xl max-w-screen-md flex flex-col">
248+ <div className="flex">
249+ <div className="pl-4 pr-8 justify-center items-center flex">
250+ {e.svg}
251+ </div>
252+ <div className="flex flex-col">
253+ <h4 className="text-2xl">{e.title}</h4>
254+ <p className="font-light text-lg">{e.subtitle}</p>
255+ </div>
256+ </div>
257+ <div className="flex mt-8 border-b-neutral-300 pt-2 pb-5 ">
258+ {e.points.map((section) => {
259+ return (
260+ <div className="basis-1/2">
261+ <p className="uppercase font-bold text-sm text-black">
262+ {section.title}
263+ </p>
264+ <ul className="mx-8 my-2 list-disc text-sm flex flex-col space-y-2">
265+ {section.content.map((point) => (
266+ <li>{point}</li>
267+ ))}
268+ </ul>
269+ </div>
270+ );
271+ })}
272+ </div>
273+ <Link href={e.href} passHref>
274+ <a className="button-lg max-w-fit text-white mt-4 bg-green-400">
275+ Get Started
276+ </a>
277+ </Link>
278+ </div>
279+ );
280+ })}
281+ </div>
282+ );
283+}
284+
111export async function getStaticProps({ params }) {
285export async function getStaticProps({ params }) {
112− const posts = GettingStartedTree;
286+ let posts = GettingStartedTree;
113
287
114 const { data, content } = getPage(
288 const { data, content } = getPage(
115 join(
289 join(
pages/guides/[slug].jsdeleted−75
@@ -1,75 +0,0 @@
1−import { useRouter } from "next/router";
2−import { getPostBySlug, getAllPosts } from "../../lib/lib";
3−import Head from "next/head";
4−import Link from "next/link";
5−import Meta from "../../components/Meta";
6−import ErrorPage from "../404";
7−import Container from "../../components/Container";
8−import Markdown from "../../components/Markdown";
9−import GuideColumn from "../../components/GuideColumn";
10−import Section from "../../components/Section";
11−
12−import { decode } from "html-entities";
13−
14−export default function GuidePage({ post, markdown }) {
15− const router = useRouter();
16− if (!router.isFallback && !post?.slug) {
17− return <ErrorPage />;
18− }
19−
20− return (
21− <Container>
22− <Head>
23− <title>Urbit • {post.title}</title>
24− {Meta(post)}
25− </Head>
26− <GuideColumn>
27− <Section narrow short>
28− <h2>{post.title}</h2>
29− </Section>
30− <Section narrow short className="markdown">
31− <article
32− dangerouslySetInnerHTML={{ __html: decode(markdown) }}
33− ></article>
34− <Link href="/" passHref>
35− <a className="text-xl pt-12 block font-semibold">Urbit.org</a>
36− </Link>
37− </Section>
38− </GuideColumn>
39− </Container>
40− );
41−}
42−
43−//
44−export async function getStaticProps({ params }) {
45− const post = getPostBySlug(
46− params.slug,
47− ["title", "slug", "date", "description", "content", "extra"],
48− "guides"
49− );
50−
51− const markdown = await Markdown({ post });
52−
53− return {
54− props: { post, markdown },
55− };
56−}
57−
58−export async function getStaticPaths() {
59− const posts = getAllPosts(["slug", "date"], "guides", "date");
60−
61− const noApplications = posts.filter(
62− (e) => e.slug !== "installing-applications"
63− );
64−
65− return {
66− paths: noApplications.map((post) => {
67− return {
68− params: {
69− slug: post.slug,
70− },
71− };
72− }),
73− fallback: false,
74− };
75−}
pages/guides/installing-applications.jsdeleted−106
@@ -1,106 +0,0 @@
1−import Head from "next/head";
2−import Link from "next/link";
3−import { getPostBySlug } from "../../lib/lib";
4−import Meta from "../../components/Meta";
5−import Markdown from "../../components/Markdown";
6−import Container from "../../components/Container";
7−import GuideColumn from "../../components/GuideColumn";
8−import Section from "../../components/Section";
9−import { decode } from "html-entities";
10−
11−export default function GuidePage({ post, markdown }) {
12− return (
13− <Container>
14− <Head>
15− <title>Urbit • {post.title}</title>
16− {Meta(post)}
17− </Head>
18− <GuideColumn>
19− <Section narrow short>
20− <h2>{post.title}</h2>
21− </Section>
22− <Section narrow short>
23− <article
24− className="markdown"
25− dangerouslySetInnerHTML={{ __html: decode(markdown) }}
26− ></article>
27− <h2 className="text-3xl my-12">5. Add more applications</h2>
28− <p className="my-2">Here's a few more applications to check out:</p>
29− <Link href="/applications/~paldev/pals">
30− <div class="bg-wall-100 rounded-xl p-3 flex flex-col space-y-4 my-6 cursor-pointer">
31− <div class="flex space-x-4 items-center">
32− <div
33− class="rounded-xl"
34− style={{
35− height: 100,
36− width: 100,
37− backgroundColor: "#A6D2BE",
38− }}
39− ></div>
40− <h3>pals</h3>
41− </div>
42− <p>add people you know on the network</p>
43− </div>
44− </Link>
45−
46− <Link href="/applications/~dister-fabnev-hinmur/escape">
47− <div class="bg-wall-100 rounded-xl p-3 flex flex-col space-y-4 my-6 cursor-pointer">
48− <div class="flex space-x-4 items-center">
49− <img
50− class="rounded-xl"
51− src="https://media.urbit.org/site/application/escape.png"
52− style={{
53− backgroundColor: "#ffffff",
54− height: 100,
55− width: 100,
56− }}
57− />
58− <h3>EScape</h3>
59− </div>
60− <p>
61− an alternative interface for the Groups application, with pals
62− integration by{" "}
63− <span className="text-green-400 font-mono">~fabnev-hinmur</span>
64− </p>
65− </div>
66− </Link>
67−
68− <Link href="/applications/~paldev/rumors">
69− <div class="bg-wall-100 rounded-xl p-3 flex flex-col space-y-4 cursor-pointer">
70− <div class="flex space-x-4 items-center">
71− <div
72− class="rounded-xl"
73− style={{
74− backgroundColor: "#B17AD7",
75− height: 100,
76− width: 100,
77− }}
78− ></div>
79− <h3>rumors</h3>
80− </div>
81− <p>the more people you know, the more rumors you’ll hear</p>
82− </div>
83− </Link>
84− <Link href="/">
85− <a className="text-xl pt-12 block font-semibold">Urbit.org</a>
86− </Link>
87− </Section>
88− </GuideColumn>
89− </Container>
90− );
91−}
92−
93−//
94−export async function getStaticProps({ params }) {
95− const post = getPostBySlug(
96− "installing-applications",
97− ["title", "slug", "content"],
98− "guides"
99− );
100−
101− const markdown = await Markdown({ post });
102−
103− return {
104− props: { post, markdown },
105− };
106−}
styles/markdown.css+6
@@ -39,6 +39,12 @@
39 @apply text-base md:text-lg leading-relaxed;
39 @apply text-base md:text-lg leading-relaxed;
40}
40}
41
41
42+.markdown-callout p {
43+ @apply mt-1;
44+ @apply mb-2;
45+ font-size: 1rem;
46+}
47+
42.markdown li {
48.markdown li {
43 @apply py-2 ml-6 text-base md:text-lg;
49 @apply py-2 ml-6 text-base md:text-lg;
44}
50}
tailwind.config.js+1
@@ -2,6 +2,7 @@ module.exports = {
2 content: [
2 content: [
3 "./pages/**/*.{js,ts,jsx,tsx}",
3 "./pages/**/*.{js,ts,jsx,tsx}",
4 "./components/**/*.{js,ts,jsx,tsx}",
4 "./components/**/*.{js,ts,jsx,tsx}",
5+ "./content/**/*.md",
5 ],
6 ],
6 theme: {
7 theme: {
7 colors: {
8 colors: {
vercel.json+12
@@ -3,6 +3,18 @@
3 "silent": true
3 "silent": true
4 },
4 },
5 "redirects": [
5 "redirects": [
6+ {
7+ "source": "/guides/getting-an-urbit-id",
8+ "destination": "/getting-started/get-planet"
9+ },
10+ {
11+ "source": "/guides/installing-applications",
12+ "destination": "/getting-started/installing-applications"
13+ },
14+ {
15+ "source": "/guides/joining-groups",
16+ "destination": "/getting-started/joining-groups"
17+ },
6 {
18 {
7 "source": "/groups/~ladtem-filmyr/urbit-ny-takeover",
19 "source": "/groups/~ladtem-filmyr/urbit-ny-takeover",
8 "destination": "/groups/~ladtem-filmyr/urbit-ny-week",
20 "destination": "/groups/~ladtem-filmyr/urbit-ny-week",