28
Providers
Scott E. Graves edited this page 2025-09-10 10:30:15 -05:00

Providers in Repertory

repertory currently supports four backend provider types:

  • S3 Provider
  • Sia Provider
  • Remote Mount Provider
  • Encrypt Provider (Work-in-Progress — use with caution)

Each provider can be mounted on Linux (FUSE), macOS (macFUSE), and Windows (WinFSP).


🪣 S3 Provider

  • Implements the AWS S3 HTTP REST API via libcurl.
  • Requires:
    • S3Config.AccessKey - your access key
    • S3Config.SecretKey - your secret key
    • S3Config.Bucket - target bucket name
  • Supports both path-style and virtual-hosted-style addressing, controlled via S3Config.UsePathStyle.
  • Optional transparent encryption (file/directory names + content) using XChaCha20-Poly1305:
    • Enabled with S3Config.EncryptionToken in config.json
    • Note: files remain unencrypted locally; encryption happens during transfer.

☁️ Sia Provider

  • Uses the renterd HTTP REST API via libcurl
  • Configuration is handled within the SiaConfig and HostConfig sections of config.json

🌐 Remote Mount Provider

Connects to a different machine running Repertory and exposes its active mount locally. This is a client that talks to a Repertory server which has remote mounting enabled.

How it works (high level)

  • Server side: an existing S3 or Sia mount is configured to allow remote access via the RemoteMount section of its config.
  • Client side: you mount using -rm host:port, and the client forwards file operations over a secure packet channel with a shared EncryptionToken.

Required settings

  • Server (on the original S3/Sia mount) — RemoteMount section

    • RemoteMount.Enabletrue to expose the mount.
    • RemoteMount.ApiPort — listening port for remote clients.
    • RemoteMount.ClientPoolSize — size of server's client pool. (default 20)
    • RemoteMount.EncryptionTokenshared secret; must match the client's token.
  • Client — RemoteConfig section

    • RemoteConfig.HostNameOrIp — server address.
    • RemoteConfig.ApiPort — server remote API port.
    • RemoteConfig.EncryptionTokensame value as the server.
    • RemoteConfig.MaxConnections — max concurrent connections. (default 20)
    • RemoteConfig.ReceiveTimeoutMs — receive timeout in ms. (default 120000)
    • RemoteConfig.SendTimeoutMs — send timeout in ms. (default 30000)

Default Remote API ports (from source):

Provider Default Remote API Port
Sia 20000
Remote 20010
S3 20100
Encrypt 20001

🔒 Encrypt Provider (WIP — Use With Caution)

  • Acts as a local pass-through provider - configure it to use any existing folder on your file system and it will transparently encrypt file/directory names and file data using XChaCha20-Poly1305.
  • Important: There is currently no decryption provider. Data encrypted this way cannot be decrypted by Repertory; additional support is planned for future versions.

📌 When to Use Each Provider

Provider Best For
S3 Provider Using standard S3-compatible storage (e.g., AWS S3, MinIO, etc.), with optional encryption at transfer time
Sia Provider Mounting Sia buckets with renterd
Remote Mount Mount a Repertory instance running elsewhere (LAN/WAN).
Encrypt Provider Locally encrypting data before uploading elsewhere — but be mindful of irreversible encryption . intended to add a layer of security when using online backup platforms, for instance.

For exhaustive option names and examples, see Configuration-File-Options and CLI Usage.