Skip to content

Providers

Scott E. Graves edited this page Oct 16, 2025 · 1 revision

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.Enable β€” true to expose the mount.
    • RemoteMount.ApiPort β€” listening port for remote clients.
    • RemoteMount.ClientPoolSize β€” size of server's client pool. (default 20)
    • RemoteMount.EncryptionToken β€” shared secret; must match the client's token.
  • Client β€” RemoteConfig section

    • RemoteConfig.HostNameOrIp β€” server address.
    • RemoteConfig.ApiPort β€” server remote API port.
    • RemoteConfig.EncryptionToken β€” same 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.

Clone this wiki locally