From 2dcba6b026095258c5d7011fd9af4cff5fb2ebdb Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Fri, 29 May 2026 15:33:44 +0200 Subject: [PATCH 1/6] docs: guide to replace public gateways with self-hosted IPFS New how-to for non-browser clients and web apps still calling ipfs.io or dweb.link, routing each case to a drop-in replacement: - backend retrieve-only -> Rainbow, with trustless-only config for public hostnames - backend retrieve and publish -> Kubo, plus pinning services or IPFS Cluster for redundancy - browser JS -> @helia/verified-fetch, with self-hosted Someguy and Rainbow/Kubo to stay independent of public utilities Linked from the IPFS Gateway sidebar group and the how-to index. --- docs/.vuepress/config.js | 1 + docs/how-to/README.md | 1 + ...e-public-gateways-with-self-hosted-ipfs.md | 232 ++++++++++++++++++ 3 files changed, 234 insertions(+) create mode 100644 docs/how-to/replace-public-gateways-with-self-hosted-ipfs.md diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 775624d62..b38a112ff 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -292,6 +292,7 @@ module.exports = { sidebarDepth: 1, collapsable: true, children: [ + '/how-to/replace-public-gateways-with-self-hosted-ipfs', '/how-to/gateway-best-practices', '/how-to/troubleshooting', ] diff --git a/docs/how-to/README.md b/docs/how-to/README.md index 061eaa225..55c9490d8 100644 --- a/docs/how-to/README.md +++ b/docs/how-to/README.md @@ -7,6 +7,7 @@ description: Hands-on guides to using and developing with IPFS to build decentra See the site navigation menu for all our how-tos, organized by topic area, including favorites like these: +- **Move off public gateways** by [replacing `ipfs.io` and `dweb.link` with self-hosted IPFS](replace-public-gateways-with-self-hosted-ipfs.md) - **Customize your install** by [configuring a node](configure-node.md), modifying the [bootstrap list](modify-bootstrap-list.md), and more - **Learn how to manage files** in IPFS with tutorials on concepts like [pinning](pin-files.md), how to [work with blocks](work-with-blocks.md), learning how to [content address data sets](content-addressing-data-sets.md). - **Publish scientific data** by exploring the [scientific data and IPFS landscape guide](scientific-data/landscape-guide.md) or learning how to [publish geospatial Zarr data with IPFS](scientific-data/publish-geospatial-zarr-data.md) diff --git a/docs/how-to/replace-public-gateways-with-self-hosted-ipfs.md b/docs/how-to/replace-public-gateways-with-self-hosted-ipfs.md new file mode 100644 index 000000000..d77b453f1 --- /dev/null +++ b/docs/how-to/replace-public-gateways-with-self-hosted-ipfs.md @@ -0,0 +1,232 @@ +--- +title: Replace public gateways with self-hosted IPFS +description: Replace ipfs.io and dweb.link calls with your own IPFS infrastructure. +--- + +# Replace public gateways with self-hosted IPFS + +If your app fetches content from `ipfs.io` or `dweb.link`, this guide shows you how to switch to infrastructure you control. + +When you are done, your app fetches the same content by CID from a gateway you run, with no dependency on `ipfs.io` or `dweb.link`. + +## Why this guide + +The public gateways at `ipfs.io` and `dweb.link` are not the right place to send production traffic. They are a shared [public good (best-effort)](../concepts/public-utilities.md) with no SLA and no performance knobs you control. Running your own infrastructure puts you in charge of both: you set the SLA your users get, and you tune for the performance your app needs. Read [A post-gateway world](https://ipshipyard.com/blog/2025-a-post-gateway-world/) and [IPFS gateways: redirect to in-browser](https://ipshipyard.com/blog/2026-ipfs-gateways-redirect-inbrowser-link/) for the background. + +This guide covers two audiences: code in a browser page that fetches from `ipfs.io` via the Fetch API, a Service Worker, or hotlinked subresources (``, `