diff --git a/docs/ensnode.io/config/integrations/starlight/sidebar-topics/self-host.ts b/docs/ensnode.io/config/integrations/starlight/sidebar-topics/self-host.ts index b164f78a5..9725ac35b 100644 --- a/docs/ensnode.io/config/integrations/starlight/sidebar-topics/self-host.ts +++ b/docs/ensnode.io/config/integrations/starlight/sidebar-topics/self-host.ts @@ -8,12 +8,21 @@ export const selfHostSidebarTopic = { link: "/docs/self-host", }, { - label: "Docker", - link: "/docs/self-host/docker", - }, - { - label: "Terraform", - link: "/docs/self-host/terraform", + label: "Deployment options", + items: [ + { + label: "Docker", + link: "/docs/self-host/docker", + }, + { + label: "Railway", + link: "/docs/self-host/railway", + }, + { + label: "Terraform", + link: "/docs/self-host/terraform", + }, + ], }, { label: "Scalability", diff --git a/docs/ensnode.io/src/content/docs/docs/hosted-instances.mdx b/docs/ensnode.io/src/content/docs/docs/hosted-instances.mdx index 5fe581916..4f1ad2f42 100644 --- a/docs/ensnode.io/src/content/docs/docs/hosted-instances.mdx +++ b/docs/ensnode.io/src/content/docs/docs/hosted-instances.mdx @@ -56,11 +56,11 @@ Each ENSNode instance is also configured for a specific set of activated [ENSNod The activated plugins determine the specific indexed data model and data records ENSIndexer will produce in ENSDb and therefore which APIs and data records ENSApi will make available to query. -### ENSv1 + ENSv2 Instances +## ENSv1 + ENSv2 Instances These instances are associated with an ENS namespace that has upgraded to ENSv1 + ENSv2 and demonstrate the latest support in ENSNode for ENSv1 and ENSv2 being concurrently activated together. -#### ENSNode 'v2 Sepolia' +### ENSNode 'v2 Sepolia' :::caution[v2 Sepolia] The `sepolia-v2` namespace is undergoing active development by the ENS Labs team who is continuing to release updated ENSv2 contracts. It should be considered experimental. diff --git a/docs/ensnode.io/src/content/docs/docs/self-host/docker.mdx b/docs/ensnode.io/src/content/docs/docs/self-host/docker.mdx index 4f8cb5be6..c8f50b46f 100644 --- a/docs/ensnode.io/src/content/docs/docs/self-host/docker.mdx +++ b/docs/ensnode.io/src/content/docs/docs/self-host/docker.mdx @@ -2,7 +2,6 @@ title: Deploying ENSNode with Docker sidebar: label: Docker - order: 1 --- import { LinkCard } from "@astrojs/starlight/components"; diff --git a/docs/ensnode.io/src/content/docs/docs/self-host/index.mdx b/docs/ensnode.io/src/content/docs/docs/self-host/index.mdx index b3a240a15..b38cebd89 100644 --- a/docs/ensnode.io/src/content/docs/docs/self-host/index.mdx +++ b/docs/ensnode.io/src/content/docs/docs/self-host/index.mdx @@ -1,27 +1,22 @@ --- title: Self-host ENSNode description: Decide whether to self-host ENSNode and understand the architecture. +sidebar: + label: Overview --- import { LinkCard } from "@astrojs/starlight/components"; import EnsDbSnapshotsTeaser from "@components/molecules/EnsDbSnapshotsTeaser.astro"; -This page will help you decide whether to self-host ENSNode or use the hosted instances. Includes architecture overview of the ENSNode stack (ENSIndexer, ENSDb, ENSRainbow, ENSApi). +Self-hosting provides extra benefits compared to using one of the publicly [Hosted Instances](/docs/hosted-instances). Having your own ENSNode instance allows you to: -:::note -Follow these guides to deploy an ENSNode instance to the cloud. -::: - -Running your own ENSNode instance is helpful for those that wish to: - -- Maintain control over their own infrastructure -- Ensure control over their own availability and uptime guarantees -- Customize ENSNode's behavior -- Own the resulting Postgres index for custom queries or `JOIN`s - -:::caution[Private Networking] -Note that because ENSNode makes many label healing requests to ENSRainbow while indexing, it's _imperative_ that they be on the same local network to minimize request time. -::: +- **Select [ENS Namespace](/docs/hosted-instances#ens-namespaces)**: choose which ENS protocol deployment ENSNode will provide data for (ex: `mainnet` or `sepolia`). Great for testing and development. +- **Select [ENSNode Plugins](/docs/hosted-instances#ensnode-plugins)**: activate only the plugins you need for your use cases, reducing resource usage and improving performance. +- **Tailor "name healing" coverage**: apply a [label set](/docs/services/ensrainbow/usage/available-label-sets#available-label-sets) that fits your needs for [ENSRainbow to perform "name healing"](/docs/services/ensrainbow#how-ensrainbow-helps). +- **Index ENS data the way you want**: customize indexing logic and indexed data model stored in your own [ENSDb instance](/docs/integrate/integration-options/ensdb) by implementing an [ENSDb Writer](/docs/integrate/integration-options/ensdb-writers). +- **Build custom APIs and data pipelines**: implement an [ENSDb Reader](/docs/integrate/integration-options/ensdb-readers) to build apps using your own ENSDb instance as a source of truth for ENS live data. +- **Control versioning and updates**: choose when to update your ENSNode instance to new versions, giving you control over when to adopt new features or breaking changes. +- **Manage uptime**: apply strategies for ensuring high availability and uptime guarantees. ### Bootstrap from a snapshot (coming soon) @@ -43,14 +38,10 @@ Self-hosting today means standing up a fresh ENSNode instance from zero and wait href="/docs/self-host/scalability" /> -### Deploying with Docker - -The Docker deployment option provides the easiest way to run the full ENSNode suite of services both locally and in the cloud. - - +### Deployment options -### Deploying with Terraform + -An example Terraform deployment reference is available, showing an example of deploying the full ENSNode suite on Render with AWS managed domain names. + - + diff --git a/docs/ensnode.io/src/content/docs/docs/self-host/railway.mdx b/docs/ensnode.io/src/content/docs/docs/self-host/railway.mdx new file mode 100644 index 000000000..a48b29b16 --- /dev/null +++ b/docs/ensnode.io/src/content/docs/docs/self-host/railway.mdx @@ -0,0 +1,13 @@ +--- +title: Deploying ENSNode to Railway +--- + +import { LinkCard } from "@astrojs/starlight/components"; + +This guide provides an example of deploying the full ENSNode Alpha instance suite to [Railway](https://railway.app/), a popular cloud hosting provider. It uses the [Railway Templates](https://docs.railway.app/templates) approach, which allows you to apply a pre-configured infrastructure template to your Railway project with a single click. + + diff --git a/docs/ensnode.io/src/content/docs/docs/self-host/scalability.mdx b/docs/ensnode.io/src/content/docs/docs/self-host/scalability.mdx index cd14090fa..6c6363d5d 100644 --- a/docs/ensnode.io/src/content/docs/docs/self-host/scalability.mdx +++ b/docs/ensnode.io/src/content/docs/docs/self-host/scalability.mdx @@ -3,7 +3,6 @@ title: ENSNode Scalability description: Understand how ENSNode's architecture enables horizontal scaling. sidebar: label: Scalability - order: 3 --- import { LinkCard } from "@astrojs/starlight/components"; diff --git a/docs/ensnode.io/src/content/docs/docs/self-host/terraform.mdx b/docs/ensnode.io/src/content/docs/docs/self-host/terraform.mdx index 8c1aef6b5..2aa04595e 100644 --- a/docs/ensnode.io/src/content/docs/docs/self-host/terraform.mdx +++ b/docs/ensnode.io/src/content/docs/docs/self-host/terraform.mdx @@ -2,7 +2,6 @@ title: Deploying ENSNode with Terraform sidebar: label: Terraform - order: 2 --- import { LinkCard } from "@astrojs/starlight/components";