# Decentralized storage

## IPFS Quick Guide

Ternoa runs an IPFS node at the following URLs:

* Mainnet: [https://ipfs-mainnet.trnnfr.com](https://ipfs-mainnet.trnnfr.com/)
* Alphanet: [https://ipfs-dev.trnnfr.com](https://ipfs-dev.trnnfr.com/)

These IPFS nodes have a data size limit of 100 MB for storing files.

The purpose of these Ternoa-foundation-hosted nodes is to provide a good developer experience for new developers onboarding to the Ternoa chain. The Ternoa IPFS nodes pin the files locally to guarantee data availability. However, these nodes do not come with any guarantees on system availability or SLAs and are provided on an as-is basis.

For production dApps deploying on the Ternoa mainnet, we recommend one of the following options:

* Use a third-party IPFS pinning gateway service such as [Piñata](https://www.pinata.cloud/), [NFT.storage](https://nft.storage/), or [Infura](https://www.infura.io/). They all provide a free-tier, and pricing plans for more heavy usage.
* Set up a dedicated IPFS node for the dApp. The standard IPFS node can be set fairly quickly and the instructions can be found at: <https://docs.ipfs.tech/>
* Use a decentralized storage network that provides permanent data storage such as [Arweave](https://www.arweave.org/), [Filecoin](https://filecoin.io/), or [Crust](https://crust.network/).
* Use a hybrid approach, where the data is primarily stored on a 3rd party service, but data is also synced up to a locally hosted IPFS node.

For an advanced overview of using IPFS with Ternoa's features follow [this link.](/build-1/javascript/decentralized-storage/ipfs-overview-and-ternoa-ipfs-client.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ternoa.network/build-1/javascript/decentralized-storage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
