diff --git a/concepts/discovery.mdx b/concepts/discovery.mdx index 92e8cf7..f485943 100644 --- a/concepts/discovery.mdx +++ b/concepts/discovery.mdx @@ -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. diff --git a/concepts/relays.mdx b/concepts/relays.mdx index a268fca..b117e52 100644 --- a/concepts/relays.mdx +++ b/concepts/relays.mdx @@ -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. @@ -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 diff --git a/connecting/custom-relays.mdx b/connecting/custom-relays.mdx new file mode 100644 index 0000000..9e565e3 --- /dev/null +++ b/connecting/custom-relays.mdx @@ -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). diff --git a/deployment/dedicated-infrastructure.mdx b/deployment/dedicated-infrastructure.mdx index ac7b9f9..7ccf563 100644 --- a/deployment/dedicated-infrastructure.mdx +++ b/deployment/dedicated-infrastructure.mdx @@ -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 @@ -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 diff --git a/deployment/metrics.mdx b/deployment/metrics.mdx index 2bccfc2..bc3fbf2 100644 --- a/deployment/metrics.mdx +++ b/deployment/metrics.mdx @@ -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. diff --git a/deployment/security-privacy.mdx b/deployment/security-privacy.mdx index 9d2f6f7..6e75b9f 100644 --- a/deployment/security-privacy.mdx +++ b/deployment/security-privacy.mdx @@ -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 diff --git a/docs.json b/docs.json index 3b12c0c..9841a5d 100644 --- a/docs.json +++ b/docs.json @@ -37,6 +37,7 @@ "group": "Forming a Network", "pages": [ "connecting/creating-endpoint", + "connecting/custom-relays", "connecting/dns-discovery", "connecting/dht-discovery", "connecting/local-discovery", diff --git a/images/create-api-key.png b/images/create-api-key.png new file mode 100644 index 0000000..fb2fc78 Binary files /dev/null and b/images/create-api-key.png differ diff --git a/images/dns.gif b/images/dns.gif index 4d4bafb..41a05a3 100644 Binary files a/images/dns.gif and b/images/dns.gif differ diff --git a/images/new-project.png b/images/new-project.png new file mode 100644 index 0000000..847bd40 Binary files /dev/null and b/images/new-project.png differ diff --git a/images/see-api-key.png b/images/see-api-key.png new file mode 100644 index 0000000..4b2174d Binary files /dev/null and b/images/see-api-key.png differ diff --git a/iroh-services/quickstart.mdx b/iroh-services/quickstart.mdx index 829e773..b8dc7a7 100644 --- a/iroh-services/quickstart.mdx +++ b/iroh-services/quickstart.mdx @@ -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 diff --git a/iroh-services/relays/index.mdx b/iroh-services/relays/index.mdx index 8b00393..080ea88 100644 --- a/iroh-services/relays/index.mdx +++ b/iroh-services/relays/index.mdx @@ -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. diff --git a/iroh-services/relays/managed.mdx b/iroh-services/relays/managed.mdx index 008aeb9..02ed6d3 100644 --- a/iroh-services/relays/managed.mdx +++ b/iroh-services/relays/managed.mdx @@ -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 diff --git a/iroh-services/relays/public.mdx b/iroh-services/relays/public.mdx index 243cde1..c01eb91 100644 --- a/iroh-services/relays/public.mdx +++ b/iroh-services/relays/public.mdx @@ -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 @@ -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. diff --git a/iroh-services/support.mdx b/iroh-services/support.mdx index 71cd97e..dc1546b 100644 --- a/iroh-services/support.mdx +++ b/iroh-services/support.mdx @@ -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. diff --git a/protocols/rpc.mdx b/protocols/rpc.mdx index f0419df..ce9fb06 100644 --- a/protocols/rpc.mdx +++ b/protocols/rpc.mdx @@ -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 diff --git a/protocols/using-quic.md b/protocols/using-quic.md index b18fdfc..0d58aba 100644 --- a/protocols/using-quic.md +++ b/protocols/using-quic.md @@ -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. -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/).