Scott E. Graves fa439c634f
Some checks reported errors
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
v2.0.3-rc (#32)
# Changelog

## v2.0.3-rc

### Issues

* \#28 \[bug\] Address slow directory responses in S3 mounts for deeply nested directories
* \#29 \[bug\] S3 error responses are not being logged
* \#30 \[bug\] Sia provider error responses are not logged
* \#31 \[bug\] S3 provider should limit max key size to 1024

### Changes from v2.0.2-rc

* Always use direct for read-only providers
* Fixed externally removed files not being processed during cleanup
* Fixed http headers not being added for requests
* Fixed incorrect `stat` values for remote mounts
* Fixed invalid directory nullptr error on remote mounts
* Fixed memory leak in event system
* Refactored application shutdown
* Refactored event system
* Updated build system to Alpine 3.21.0
* Updated build system to MinGW-w64 12.0.0
* Updated copyright to 2018-2025

Reviewed-on: #32
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2024-12-28 15:56:40 -06:00
2024-12-28 15:56:40 -06:00
2024-12-28 15:56:40 -06:00
2024-12-28 15:56:40 -06:00
2024-12-28 15:56:40 -06:00
2024-12-28 15:56:40 -06:00
2023-10-29 06:55:59 +00:00
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2025-02-11 17:26:24 -06:00
2023-12-10 18:11:20 +00:00
2024-12-28 15:56:40 -06:00
2025-02-11 17:26:24 -06:00
2024-12-28 15:56:40 -06:00
2024-12-28 15:56:40 -06:00
2025-02-11 17:26:24 -06:00

Repertory

Repertory allows you to mount S3 and Sia via FUSE on Linux or via WinFSP on Windows.

Details and Features

  • Optimized for Plex Media Server
  • Single application to mount S3 and/or Sia
  • Remote mounting of Repertory instances on Linux and Windows
    • Securely share your mounts over TCP/IP via XChaCha20-Poly1305 with other systems on your network or over the internet.
  • Cross-platform support (Linux 64-bit, Linux arm64/aarch64, Windows 64-bit)
  • Optionally encrypt file names and file data via XChaCha20-Poly1305 in S3 mounts

Minimum Requirements

  • Sia renterd v0.4.0+ for Sia support
  • Only 64-bit operating systems are supported
    • By default, Linux requires fusermount3; otherwise, repertory must be manually compiled with libfuse2 support
    • Windows requires the following dependencies to be installed:

Supported Operating Systems

  • Linux arm64/aarch64
  • Linux amd64
  • Windows 64-bit 10, 11

Usage

Sia

  • Initial Configuration
    • Sia steps:
      • Set the appropriate bucket name and renterd API password in repertory configuration:
        • To use default as the bucket name and configuration name:
          • repertory -set HostConfig.ApiPassword '<my password>'
        • To use a different bucket name with default as the configuration name:
          • repertory -set HostConfig.ApiPassword '<my password>'
          • repertory -set SiaConfig.Bucket '<my bucket>'
        • For all other configurations:
          • repertory --name '<my config name>' -set HostConfig.ApiPassword '<my password>'
          • repertory --name '<my config name>' -set SiaConfig.Bucket '<my bucket name>'
    • To verify/view all configuration options:
      • repertory -dc
      • repertory --name '<my config name>' -dc
        • Example:
          • repertory --name default -dc
  • Mounting on Linux:
    • repertory /mnt/location
    • repertory --name '<my config name>' /mnt/location
      • Example:
        • repertory --name default /mnt/location
  • Mounting on Windows:
    • repertory t:
    • repertory --name '<my config name>' t:
      • Example:
        • repertory --name default t:

S3

  • Initial Configuration
    • S3 steps:
      • Set the appropriate base URL:
        • repertory -s3 --name '<my config name>' -set S3Config.URL '<my url>'
          • Example:
            • repertory -s3 --name minio -set S3Config.URL 'http://localhost:9000'
      • Set the appropriate bucket name:
        • repertory -s3 --name '<my config name>' -set S3Config.Bucket '<my bucket name>'
      • Set the appropriate access key:
        • repertory -s3 --name '<my config name>' -set S3Config.AccessKey '<my access key>'
      • Set the appropriate secret key:
        • repertory -s3 --name '<my config name>' -set S3Config.SecretKey '<my secret key>'
      • For Sia and most local S3 gateway instances, enable path style URL's:
        • repertory -s3 --name '<my config name>' -set S3Config.UsePathStyle true
      • Optional steps:
        • Set an appropriate region. Default is set to any:
          • repertory -s3 --name '<my config name>' -set S3Config.Region '<my region>'
        • Enable encrypted file names and file data. Set a strong, random encryption token and be sure to store it in a secure backup location:
          • repertory -s3 --name '<my config name>' -set S3Config.EncryptionToken '<my strong password>'
    • To verify/view all configuration options:
      • repertory -s3 --name '<my config name>' -dc
        • Example:
          • repertory -s3 --name minio -dc
  • Mounting on Linux:
    • repertory -s3 --name '<my config name>' /mnt/location
      • Example:
        • repertory -s3 --name minio /mnt/location
  • Mounting on Windows:
    • repertory -s3 --name '<my config name>' t:
      • Example:
        • repertory -s3 --name minio t:

Notable Options

  • --help
    • Display all mount utility options
  • --name, -na [name]
    • The --name option can be set to any valid value allowed as a file name for your filesystem.
    • For Sia, the bucket name will be set to the same value if it is empty in the configuration file.
      • If the --name option is not specified, default will be used.
    • For S3, the --name option is required and does not affect the bucket name.
  • -dc
    • Display mount configuration
    • For Sia, --name is optional
    • For S3, the -s3 option is required along with --name

Data Directories

  • Linux
    • ~/.local/repertory2
  • Windows
    • %LOCALAPPDATA%\repertory2
      • Example:
        • C:\Users\Tom\AppData\Local\repertory2
      • IMPORTANT:
        • It is highly recommended to exclude this folder from any anti-virus/anti-malware applications as severe performance issues may arise.
        • Excluding the mounted drive letter is also highly recommended.

Remote Mounting

Repertory allows local mounts to be shared with other computers on your network. This option is referred to as remote mounting. Instructions TBD.

Compiling

  • Successful compilation will result in all required files being placed in the dist/ directory
  • Linux
    • Ensure docker is installed
      • For x86_64:
        • RelWithDebInfo: scripts/make_unix.sh
        • Release: scripts/make_unix.sh x86_64 Release
        • Debug: scripts/make_unix.sh x86_64 Debug
      • For aarch64:
        • RelWithDebInfo: scripts/make_unix.sh aarch64
        • Release: scripts/make_unix.sh aarch64 Release
        • Debug: scripts/make_unix.sh aarch64 Debug
  • Windows
    • OFFICIAL: Cross-compiling on Linux
      • Ensure docker is installed
        • RelWithDebInfo: scripts/make_win32.sh
        • Release: scripts/make_win32.sh x86_64 Release
        • Debug: scripts/make_win32.sh x86_64 Debug
    • UNOFFICIAL: Compiling on Windows
      • Ensure latest MSYS2 is installed
        • RelWithDebInfo: scripts\make_win32.cmd
        • Release: scripts\make_win32.cmd x86_64 Release
        • Debug: scripts\make_win32.cmd x86_64 Debug

Credits

Developer Public Key

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqXedleDOugdk9sBpgFOA
0+MogIbBF7+iXIIHv8CRBbrrf8nxLSgQvbHQIP0EklebDgLZRgyGI3SSQYj7D957
uNf1//dpkELNzfuezgAyFer9+iH4Svq46HADp5k+ugaK0mMDZM7OLOgo7415/+z4
NIQopv8prMFdxkShr4e4dpR+S6LYMYMVjsi1gnYWaZJMWgzeZouXFSscS1/XDXSE
vr1Jfqme+RmB4Q2QqGcDrY2ijumCJYJzQqlwG6liJ4FNg0U3POTCQDhQmuUoEJe0
/dyiWlo48WQbBu6gUDHbTCCUSZPs2Lc9l65MqOCpX76+VXPYetZgqpMF4GVzb2y9
kETxFNpiMYBlOBZk0I1G33wqVmw46MI5IZMQ2z2F8Mzt1hByUNTgup2IQELCv1a5
a2ACs2TBRuAy1REeHhjLgiA/MpoGX7TpoHCGyo8jBChJVpP9ZHltKoChwDC+bIyx
rgYH3jYDkl2FFuAUJ8zAZl8U1kjqZb9HGq9ootMk34Dbo3IVkc2azB2orEP9F8QV
KxvZZDA9FAFEthSiNf5soJ6mZGLi0es5EWPoKMUEd9tG5bP980DySAWSSRK0AOfE
QShT/z7oG79Orxyomwrb8ZJCi7wEfcCuK1NWgqLVUgXhpi2J9WYS6DAbF3Oh3Hhl
DYSHlcfFBteqNDlR2uFInIECAwEAAQ==
-----END PUBLIC KEY-----
Description
Repertory allows you to mount AWS S3 and Sia via FUSE on Linux or via WinFSP on Windows.
Readme 1.9 GiB
Languages
C++ 93.3%
Dart 3.6%
Shell 1.7%
CMake 1.3%