Skip to content

add gh action deployment guide, custom domains guide, and overhaul docs landing page #1999

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 39 commits into from
Mar 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
d45ee53
initial commit of deployment guide
2color Feb 21, 2025
66edf20
edit description
2color Feb 25, 2025
3bf0198
Update docs/install/deploy-github-action.md
2color Mar 3, 2025
2230c2d
Update docs/install/deploy-github-action.md
2color Mar 7, 2025
856ae50
break off dnslink and custom domains into separate guide
2color Mar 7, 2025
a21e573
move guide to guides
2color Mar 7, 2025
a4e3f78
progress and edits
2color Mar 14, 2025
31ea50a
edits and improvements
2color Mar 14, 2025
14f368b
fix: typo
2color Mar 14, 2025
24f7178
fix: broken urls
2color Mar 14, 2025
63573cf
fix: typos
2color Mar 14, 2025
8a6b170
fix: broken links
2color Mar 14, 2025
067482a
Merge branch 'main' into add-website-guide
2color Mar 14, 2025
2b396bb
small refinement
2color Mar 14, 2025
d3f6b68
fix: url to public utilities
2color Mar 14, 2025
4dcb49e
Apply suggestions from code review
2color Mar 19, 2025
d40058d
Apply suggestions from code review
2color Mar 19, 2025
aceaf77
feat: add kubo and cluster versions to header
2color Mar 21, 2025
32a24a4
refinement
2color Mar 21, 2025
8b190a6
chore: add note about service worker gateway
2color Mar 21, 2025
82d4ddb
Update docs/how-to/websites-on-ipfs/custom-domains.md
2color Mar 21, 2025
df25f24
update opener
2color Mar 21, 2025
b321563
add link to custom domains guide from dnslink
2color Mar 21, 2025
4c72dbb
clean up sidebar
2color Mar 21, 2025
b9c8f22
refine custom domain page
2color Mar 21, 2025
2340e88
remove broken link
2color Mar 21, 2025
b7e7caf
fix: typo
2color Mar 21, 2025
408f2d1
Apply suggestions from code review
2color Mar 24, 2025
e2f3c33
add next.js tips to static site generators
2color Mar 25, 2025
03300a3
refine wordpress section
2color Mar 25, 2025
02f874c
fix: link
2color Mar 25, 2025
3b2eb55
fix: typos
2color Mar 25, 2025
18d2228
fix: linting rules
2color Mar 25, 2025
208b13b
final edits
2color Mar 27, 2025
a0a515a
final polish
2color Mar 27, 2025
9481811
more edits and fixes
2color Mar 27, 2025
eb51b25
typos
2color Mar 27, 2025
8bf3247
fix: broken link
2color Mar 27, 2025
60758ed
broken link
2color Mar 28, 2025
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
6 changes: 6 additions & 0 deletions .github/styles/pln-ignore.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ arbol('s)
arg
auditable
audius
astro
auspinner
bit[ss]wap
bitswap
blockchain
blockchains
blockstore
bool
Expand All @@ -32,6 +34,7 @@ certbot
cid
cids
cli
clis
cmds
cnames
codec
Expand Down Expand Up @@ -136,6 +139,7 @@ merkle
merkleize
merklizing
merkleizing
merkleizes
merkleized
merkleization
metadata('s)
Expand Down Expand Up @@ -219,6 +223,7 @@ sneakernets
stackparse
stdout
storj
storacha
Someguy
subcommand
substring
Expand All @@ -245,6 +250,7 @@ userspace
vpns
vscode
vue
Vuepress
wantlist
wantlists
web
Expand Down
14 changes: 2 additions & 12 deletions .markdownlint.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@
"MD025": {
// Heading level
"level": 1,
// RegExp for matching title in front matter
"front_matter_title": "^\\s*title\\s*[:=]"
// ignore the title in the front matter
"front_matter_title": ""
},

// MD026/no-trailing-punctuation - Trailing punctuation in heading
Expand Down Expand Up @@ -228,16 +228,6 @@
// Seems like a good rule to have in place
"MD042": true,

// MD043/required-headings/required-headers - Required heading structure
// TODO
// We may want to utilize this rule, not sure what the struct would be
"MD043": {
// List of headings
"headings": [],
// List of headings
"headers": []
},

// MD044/proper-names - Proper names should have the correct capitalization
// TODO
// Determine if we want to use this,
Expand Down
10 changes: 4 additions & 6 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,8 @@ module.exports = {
sidebarDepth: 1,
collapsable: false,
children: [
['/quickstart/publish','Publish with IPFS (UI)'],
['/quickstart/publish_cli', 'Publish with IPFS (command line)' ],
['/quickstart/retrieve','Retrieve with IPFS'],
['/how-to/websites-on-ipfs/deploy-github-action', 'Deploy to IPFS with GitHub Actions' ],
]
},
{
Expand All @@ -124,9 +123,8 @@ module.exports = {
sidebarDepth: 1,
collapsable: false,
children: [
['/quickstart/publish','Publish with IPFS (UI)'],
['/quickstart/publish_cli', 'Publish with IPFS (command line)' ],
['/quickstart/retrieve','Retrieve with IPFS'],
['/how-to/websites-on-ipfs/deploy-github-action', 'Deploy to IPFS with GitHub Actions' ],

]
},
Expand Down Expand Up @@ -243,10 +241,10 @@ module.exports = {
sidebarDepth: 1,
collapsable: true,
children: [
'/how-to/websites-on-ipfs/deploy-github-action',
'/how-to/websites-on-ipfs/custom-domains',
'/how-to/websites-on-ipfs/single-page-website',
'/how-to/websites-on-ipfs/multipage-website',
'/how-to/websites-on-ipfs/link-a-domain',
'/how-to/websites-on-ipfs/introducing-fleek',
'/how-to/websites-on-ipfs/static-site-generators',
'/how-to/websites-on-ipfs/redirects-and-custom-404s'
]
Expand Down
1 change: 1 addition & 0 deletions docs/.vuepress/redirects
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
/how-to/troubleshoot-file-transfers /how-to/troubleshooting
/how-to/run-ipfs-inside-docker /install/run-ipfs-inside-docker
/how-to/ipfs-updater /install/command-line
/how-to/websites-on-ipfs/link-a-domain /how-to/websites-on-ipfs/custom-domains
/install/command-line-quick-start/ /how-to/command-line-quick-start
/install/js-ipfs/ https://github.com/ipfs/helia/wiki
/introduction/ /concepts
Expand Down
41 changes: 20 additions & 21 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,48 @@ title: IPFS Documentation
description: The home page for developer documentation for IPFS, the InterPlanetary File System.
---

# Welcome to the IPFS docs
# Welcome to the IPFS Docs

The InterPlanetary File System (IPFS) is a set of composable, peer-to-peer protocols for addressing, routing, and transferring [content-addressed](concepts/glossary.md#content-addressing) data in a decentralized file system. Many popular Web3 projects are built on IPFS - see the [ecosystem directory](https://ecosystem.ipfs.tech) for a list of some of these projects.
IPFS is a set of building blocks for a better web. Open protocols to make your data smarter: content-addressed, verifiable, and unstoppable.

## Get started
On a more technical level, IPFS is a set of open protocols for addressing, routing, and transferring data on the web, built on the ideas of [content addressing](concepts/glossary.md#content-addressing) and peer-to-peer networking.

You can quickly [store and retrieve data](#store-and-retrieve-data) and [interact with the network via a simple GUI app or a standard browser](#interact-with-the-network). If you'd rather develop applications, learn how to build IPFS-native apps or use standard HTTP in the [Build](#build) section.
Many popular projects are built with IPFS - see the [ecosystem directory](https://ecosystem.ipfs.tech) and the [awesome-ipfs](https://github.com/ipfs/awesome-ipfs) list to find some of these projects.

:::callout
New to IPFS? Start with
[the 3-page Basic Concepts](./concepts/README.md#learn-the-basics).
:::
## Get started

You can get started [retrieving data](#retrieve-data) and [providing data](#provide-data) to the IPFS network. If you'd rather develop applications, learn how to build IPFS-native apps or use standard HTTP in the [Build](#build) section.

### Store and retrieve data
### Retrieve data

Quickly store data and retrieve data, no complex applications or programming required:
Quickly retrieve data from the IPFS network, no programming required:

- Publish content to the IPFS network with a pinning service by following this [quickstart guide](./quickstart/publish.md).
- Fetch data via it's <VueCustomTooltip label="An address used to point to data in IPFS, based on the content itself, as opposed to the location." underlined multiline is-medium>content identifier (CID)</VueCustomTooltip> [using an IPFS gateway](./quickstart/retrieve.md#fetching-the-cid-with-an-ipfs-gateway).
- For long-term storage, use [Filecoin](https://docs.filecoin.io/), the peer-to-peer network with built-in economic incentives that stores data on IPFS.
- Fetch data via it's [content identifier (CID)](concepts/glossary.md#cid)[using an IPFS gateway](./quickstart/retrieve.md).
- Install the [IPFS Companion](./install/ipfs-companion.md) browser extension to add support for `ipfs://` and `ipns://` addresses to your browser.

### Interact with the network
### Provide data

You can quickly interact the IPFS network using a simple GUI or a standard browser:
Provide data to the IPFS network with IPFS Desktop or a pinning service:

- For a simple, easy-to-use GUI application that bundles an IPFS node, file manager, peer manager, and content explorer, use [IPFS Desktop](./install/ipfs-desktop.md).
- Interact with the network using any Brave, Chrome, Edge, Firefox, Opera, and any other Chromium-based web browser using the [IPFS Companion browser extension](./install/ipfs-companion.md).
- [Install IPFS Desktop which bundles an IPFS node (Kubo) and a UI to manage files, peers, and explore content on IPFS](./install/ipfs-desktop.md).
- [Publish content to the IPFS network with IPFS Desktop](./how-to/desktop-app.md).
- [Deploy static sites to the IPFS network with a GitHub Action](./how-to/websites-on-ipfs/deploy-github-action.md).

### Build

You can build apps that leverage IPFS implementations, or use HTTP instead:

#### Using IPFS

Build an IPFS-native app using one of the many IPFS <VueCustomTooltip label="Software, written in any programming language, with functionality to process and transmit content-addressed data. Some implementations are optimized for specific use cases or devices, or use different subsystems to handle content-addressed data. There are multiple specifications in IPFS for handling content-addressed data, and not all implementations implement them." underlined multiline is-medium>implementations</VueCustomTooltip> and tools built by and for Web3 users:
Build an IPFS-native app using one of the many IPFS [implementations](./concepts/ipfs-implementations.md) and tools:

- To develop IPFS applications using Go and/or interact with IPFS from the terminal, use the [IPFS Kubo implementation in Go](./install/command-line.md).
- If you'd rather use JavaScript, try the [IPFS Helia implementation in JavaScript](https://github.com/ipfs/helia).
- If you are familiar with JavaScript, checkout the [IPFS in web apps guide](./how-to/ipfs-in-web-apps.md), which covers how to use [Helia](https://github.com/ipfs/helia) and related libraries to build IPFS-native apps.
- To develop IPFS applications using Go and/or interact with IPFS from the terminal, use the [IPFS Kubo implementation](./install/command-line.md).
- Try any of the [many other tools and implementations](./concepts/ipfs-implementations.md), which are written in different languages and tailored to specific needs and use cases.

#### Using HTTP

Connect your Web2 application to the IPFS network using standard HTTP:
As the IPFS ecosystem has grown and evolved with multiple implementations in different languages, HTTP has become an important foundation for interoperability. Check out the following resources to learn more:

- Control an IPFS Kubo node via HTTP using the [Kubo RPC API](./reference/kubo/rpc.md), which supports [multiple clients in multiple languages](./reference/kubo-rpc-cli.md).
- For an implementation and runtime agnostic HTTP interface for retrieving data, use an [IPFS gateway](./reference/http/gateway.md).
Expand Down
9 changes: 6 additions & 3 deletions docs/concepts/dnslink.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ For example, [`docs.ipfs.tech`](https://docs.ipfs.tech) loads because a `TXT` re

```shell
dig +noall +answer TXT _dnslink.docs.ipfs.tech
> _dnslink.docs.ipfs.tech. 30 IN TXT "dnslink=/ipfs/bafybeieenxnjdjm7vbr5zdwemaun4sw4iy7h4imlvvl433q6gzjg6awdpq"
> _dnslink.docs.ipfs.tech. 30 IN TXT "dnslink=/ipfs/bafybeifld3uybj6azujisdnxu6cm7mombldpbt3au4g33nwnqx7dsgjrta"

```

Expand All @@ -47,7 +47,7 @@ For example, let's go back to when we looked up the DNS records for `_dnslink.do

```sh
$ dig +noall +answer TXT _dnslink.docs.ipfs.tech
_dnslink.docs.ipfs.tech. 34 IN TXT "dnslink=/ipfs/QmVMxjouRQCA2QykL5Rc77DvjfaX6m8NL6RyHXRTaZ9iya"
_dnslink.docs.ipfs.tech. 34 IN TXT "dnslink=/ipfs/bafybeifld3uybj6azujisdnxu6cm7mombldpbt3au4g33nwnqx7dsgjrta"
```

Based on that, this address:
Expand All @@ -59,9 +59,12 @@ Based on that, this address:
Will get you this block:

```
/ipfs/QmVMxjouRQCA2QykL5Rc77DvjfaX6m8NL6RyHXRTaZ9iya/introduction/
/ipfs/bafybeifld3uybj6azujisdnxu6cm7mombldpbt3au4g33nwnqx7dsgjrta/introduction/
```

## Further Resources

For more information on how to use DNSLink for your website or app, check out the [Custom domains and DNSLink](../how-to/websites-on-ipfs/custom-domains.md) guide.

For a complete guide to DNSLink — including tutorials, usage examples, and FAQs — check out [dnslink.dev](https://dnslink.dev/).

6 changes: 4 additions & 2 deletions docs/concepts/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ description: Explore frequently asked questions about IPFS, the InterPlanetary F

## What is IPFS?

The InterPlanetary File System (IPFS) is a set of composable, peer-to-peer protocols for addressing, routing, and transferring [content-addressed](../concepts/glossary.md#content-addressing) data in a decentralized file system. Many popular Web3 projects are built on IPFS - see the [ecosystem directory](https://ecosystem.ipfs.tech) for a list of some of these projects.
IPFS is a set of building blocks for a better web. Open protocols to make your data smarter: content-addressed, verifiable, and unstoppable.

On a more technical level, IPFS is a set of open protocols for addressing, routing, and transferring data on the web, built on the ideas of [content addressing](../concepts/glossary.md#content-addressing) and peer-to-peer networking.

New to IPFS? Start with
[the 3-page Basic Concepts](../concepts/README.md#learn-the-basics).
Expand Down Expand Up @@ -86,4 +88,4 @@ IPFS is an open-source project with a community of more than four thousand contr

## Don't see your question?

We're working on expanding this FAQ with more content, including questions from the original-generation [IPFS forums](https://discuss.ipfs.tech/c/help/old-faq/5), so please watch this space! However, if you don't see your question, please [ask in the forums](https://discuss.ipfs.tech/), so you can get the answers you need and make us aware of new FAQ items.
If you don't see your question, please [ask in the IPFS forums](https://discuss.ipfs.tech/).
6 changes: 4 additions & 2 deletions docs/concepts/what-is-ipfs.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ description: Learn what IPFS is and isn't.

# What is IPFS

IPFS is a modular suite of <VueCustomTooltip label="A set of standards, rules or procedures for transmitting data between computers, including how the information will be structured and how each computer will send and receive it. Notable examples include TCP/IP, HTTP/S, SMTP, and DNS." underlined multiline is-medium is-bottom>protocols</VueCustomTooltip> for organizing and transferring data, designed from the ground up with the principles of <VueCustomTooltip label="A way to address data by its hash rather than its location (IPs)." underlined multiline>content addressing</VueCustomTooltip> and <VueCustomTooltip label="A network of computers model in which each party has equivalent capabilities and can initiate a communication session." underlined multiline is-medium>peer-to-peer networking</VueCustomTooltip>. Because IPFS is <VueCustomTooltip label="Software released under a license that grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose. Open-source software is often developed in a collaborative public manner that encourages contributions from users." underlined multiline is-medium>open-source</VueCustomTooltip>, there are multiple <VueCustomTooltip label="Software, written in any programming language, with functionality to process and transmit content-addressed data. Some implementations are optimized for specific use cases or devices, or use different subsystems to handle content-addressed data. There are multiple specifications in IPFS for handling content-addressed data, and not all implementations implement them." underlined multiline is-medium>implementations</VueCustomTooltip> of IPFS.
While IPFS has more than one use case, its main use case is for publishing data (files, directories, websites, etc.) in a decentralised fashion.
IPFS is a set of building blocks for a better web. Open protocols to make your data smarter: content-addressed, verifiable, and unstoppable.

On a more technical level, IPFS is a set of open protocols for addressing, routing, and transferring data on the web, built on the ideas of [content addressing](../concepts/glossary.md#content-addressing) and peer-to-peer networking.


:::callout
This guide is part 1 of a 3-part introduction to [the basic concepts of IPFS](../concepts/README.md#learn-the-basics). The second part, [**IPFS and the problems it solves**](../concepts/ipfs-solves.md), covers the problems with the internet and current protocols like HTTP that IPFS solves.
Expand Down
Loading