Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion concepts/discovery.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ that endpoint. So the Pkarr packet currently only needs to contain the EndpointI
the relay URL of its preferred relay server (which we call its "home relay").
When Pkarr publishing is enabled on your iroh endpoint, your endpoint will create a
Pkarr packet with its EndpointID and relay URL, sign it, and defaults to publishing
on an `iroh-dns` server that is run by [the n0 team](https://n0.computer).
on an `iroh-dns` server that is run by [n0.computer](https://n0.computer).

From there, others can discover your dialing information by resolving your EndpointID using regular DNS. It's worth noting that others must still learn your endpoint
ID for this to work.
Expand Down
7 changes: 1 addition & 6 deletions concepts/relays.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ iroh networks. Anecdotal evidence points to roughly 9 out of 10 networking condi

## Public relays

iroh is configured with a set of public relays provided by [The n0
team](https://n0.computer) that are free to use. The public relays rate-limit
iroh is configured with a set of public relays provided by [n0.computer](https://n0.computer) that are free to use. The public relays rate-limit
traffic that flows through the relay. This is to prevent abuse, and ensure the
relays are available to everyone. There are no guarantees around uptime or
performance when using the public relays.
Expand All @@ -33,10 +32,6 @@ servers that are either self-hosted or provided as a managed service. Dedicated
relays provide better performance, security, and uptime guarantees compared to
the public relays.

Relay code is open source! You can run your own relay server, or [pick a hosting
provider](/iroh-services).


## Why this architecture is powerful

This approach makes uptime management significantly easier compared to
Expand Down
42 changes: 42 additions & 0 deletions connecting/custom-relays.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@


By default, iroh endpoints will use public relays to facilitate connections when direct
peer-to-peer connections are not possible. These relays are managed and
maintained by [n0.computer](https://n0.computer).

For production use cases, you will want to set up your own private relays, to
ensure that your traffic is not mixed with other users, and to have more control
over the relay infrastructure.

For more information about getting help with hosting, please see our [hosting page](https://iroh.computer/services/hosting) or [professional services](https://iroh.computer/services/support).

## Configuration

```rust
use iroh::Endpoint;
use iroh::relay::RelayUrl;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Configure your endpoint with dedicated relays
let relay_url1: RelayUrl = "RELAY_URL_1".parse()?;
let relay_url2: RelayUrl = "RELAY_URL_2".parse()?;

let endpoint = Endpoint::builder()
.relay_mode(iroh::endpoint::RelayMode::Custom(vec![relay_url1, relay_url2]))
.bind()
.await?;

Ok(())
}
```

## Recommended Relay Setup

For production use cases, we recommend setting up at least two relays in
different geographic regions. This ensures that if one relay goes down or
becomes unreachable, your endpoints can still connect through the other relay.

Each relay can handle up to 10,000 concurrent connections, so for larger scale
deployments, you may need to set up multiple relays in each region or [contact
us to increase the size of your relays](https://cal.com/team/number-0/n0-protocol-services).
8 changes: 3 additions & 5 deletions deployment/dedicated-infrastructure.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ DNS and end-to-end encryption over relays. This infrastructure comprises:

Relays forward traffic when direct connections are not possible as well
as facilitates holepunching for direct connections. These servers are managed and
maintained by [the n0 team](https://n0.computer), and are shared by a global public network of
maintained by [n0.computer](https://n0.computer), and are shared by a global public network of
developers.

We recommend using the public relays for development and testing, as they are
Expand All @@ -37,12 +37,10 @@ If you require more control over your relay infrastructure, you can choose to
[self-host your own
relay](https://github.com/n0-computer/iroh/tree/main/iroh-relay) or [upgrade to
a managed relay service](/iroh-services/relays). This managed relay
service is monitored by [the n0 team](https://n0.computer) who maintain the iroh project, and
service is monitored by [n0.computer](https://n0.computer) who maintain the iroh project, and
offers SLAs around uptime and performance.

[Sign up for a free trial of Iroh Services](/iroh-services) to get access
to purchase a managed relay with uptime SLAs.

[Sign up for a free account](https://n0des.iroh.computer) to get started.

## Recommended setup

Expand Down
2 changes: 1 addition & 1 deletion deployment/metrics.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ metrics.pings_recv.inc();
The `iroh-metrics` crate supports exporting metrics in various formats, such
as Prometheus, which can be scraped by monitoring systems.

As a convenience, the iroh team runs a service that collects Prometheus metrics from
As a convenience, [n0.computer](https://n0.computer) runs a service that collects Prometheus metrics from
applications using iroh. To export your metrics to this service, you can use the
`iroh-n0des` crate.

Expand Down
2 changes: 1 addition & 1 deletion deployment/security-privacy.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ endpoint creation.
## Public Relays

iroh is by default configured to use shared public infrastructure that is
operated by [the n0 team](https://n0.computer/). Because traffic is end-to-end
operated by [n0.computer](https://n0.computer) . Because traffic is end-to-end
encrypted, relays are not able to read any of the traffic that they forward or
help connect. However, the relays are able to see metadata about connections,
such as source and destination IP addresses, connection times, and the amount of
Expand Down
1 change: 1 addition & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
"group": "Forming a Network",
"pages": [
"connecting/creating-endpoint",
"connecting/custom-relays",
"connecting/dns-discovery",
"connecting/dht-discovery",
"connecting/local-discovery",
Expand Down
Binary file added images/create-api-key.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/dns.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/new-project.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/see-api-key.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 18 additions & 4 deletions iroh-services/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,30 @@ This guide will walk you through setting up your first Iroh Services-enabled app

## Prerequisites

- An Iroh Services account. [Sign up for Iroh Services](/iroh-services)
- Rust installed on your machine
- [An Iroh Services Account](https://n0des.iroh.computer)
- [Rust Language](https://rust-lang.org/tools/install/)

*While iroh is currently only available in Rust, it can be deployed in many other languages and environments.
Please refer to our [Using Iroh Services with Other
Languages](deployment/other-languages) guide for more information.*

## Step 1: Create a Project

After signing in to Iroh Services, create a new project. This will be your control center for managing relays, metrics, and endpoints.
After signing in, [create a new project](https://n0des.iroh.computer/projects/projects/new). This will be your
sandbox for all endpoints. This is the control center where you can manage and
monitor your infrastructure, including relays, metrics, and networks.

[![Create Project](/images/new-project.png)](https://n0des.iroh.computer/projects/projects/new)


## Step 2: Get Your API Key

Navigate to your project's API Keys tab and create a new API key. You'll need this to authenticate your endpoints.
Navigate to your project's API Keys tab and create a new API key. You'll need
this to authenticate your endpoints.

![Create API Key](/images/create-api-key.png)

![See API Key](/images/see-api-key.png)

## Step 3: Add the Iroh Services Client

Expand Down
12 changes: 6 additions & 6 deletions iroh-services/relays/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,17 @@ For more information on relays, please refer to the [Relay concepts documentatio

## Hosted Relays

By default, iroh endpoints will use Iroh Services hosted relays to facilitate connections when direct
By default, iroh endpoints will use public relays to facilitate connections when direct
peer-to-peer connections are not possible. These relays are managed and
maintained by the Iroh Services team, and are shared by a global public network of
developers.
maintained by the [n0.computer](https://n0.computer), and are shared by a global public network of
developers, with rate limits.

However, for production use cases you may want to set up your own private relays, to
However, for production use cases you will want to set up your own private relays, to
ensure that your traffic is not mixed with other users, and to have more control
over the relay infrastructure.

You can do this in one of two ways:
You can do this in one of three ways:

1. **[Public Cloud Relays](/iroh-services/relays/public)**: By default, all iroh nodes will connect to the public cloud relays. These relays have no guaranteed uptime and can be subject to noisy neighbors.
2. **[Dedicated Relays](/iroh-services/relays/managed)**: You can have relays run by the number0 team, by adding them to your project through the Iroh Services platform. This is the easiest way to get started with relays, as Iroh Services will handle the setup and maintenance of the relay servers for you.
2. **[Dedicated Relays](/iroh-services/relays/managed)**: You can have relays run by the [n0.computer](https://n0.computer) , by adding them to your project through the Iroh Services platform. This is the easiest way to get started with relays.
3. **[Self-hosted](https://github.com/n0-computer/iroh/tree/main/iroh-relay)**: You can set up and manage your own relay servers using the iroh relay software. This gives you full control over the relay infrastructure, but requires more effort to set up and maintain.
10 changes: 4 additions & 6 deletions iroh-services/relays/managed.mdx
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
---
title: "Managed Relays"
description: "Dedicated relay infrastructure managed by the Iroh Services team"
description: "Dedicated relay infrastructure managed by n0.computer"
---

By default, iroh endpoints will use Iroh Services hosted relays to facilitate connections when direct
By default, iroh endpoints will use publically-hosted relays to facilitate connections when direct
peer-to-peer connections are not possible. These relays are managed and
maintained by the Iroh Services team. For production use cases, you will want to set up
your own private relays, to ensure that your traffic is not mixed with other
users, and to have more control over the relay infrastructure.
maintained by [n0.computer](https://n0.computer).

If you want to deploy your own hosted relay, you can do that through the Iroh Services
For production, you will need to deploy your own hosted relay. you can do that through the [Iroh Services](https://n0des.iroh.computer)
platform, and then add it to your rust client endpoint configuration.

## Key Benefits
Expand Down
4 changes: 2 additions & 2 deletions iroh-services/relays/public.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: "Free shared relays for development and hobby use"

By default, all endpoints will use public shared relays to facilitate connections, both forwarding traffic when direct
peer-to-peer connections are not possible as well as facilitate holepunching for
direct connections. These relays are managed and maintained by [the n0 team](https://n0.computer),
direct connections. These relays are managed and maintained by [n0.computer](https://n0.computer),
and are shared by a global public network of developers.

## Support policy
Expand All @@ -18,7 +18,7 @@ The public relays will only officially support the latest stable release of
iroh. If older versions of iroh work with the public relay, this is a happy
accident, and not something to be relied upon for production use cases.

There is no version locking. This means that iroh team reserves the right to remove
There is no version locking. This means that [n0.computer](https://n0.computer) reserves the right to remove
support for old versions of iroh from the public relay infrastructure at any
time.

Expand Down
16 changes: 13 additions & 3 deletions iroh-services/support.mdx
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
---
title: "Support"
description: "Get help with Iroh Services"
description: "Get help from the n0 computer team"
---

If you're running into issues with Iroh Services, the best place to reach out is on the [iroh discord](https://iroh.computer/discord).
If you're running into issues, the best place to reach out is on [discord](https://iroh.computer/discord).

For uptime SLAs or other enterprise support inquiries, please [contact us](mailto:hello@n0.computer).

### Shipping quality software is hard.

Much worse if you need to connect devices directly. You’ll have to hire at least one distributed systems engineer, they’ll pull & configure a library for you, throw a dart at a pile of whitepapers, and hope they’ve chosen the right techniques. If you’re lucky the first version will land after 6 months of work. When it finally does ship, the bug reports start.

“doesn’t work on hotel wifi”, “laggy”, “my phone is hot”. Users say kind things in interviews, but things are not clicking. Your networking engineer is now a networking team, the project is 8 months behind schedule, three quarters of your innovation budget is spent, and your vision of building something with real user benefits is starting to slip.

It doesn’t have to be this way. The [n0.computer](https://n0.computer) team can get you out of the food, water, & shelter phase. We can get you up & running in weeks, with the tools to scale, so you can focus on delivering meaningful software.

For uptime SLAs or professional services & support inquiries, [read
more about enterprise support](https://iroh.computer/services/support) or [book a meeting](https://n0.computer/n0ps/) with our team.
2 changes: 1 addition & 1 deletion protocols/rpc.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ takes a stab at easing the RPC burden. Take a look at the
Because of this extensive experience, we are confident that `irpc` is a good
solution for doing both in-process, cross-process, and cross-machine RPC,
especially if you are building an `iroh` protocol. Check it out and you will see
why we at [the n0 team](https://n0.computer) use it for all of the `iroh` protocols that we have created
why we at [n0.computer](https://n0.computer) use it for all of the `iroh` protocols that we have created
and maintained.

## References
Expand Down
2 changes: 1 addition & 1 deletion protocols/using-quic.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Many developers reach for iroh expecting it to completely abstract away the unde
Think of iroh as giving you **reliable, secure tunnels between peers**. This guide shows you how to use QUIC's streaming patterns to build efficient protocols inside those tunnels. Whether you're adapting an existing protocol or designing something new, understanding these patterns will help you make the most of iroh's capabilities.

<Note>
iroh uses a fork of [Quinn](https://docs.rs/iroh-quinn/latest/iroh_quinn/), a pure-Rust implementation of QUIC maintained by [the n0 team](https://n0.computer). Quinn is production-ready, actively maintained, and used by projects beyond iroh. If you need lower-level QUIC access or want to understand the implementation details, check out the [Quinn documentation](https://docs.rs/iroh-quinn/latest/iroh_quinn/).
iroh uses a fork of [Quinn](https://docs.rs/iroh-quinn/latest/iroh_quinn/), a pure-Rust implementation of QUIC maintained by [n0.computer](https://n0.computer). Quinn is production-ready, actively maintained, and used by projects beyond iroh. If you need lower-level QUIC access or want to understand the implementation details, check out the [Quinn documentation](https://docs.rs/iroh-quinn/latest/iroh_quinn/).
</Note>


Expand Down
Loading