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.EncryptionToken
inconfig.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
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
sectionRemoteMount.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
sectionRemoteConfig.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.