← Protocols
Sia
01Description

Decentralized storage network where renters and hosts form on-chain contracts paid in Siacoin. The modern dev experience is `renterd` — a self-hosted renter daemon that exposes an S3-compatible API — successor to the discontinued Skynet portals.

02Best for
  • 01self-sovereign S3-compatible object storage
  • 02long-term archival of large datasets
  • 03redundancy via host diversity (Reed-Solomon)
  • 04infra-team-run private storage with no SaaS dependency
  • 05blockchain snapshot / dataset hosting
03Install
  • # Run renterd: `docker run -p 9980:9980 ghcr.io/siafoundation/renterd:latest`
  • pnpm add @aws-sdk/client-s3
04Environment variables
VariableScopeDescription
RENTERD_API_URLServerBase URL of your `renterd` daemon API (e.g. `http://localhost:9980/api`).
RENTERD_API_PASSWORDServerRenterd HTTP basic-auth password (auto-generated on first run; printed in the daemon log). Server-side only.
RENTERD_S3_ENDPOINTServerRenterd S3 endpoint, default `http://localhost:8080`. Use this for AWS-SDK compatibility.
RENTERD_S3_ACCESS_KEYServerS3 access key configured in renterd's autopilot/S3 settings.
RENTERD_S3_SECRET_KEYServerS3 secret key configured in renterd's autopilot/S3 settings.
05Prompt snippet
Run `renterd` as a daemon (Docker image `ghcr.io/siafoundation/renterd`) and fund its embedded wallet with Siacoin so it can form contracts with hosts. Configure autopilot (host count, redundancy 30-of-50 by default, allowance per period) via the dashboard, then use the daemon's S3-compatible endpoint with the AWS SDK: `new S3Client({ endpoint: RENTERD_S3_ENDPOINT, credentials: { accessKeyId: RENTERD_S3_ACCESS_KEY, secretAccessKey: RENTERD_S3_SECRET_KEY }, forcePathStyle: true })` and call `PutObjectCommand`. For programmatic deal/host inspection use the renterd HTTP API directly with basic auth (`Authorization: Basic ${base64(':' + RENTERD_API_PASSWORD)}`). Skynet and `siad` are deprecated — do not use `@nebulous/skynet-js` or pre-Foundation SDKs.
06Gotchas
  • Skynet and the original `siad` renter are end-of-life — only the Foundation's `renterd` / `hostd` / `walletd` stack is supported. Tutorials older than 2023 are misleading.
  • Renterd needs a funded SC wallet and an active contract set before any upload — the first upload after a fresh start will fail until autopilot has formed enough contracts (can take ~30 minutes).
  • Retrieval depends on host availability; default 30-of-50 erasure coding tolerates many host churns but a long-offline data set may need contract renewal to remain retrievable.
  • Siacoin price volatility translates directly into storage cost volatility — `allowance` is set in SC, so a price spike can shorten your effective contract period.
  • There is no managed gateway — you (or your infra team) operate `renterd`. Plan for backups of the renterd database, monitoring, and key custody of the embedded wallet.
  • S3 compatibility covers the common path (PUT/GET/DELETE/multipart) but not bucket policies, ACLs, or advanced features; always set `forcePathStyle: true` and treat it as a subset of S3.
07Alternatives