Clone
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 keyS3Config.SecretKey- your secret keyS3Config.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.EncryptionTokeninconfig.json - Note: files remain unencrypted locally; encryption happens during transfer.
- Enabled with
☁️ 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
RemoteMountsection 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) —
RemoteMountsectionRemoteMount.Enable—trueto 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 —
RemoteConfigsectionRemoteConfig.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.