updated README
This commit is contained in:
749
README.md
749
README.md
@@ -1,149 +1,307 @@
|
|||||||
# Repertory
|
# Repertory
|
||||||
|
|
||||||
Repertory allows you to mount S3 and Sia via FUSE on Linux/macOS or via WinFSP
|
Repertory allows you to mount **S3** and **Sia** storage as local drives using:
|
||||||
on Windows.
|
- **FUSE** (Linux/macOS)
|
||||||
|
- **WinFSP** (Windows)
|
||||||
|
|
||||||
## Contents
|
It supports:
|
||||||
|
- Local mounts
|
||||||
|
- Remote encrypted mounts between systems
|
||||||
|
- Optional file name and data encryption using `XChaCha20-Poly1305`
|
||||||
|
|
||||||
1. [Details and Features](#details-and-features)
|
---
|
||||||
2. [Minimum Requirements](#minimum-requirements)
|
|
||||||
1. [Supported Operating Systems](#supported-operating-systems)
|
|
||||||
3. [GUI](#gui)
|
|
||||||
4. [Usage](#usage)
|
|
||||||
1. [Important Options](#important-options)
|
|
||||||
2. [Sia](#sia)
|
|
||||||
* [Sia Initial Configuration](#sia-initial-configuration)
|
|
||||||
* [Sia Mounting](#sia-mounting)
|
|
||||||
* [Sia Configuration File](#sia-configuration-file)
|
|
||||||
3. [S3](#s3)
|
|
||||||
* [S3 Initial Configuration](#s3-initial-configuration)
|
|
||||||
* [S3 Mounting](#s3-mounting)
|
|
||||||
* [S3 Configuration File](#s3-configuration-file)
|
|
||||||
5. [Data Directories](#data-directories)
|
|
||||||
1. [Linux Directories](#linux-directories)
|
|
||||||
2. [Windows Directories](#windows-directories)
|
|
||||||
6. [Remote Mounting](#remote-mounting)
|
|
||||||
1. [Server Setup](#server-setup)
|
|
||||||
* [Remote Mount Configuration File Section](#remote-mount-configuration-file-section)
|
|
||||||
2. [Client Setup](#client-setup)
|
|
||||||
* [Client Remote Mounting](#client-remote-mounting)
|
|
||||||
* [Remote Mount Configuration File](#remote-mount-configuration-file)
|
|
||||||
7. [Compiling](#compiling)
|
|
||||||
1. [Linux Compilation](#linux-compilation)
|
|
||||||
2. [Windows Setup](#windows-compilation)
|
|
||||||
8. [Credits](#credits)
|
|
||||||
9. [Developer Public Key](#developer-public-key)
|
|
||||||
10. [Consult the Wiki for additional information](https://git.fifthgrid.com/BlockStorage/repertory/wiki)
|
|
||||||
|
|
||||||
## Details and Features
|
## 📖 Contents
|
||||||
|
|
||||||
* Optimized for [Plex Media Server](https://www.plex.tv/)
|
1. [Quick Start (Sia Example)](#-quick-start-sia-example)
|
||||||
* Remote mounting of `repertory` instances between Linux, macOS, and/or Windows
|
2. [Details & Features](#-details-and-features)
|
||||||
* Securely share your mounts over TCP/IP via `XChaCha20-Poly1305` with other systems on your network or over the internet.
|
3. [Minimum Requirements](#-minimum-requirements)
|
||||||
* Cross-platform support (Linux, macOS, and Windows)
|
- [Supported Operating Systems](#supported-operating-systems)
|
||||||
* Optionally encrypt file names and file data via `XChaCha20-Poly1305` in S3 mounts
|
4. [Data Directories](#-data-directories)
|
||||||
|
5. [GUI](#-gui)
|
||||||
|
6. [Usage](#-usage)
|
||||||
|
- [Important Options](#important-options)
|
||||||
|
- [Unmounting](#unmounting)
|
||||||
|
7. [Sia Setup](#-sia)
|
||||||
|
- [Sia Initial Configuration](#sia-initial-configuration)
|
||||||
|
- [Sia Mounting](#sia-mounting)
|
||||||
|
- [Sia Configuration File](#sia-configuration-file)
|
||||||
|
8. [S3 Setup](#-s3)
|
||||||
|
- [S3 Initial Configuration](#s3-initial-configuration)
|
||||||
|
- [S3 Mounting](#s3-mounting)
|
||||||
|
- [S3 Configuration File](#s3-configuration-file)
|
||||||
|
9. [Remote Mounting](#-remote-mounting)
|
||||||
|
- [Server Setup](#server-setup)
|
||||||
|
- [Client Setup](#client-setup)
|
||||||
|
- [Remote Mount Configuration File](#remote-mount-configuration-file)
|
||||||
|
10. [Compiling from Source](#-compiling)
|
||||||
|
- [Linux Compilation](#linux-compilation)
|
||||||
|
- [macOS Compilation](#macos-compilation)
|
||||||
|
- [Windows Compilation](#windows-compilation)
|
||||||
|
11. [Credits](#-credits)
|
||||||
|
12. [Developer Public Key](#-developer-public-key)
|
||||||
|
13. [Consult the Wiki for additional information](https://git.fifthgrid.com/BlockStorage/repertory/wiki)
|
||||||
|
|
||||||
## Minimum Requirements
|
---
|
||||||
|
|
||||||
* [Sia renterd](https://github.com/SiaFoundation/renterd/releases) v2.0.0+ for Sia support
|
## 🚀 Quick Start (Sia Example)
|
||||||
* Linux requires `fusermount3`; otherwise, `repertory` must be manually compiled with `libfuse2` support
|
|
||||||
* macOS requires the following dependencies to be installed:
|
> 💡 Want to mount S3 instead?
|
||||||
* [macFUSE 4.10-2](https://github.com/macfuse/macfuse/releases/download/macfuse-4.10.2/macfuse-4.10.2.dmg)
|
> Skip ahead to [S3 Setup](#-s3) — the process is almost identical.
|
||||||
* Windows requires the following dependencies to be installed:
|
|
||||||
* [WinFSP 2025](https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi)
|
This example mounts a Sia bucket from a running [renterd](https://github.com/SiaFoundation/renterd) instance.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1. Install dependencies
|
||||||
|
|
||||||
|
**Linux**
|
||||||
|
```bash
|
||||||
|
sudo apt install fuse3 # Debian/Ubuntu
|
||||||
|
# or
|
||||||
|
sudo dnf install fuse3 # Fedora
|
||||||
|
```
|
||||||
|
|
||||||
|
**macOS**
|
||||||
|
- Install [macFUSE 4.10.2](https://github.com/macfuse/macfuse/releases/download/macfuse-4.10.2/macfuse-4.10.2.dmg)
|
||||||
|
|
||||||
|
**Windows**
|
||||||
|
- Install [WinFSP 2025](https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Configure
|
||||||
|
|
||||||
|
Replace placeholders with your values:
|
||||||
|
```bash
|
||||||
|
repertory --name mybucket -set HostConfig.ApiPassword "<renterd api password>"
|
||||||
|
repertory --name mybucket -set SiaConfig.Bucket "<bucket name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Optional:
|
||||||
|
```bash
|
||||||
|
# If renterd is not running locally
|
||||||
|
repertory --name mybucket -set HostConfig.HostNameOrIp "<hostname or IP>"
|
||||||
|
|
||||||
|
# If renterd uses a non-default port (default 9980)
|
||||||
|
repertory --name mybucket -set HostConfig.ApiPort <port>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Mount
|
||||||
|
|
||||||
|
**Linux**
|
||||||
|
```bash
|
||||||
|
repertory --name mybucket /mnt/mybucket
|
||||||
|
```
|
||||||
|
|
||||||
|
**macOS**
|
||||||
|
```bash
|
||||||
|
repertory --name mybucket /Volumes/mybucket
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows**
|
||||||
|
```powershell
|
||||||
|
repertory --name mybucket t:
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Unmount
|
||||||
|
|
||||||
|
**Linux**
|
||||||
|
```bash
|
||||||
|
fusermount3 -u /mnt/mybucket
|
||||||
|
```
|
||||||
|
|
||||||
|
**macOS**
|
||||||
|
```bash
|
||||||
|
diskutil unmount /Volumes/mybucket
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows**
|
||||||
|
```powershell
|
||||||
|
net use t: /delete
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Details and Features
|
||||||
|
|
||||||
|
- **Optimized for [Plex Media Server](https://www.plex.tv/).**
|
||||||
|
- Remote mounting of `repertory` instances between Linux, macOS, and/or 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, macOS, and Windows).
|
||||||
|
- Optionally encrypt file names and file data via `XChaCha20-Poly1305` in S3 mounts.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Minimum Requirements
|
||||||
|
|
||||||
|
- **Sia:** [renterd](https://github.com/SiaFoundation/renterd/releases) v2.0.0+ for Sia support
|
||||||
|
- **Linux:** requires `fusermount3`; otherwise, `repertory` must be manually compiled with `libfuse2` support
|
||||||
|
- **macOS:** requires:
|
||||||
|
- [macFUSE 4.10.2](https://github.com/macfuse/macfuse/releases/download/macfuse-4.10.2/macfuse-4.10.2.dmg)
|
||||||
|
- **Windows:** requires:
|
||||||
|
- [WinFSP 2025](https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi)
|
||||||
|
|
||||||
### Supported Operating Systems
|
### Supported Operating Systems
|
||||||
|
|
||||||
Only 64-bit operating systems are supported
|
Only **64-bit operating systems** are supported:
|
||||||
|
|
||||||
* Linux `arm64/aarch64`
|
- Linux `arm64/aarch64`
|
||||||
* Linux `x86-64`
|
- Linux `x86_64`
|
||||||
* macOS `arm64/aarch64`
|
- macOS `arm64/aarch64`
|
||||||
* macOS `x86-64`
|
- macOS `x86_64`
|
||||||
* Windows `x86-64` 10, 11
|
- Windows `x86_64` 10, 11
|
||||||
|
|
||||||
## GUI
|
---
|
||||||
|
|
||||||
As of `v2.0.6-release`, mounts can be managed using the `Repertory Management Portal`.
|
## 📂 Data Directories
|
||||||
To launch the portal, execute the following command:
|
|
||||||
|
|
||||||
* `repertory -ui`
|
**Linux**
|
||||||
* The default username is `repertory`
|
```
|
||||||
* The default password is `repertory`
|
~/.local/repertory2/s3
|
||||||
|
~/.local/repertory2/sia
|
||||||
|
```
|
||||||
|
|
||||||
After first launch, `ui.json` will be created in the appropriate data directory.
|
**Windows**
|
||||||
See [Data Directories](#data-directories).
|
```
|
||||||
You should modify this file directly or use the portal to change the default
|
%LOCALAPPDATA%\repertory2\s3
|
||||||
username and password.
|
%LOCALAPPDATA%\repertory2\sia
|
||||||
|
```
|
||||||
|
**IMPORTANT:**
|
||||||
|
It is highly recommended to **exclude** these folders from any anti-virus/anti-malware applications as severe performance issues may arise. Excluding the mounted drive letter is also highly recommended.
|
||||||
|
|
||||||
### Screenshot
|
---
|
||||||
|
|
||||||
|
## 🖥 GUI
|
||||||
|
|
||||||
|
As of `v2.0.6-release`, mounts can be managed using the **Repertory Management Portal**.
|
||||||
|
|
||||||
|
Launch the portal:
|
||||||
|
```bash
|
||||||
|
repertory -ui
|
||||||
|
```
|
||||||
|
- Default username: `repertory`
|
||||||
|
- Default password: `repertory`
|
||||||
|
|
||||||
|
After first launch, `ui.json` will be created in the appropriate data directory (see [Data Directories](#-data-directories)). Modify this file directly or use the portal to change the default credentials.
|
||||||
|
|
||||||
|
**Screenshot**
|
||||||
<a href="https://ibb.co/fVyJqnbF"><img src="https://i.ibb.co/fVyJqnbF/repertory-portal.png" alt="repertory-portal" border="0"></a>
|
<a href="https://ibb.co/fVyJqnbF"><img src="https://i.ibb.co/fVyJqnbF/repertory-portal.png" alt="repertory-portal" border="0"></a>
|
||||||
|
|
||||||
## Usage
|
---
|
||||||
|
|
||||||
|
## 🛠 Usage
|
||||||
|
|
||||||
### Important Options
|
### Important Options
|
||||||
|
|
||||||
* `--help`
|
- `--help`
|
||||||
* Display all mount utility options
|
Display all mount utility options.
|
||||||
|
|
||||||
* `-f`
|
- `-f`
|
||||||
* Keep process in foreground on Linux.
|
Keep process in foreground on Linux.
|
||||||
|
|
||||||
* `--name, -na [name]`
|
- `--name, -na [name]`
|
||||||
* Identifies a unique configuration name to support multiple mounts.
|
Identifies a unique configuration name to support multiple mounts.
|
||||||
* The `--name` option can be set to any valid value allowed as a file name for your filesystem.
|
The `--name` option can be set to any valid value allowed as a file name for your filesystem.
|
||||||
* The `--name` option is required
|
**The `--name` option is required.**
|
||||||
|
|
||||||
* `-dc`
|
- `-dc`
|
||||||
* Display mount configuration
|
Display mount configuration.
|
||||||
* For Sia, the `--name` option is required
|
For Sia, the `--name` option is required.
|
||||||
* For S3, the `-s3` and `--name` options are required
|
For S3, the `-s3` and `--name` options are required.
|
||||||
|
|
||||||
### Sia
|
### Unmounting
|
||||||
|
|
||||||
#### Sia Initial Configuration
|
**Linux**
|
||||||
|
```bash
|
||||||
|
fusermount3 -u /path/to/mountpoint
|
||||||
|
```
|
||||||
|
|
||||||
* Required steps:
|
**macOS**
|
||||||
* Set the appropriate bucket name and `renterd` API password in `repertory` configuration:
|
```bash
|
||||||
* `repertory --name '<my config name>' -set HostConfig.ApiPassword '<my password>'`
|
diskutil unmount /Volumes/yourmount
|
||||||
* `repertory --name '<my config name>' -set SiaConfig.Bucket '<my bucket name>'`
|
```
|
||||||
|
|
||||||
* Optional steps:
|
**Windows**
|
||||||
* Set a user name used during `renterd` basic authentication:
|
```powershell
|
||||||
* `repertory -set HostConfig.ApiUser '<my user>'`
|
net use <driveletter>: /delete
|
||||||
* `repertory --name '<my config name>' -set HostConfig.ApiUser '<my user>'`
|
```
|
||||||
* Set a custom agent string (default `Sia-Agent`):
|
|
||||||
* `repertory -set HostConfig.AgentString '<my agent>'`
|
|
||||||
* `repertory --name '<my config name>' -set HostConfig.AgentString '<my agent>'`
|
|
||||||
* Set the host name or IP of the `renterd` instance (default `localhost`):
|
|
||||||
* `repertory -set HostConfig.HostNameOrIp '<my host name>'`
|
|
||||||
* `repertory --name '<my config name>' -set HostConfig.HostNameOrIp '<my host name>'`
|
|
||||||
* Set the `renterd` API port (default `9980`):
|
|
||||||
* `repertory -set HostConfig.ApiPort 9981`
|
|
||||||
* `repertory --name '<my config name>' -set HostConfig.ApiPort 9981`
|
|
||||||
|
|
||||||
* To verify/view all configuration options:
|
---
|
||||||
* `repertory -dc`
|
|
||||||
* `repertory --name '<my config name>' -dc`
|
|
||||||
* Example:
|
|
||||||
* `repertory --name my_bucket -dc`
|
|
||||||
|
|
||||||
#### Sia Mounting
|
## 🔒 Security Best Practices
|
||||||
|
|
||||||
* Linux:
|
When enabling **encryption tokens** for S3 or remote mounts:
|
||||||
* `repertory /mnt/location`
|
- Use a **long, random string**.
|
||||||
* `repertory --name '<my config name>' /mnt/location`
|
- Store it **offline** (password manager and an offline backup).
|
||||||
* Example:
|
- Losing it means **permanent data loss**.
|
||||||
* `repertory --name my_bucket /mnt/location`
|
|
||||||
|
|
||||||
* Windows:
|
---
|
||||||
* `repertory t:`
|
|
||||||
* `repertory --name '<my config name>' t:`
|
|
||||||
* Example:
|
|
||||||
* `repertory --name my_bucket t:`
|
|
||||||
|
|
||||||
#### Sia Configuration File
|
## 🗄 Sia
|
||||||
|
|
||||||
|
### Sia Initial Configuration
|
||||||
|
|
||||||
|
**Required steps:**
|
||||||
|
- Set the appropriate bucket name and `renterd` API password in `repertory` configuration:
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' -set HostConfig.ApiPassword '<my password>'
|
||||||
|
repertory --name '<my config name>' -set SiaConfig.Bucket '<my bucket name>'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Optional steps:**
|
||||||
|
- Set a user name used during `renterd` basic authentication:
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' -set HostConfig.ApiUser '<my user>'
|
||||||
|
```
|
||||||
|
- Set a custom agent string (default `Sia-Agent`):
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' -set HostConfig.AgentString '<my agent>'
|
||||||
|
```
|
||||||
|
- Set the host name or IP of the `renterd` instance (default `localhost`):
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' -set HostConfig.HostNameOrIp '<my host name>'
|
||||||
|
```
|
||||||
|
- Set the `renterd` API port (default `9980`):
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' -set HostConfig.ApiPort 9981
|
||||||
|
```
|
||||||
|
|
||||||
|
**Verify/view all configuration options:**
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' -dc
|
||||||
|
# Example:
|
||||||
|
repertory --name my_bucket -dc
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sia Mounting
|
||||||
|
|
||||||
|
**Linux**
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' /mnt/location
|
||||||
|
# Example:
|
||||||
|
repertory --name my_bucket /mnt/location
|
||||||
|
```
|
||||||
|
|
||||||
|
**macOS**
|
||||||
|
```bash
|
||||||
|
repertory --name '<my config name>' /Volumes/mybucket
|
||||||
|
# Example:
|
||||||
|
repertory --name my_bucket /Volumes/mybucket
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows**
|
||||||
|
```powershell
|
||||||
|
repertory --name '<my config name>' t:
|
||||||
|
# Example:
|
||||||
|
repertory --name my_bucket t:
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sia Configuration File
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -190,48 +348,77 @@ username and password.
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### S3
|
---
|
||||||
|
|
||||||
#### S3 Initial Configuration
|
## 🗄 S3
|
||||||
|
|
||||||
* Required steps:
|
### S3 Initial Configuration
|
||||||
* 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:
|
**Required steps:**
|
||||||
* Set an appropriate region. Default is set to `any`:
|
- Set the appropriate base URL:
|
||||||
* `repertory -s3 --name '<my config name>' -set S3Config.Region '<my region>'`
|
```bash
|
||||||
* 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.URL '<my url>'
|
||||||
* `repertory -s3 --name '<my config name>' -set S3Config.EncryptionToken '<my strong password>'`
|
# Example:
|
||||||
|
repertory -s3 --name minio -set S3Config.URL 'http://localhost:9000'
|
||||||
|
```
|
||||||
|
- Set the appropriate bucket name:
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -set S3Config.Bucket '<my bucket name>'
|
||||||
|
```
|
||||||
|
- Set the appropriate access key:
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -set S3Config.AccessKey '<my access key>'
|
||||||
|
```
|
||||||
|
- Set the appropriate secret key:
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -set S3Config.SecretKey '<my secret key>'
|
||||||
|
```
|
||||||
|
- For Sia and most local S3 gateway instances, enable path style URLs:
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -set S3Config.UsePathStyle true
|
||||||
|
```
|
||||||
|
|
||||||
* To verify/view all configuration options:
|
**Optional steps:**
|
||||||
* `repertory -s3 --name '<my config name>' -dc`
|
- Set an appropriate region. Default is `any`:
|
||||||
* Example:
|
```bash
|
||||||
* `repertory -s3 --name minio -dc`
|
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 store it securely:
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -set S3Config.EncryptionToken '<my strong password>'
|
||||||
|
```
|
||||||
|
|
||||||
#### S3 Mounting
|
**Verify/view all configuration options:**
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -dc
|
||||||
|
# Example:
|
||||||
|
repertory -s3 --name minio -dc
|
||||||
|
```
|
||||||
|
|
||||||
* Linux:
|
### S3 Mounting
|
||||||
* `repertory -s3 --name '<my config name>' /mnt/location`
|
|
||||||
* Example:
|
|
||||||
* `repertory -s3 --name minio /mnt/location`
|
|
||||||
|
|
||||||
* Windows:
|
**Linux**
|
||||||
* `repertory -s3 --name '<my config name>' t:`
|
```bash
|
||||||
* Example:
|
repertory -s3 --name '<my config name>' /mnt/location
|
||||||
* `repertory -s3 --name minio t:`
|
# Example:
|
||||||
|
repertory -s3 --name minio /mnt/location
|
||||||
|
```
|
||||||
|
|
||||||
#### S3 Configuration File
|
**macOS**
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' /Volumes/minio
|
||||||
|
# Example:
|
||||||
|
repertory -s3 --name minio /Volumes/minio
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows**
|
||||||
|
```powershell
|
||||||
|
repertory -s3 --name '<my config name>' t:
|
||||||
|
# Example:
|
||||||
|
repertory -s3 --name minio t:
|
||||||
|
```
|
||||||
|
|
||||||
|
### S3 Configuration File
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -276,100 +463,103 @@ username and password.
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Data Directories
|
---
|
||||||
|
|
||||||
#### Linux Directories
|
## 🌐 Remote Mounting
|
||||||
|
|
||||||
* `~/.local/repertory2/s3`
|
`repertory` allows local mounts to be shared with other computers on your network or over the internet. This option is referred to as **remote mounting**.
|
||||||
* `~/.local/repertory2/sia`
|
|
||||||
|
|
||||||
#### Windows Directories
|
|
||||||
|
|
||||||
* `%LOCALAPPDATA%\repertory2\s3`
|
|
||||||
* `%LOCALAPPDATA%\repertory2\sia`
|
|
||||||
* Examples:
|
|
||||||
* `C:\Users\Tom\AppData\Local\repertory2\s3`
|
|
||||||
* `C:\Users\Tom\AppData\Local\repertory2\sia`
|
|
||||||
* 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
|
|
||||||
or over the internet. This option is referred to as remote mounting.
|
|
||||||
|
|
||||||
### Server Setup
|
### Server Setup
|
||||||
|
|
||||||
The following steps must be performed on the mount you wish to share with
|
The following steps must be performed on the mount you wish to share with other systems. Changes to configuration will not take effect while a mount is active, so it is recommended to unmount beforehand.
|
||||||
other systems. Changes to configuration will not take affect while a mount is
|
|
||||||
active, so it is recommended to unmount beforehand.
|
|
||||||
|
|
||||||
* Required steps:
|
**Required steps:**
|
||||||
* Enable remote mount:
|
- Enable remote mount:
|
||||||
* Sia
|
- **Sia**
|
||||||
* `repertory -set RemoteMount.Enable true`
|
```bash
|
||||||
* `repertory --name '<my config name>' -set RemoteMount.Enable true`
|
repertory -set RemoteMount.Enable true
|
||||||
* S3:
|
repertory --name '<my config name>' -set RemoteMount.Enable true
|
||||||
* `repertory -s3 --name '<my config name>' -set RemoteMount.Enable true`
|
```
|
||||||
* Set a secure encryption token:
|
- **S3**
|
||||||
* Sia:
|
```bash
|
||||||
* `repertory -set RemoteMount.EncryptionToken '<my secure password>'`
|
repertory -s3 --name '<my config name>' -set RemoteMount.Enable true
|
||||||
* `repertory --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'`
|
```
|
||||||
* S3:
|
- Set a secure encryption token:
|
||||||
* `repertory -s3 --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'`
|
- **Sia**
|
||||||
|
```bash
|
||||||
|
repertory -set RemoteMount.EncryptionToken '<my secure password>'
|
||||||
|
repertory --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'
|
||||||
|
```
|
||||||
|
- **S3**
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'
|
||||||
|
```
|
||||||
|
|
||||||
* Optional steps:
|
**Optional steps:**
|
||||||
* Change the port clients will use to connect to your mount:
|
- Change the port clients will use to connect to your mount:
|
||||||
* Sia:
|
- **Sia**
|
||||||
* `repertory -set RemoteMount.ApiPort 20000`
|
```bash
|
||||||
* `repertory --name '<my config name>' -set RemoteMount.ApiPort 20000`
|
repertory -set RemoteMount.ApiPort 20000
|
||||||
* S3:
|
repertory --name '<my config name>' -set RemoteMount.ApiPort 20000
|
||||||
* `repertory -s3 --name '<my config name>' -set RemoteMount.ApiPort 20000`
|
```
|
||||||
|
- **S3**
|
||||||
|
```bash
|
||||||
|
repertory -s3 --name '<my config name>' -set RemoteMount.ApiPort 20000
|
||||||
|
```
|
||||||
|
|
||||||
* IMPORTANT:
|
**IMPORTANT:**
|
||||||
* Be sure to configure your firewall to allow incoming TCP connections on the port configured in `RemoteMount.ApiPort`.
|
Be sure to configure your firewall to allow incoming TCP connections on the port configured in `RemoteMount.ApiPort`.
|
||||||
|
|
||||||
#### Remote Mount Configuration File Section
|
#### Remote Mount Configuration File Section
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
...
|
|
||||||
"RemoteMount": {
|
"RemoteMount": {
|
||||||
"ApiPort": 20000,
|
"ApiPort": 20000,
|
||||||
"ClientPoolSize": 20,
|
"ClientPoolSize": 20,
|
||||||
"Enable": true,
|
"Enable": true,
|
||||||
"EncryptionToken": "<my secure password>"
|
"EncryptionToken": "<my secure password>"
|
||||||
},
|
}
|
||||||
...
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Client Setup
|
### Client Setup
|
||||||
|
|
||||||
Client configuration is provider agnostic, so there's no need to specify `-s3`
|
Client configuration is provider agnostic, so there's no need to specify `-s3` for S3 providers.
|
||||||
for S3 providers.
|
|
||||||
|
|
||||||
* Required steps:
|
**Required steps:**
|
||||||
* Set the encryption token to the same value configured during server setup:
|
- Set the encryption token to the same value configured during server setup:
|
||||||
* `repertory -rm <host name or IP>:<port> -set RemoteConfig.EncryptionToken '<my secure password>'`
|
```bash
|
||||||
* Replace `<host name or IP>` with the host name or IP of the server
|
repertory -rm <host name or IP>:<port> -set RemoteConfig.EncryptionToken '<my secure password>'
|
||||||
* Replace `<port>` with the value of `RemoteMount.ApiPort` used in the server configuration
|
# Replace <host name or IP> with the host name or IP of the server
|
||||||
* Example:
|
# Replace <port> with the value of RemoteMount.ApiPort used in the server configuration
|
||||||
* `repertory -rm 192.168.1.10:20000 -set RemoteConfig.EncryptionToken '<my secure password>'`
|
# Example:
|
||||||
* `repertory -rm my.host.com:20000 -set RemoteConfig.EncryptionToken '<my secure password>'`
|
repertory -rm 192.168.1.10:20000 -set RemoteConfig.EncryptionToken '<my secure password>'
|
||||||
|
repertory -rm my.host.com:20000 -set RemoteConfig.EncryptionToken '<my secure password>'
|
||||||
|
```
|
||||||
|
|
||||||
#### Client Remote Mounting
|
#### Client Remote Mounting
|
||||||
|
|
||||||
* Linux:
|
**Linux**
|
||||||
* `repertory -rm <host name or IP>:<port> /mnt/location`
|
```bash
|
||||||
* Example:
|
repertory -rm <host name or IP>:<port> /mnt/location
|
||||||
* `repertory -rm 192.168.1.10:20000 /mnt/location`
|
# Example:
|
||||||
|
repertory -rm 192.168.1.10:20000 /mnt/location
|
||||||
|
```
|
||||||
|
|
||||||
* Windows:
|
**macOS**
|
||||||
* `repertory -rm <host name or IP>:<port> t:`
|
```bash
|
||||||
* Example:
|
repertory -rm <host name or IP>:<port> /Volumes/remotemount
|
||||||
* `repertory -rm 192.168.1.10:20000 t:`
|
# Example:
|
||||||
|
repertory -rm 192.168.1.10:20000 /Volumes/remotemount
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows**
|
||||||
|
```powershell
|
||||||
|
repertory -rm <host name or IP>:<port> t:
|
||||||
|
# Example:
|
||||||
|
repertory -rm 192.168.1.10:20000 t:
|
||||||
|
```
|
||||||
|
|
||||||
#### Remote Mount Configuration File
|
#### Remote Mount Configuration File
|
||||||
|
|
||||||
@@ -393,81 +583,96 @@ for S3 providers.
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Compiling
|
---
|
||||||
|
|
||||||
Successful compilation will result in all files required for execution to be placed
|
## 🧰 Compiling
|
||||||
in the `dist/` directory
|
|
||||||
|
Successful compilation will place all required files for execution in the `dist/` directory.
|
||||||
|
|
||||||
### Linux Compilation
|
### Linux Compilation
|
||||||
|
|
||||||
* Ensure `docker` is installed
|
- Ensure `docker` is installed
|
||||||
* For `x86-64`:
|
- For `x86_64`:
|
||||||
* RelWithDebInfo: `scripts/make_unix.sh x86_64`
|
```bash
|
||||||
* Release: `scripts/make_unix.sh x86_64 Release`
|
scripts/make_unix.sh x86_64
|
||||||
* Debug: `scripts/make_unix.sh x86_64 Debug`
|
scripts/make_unix.sh x86_64 Release
|
||||||
|
scripts/make_unix.sh x86_64 Debug
|
||||||
* For `aarch64`:
|
```
|
||||||
* RelWithDebInfo: `scripts/make_unix.sh aarch64`
|
- For `aarch64`:
|
||||||
* Release: `scripts/make_unix.sh aarch64 Release`
|
```bash
|
||||||
* Debug: `scripts/make_unix.sh aarch64 Debug`
|
scripts/make_unix.sh aarch64
|
||||||
|
scripts/make_unix.sh aarch64 Release
|
||||||
|
scripts/make_unix.sh aarch64 Debug
|
||||||
|
```
|
||||||
|
|
||||||
### macOS Compilation
|
### macOS Compilation
|
||||||
|
|
||||||
* Ensure `Xcode` and `CMake` are installed
|
- Ensure `Xcode` and `CMake` are installed
|
||||||
* For `x86-64`:
|
- For `x86_64`:
|
||||||
* RelWithDebInfo: `scripts/make_unix.sh x86_64`
|
```bash
|
||||||
* Release: `scripts/make_unix.sh x86_64 Release`
|
scripts/make_unix.sh x86_64
|
||||||
* Debug: `scripts/make_unix.sh x86_64 Debug`
|
scripts/make_unix.sh x86_64 Release
|
||||||
|
scripts/make_unix.sh x86_64 Debug
|
||||||
* For `aarch64`:
|
```
|
||||||
* RelWithDebInfo: `scripts/make_unix.sh aarch64`
|
- For `aarch64`:
|
||||||
* Release: `scripts/make_unix.sh aarch64 Release`
|
```bash
|
||||||
* Debug: `scripts/make_unix.sh aarch64 Debug`
|
scripts/make_unix.sh aarch64
|
||||||
|
scripts/make_unix.sh aarch64 Release
|
||||||
|
scripts/make_unix.sh aarch64 Debug
|
||||||
|
```
|
||||||
|
|
||||||
### Windows Compilation
|
### Windows Compilation
|
||||||
|
|
||||||
* OFFICIAL: Cross-compiling on Linux
|
- **OFFICIAL: Cross-compiling on Linux**
|
||||||
* Ensure `docker` is installed
|
- Ensure `docker` is installed
|
||||||
* RelWithDebInfo: `scripts/make_win32.sh x86_64`
|
```bash
|
||||||
* Release: `scripts/make_win32.sh x86_64 Release`
|
scripts/make_win32.sh x86_64
|
||||||
* Debug: `scripts/make_win32.sh x86_64 Debug`
|
scripts/make_win32.sh x86_64 Release
|
||||||
|
scripts/make_win32.sh x86_64 Debug
|
||||||
|
```
|
||||||
|
|
||||||
* UNOFFICIAL: Compiling on Windows
|
- **UNOFFICIAL: Compiling on Windows**
|
||||||
* Ensure latest [MSYS2](https://www.msys2.org/) is installed
|
- Ensure latest [MSYS2](https://www.msys2.org/) is installed
|
||||||
* RelWithDebInfo: `scripts\make_win32.cmd x86_64`
|
```powershell
|
||||||
* Release: `scripts\make_win32.cmd x86_64 Release`
|
scripts\make_win32.cmd x86_64
|
||||||
* Debug: `scripts\make_win32.cmd x86_64 Debug`
|
scripts\make_win32.cmd x86_64 Release
|
||||||
|
scripts\make_win32.cmd x86_64 Debug
|
||||||
|
```
|
||||||
|
|
||||||
## Credits
|
---
|
||||||
|
|
||||||
* [binutils](https://www.gnu.org/software/binutils/)
|
## 📜 Credits
|
||||||
* [boost c++ libraries](https://www.boost.org/)
|
|
||||||
* [cpp-httplib](https://github.com/yhirose/cpp-httplib)
|
|
||||||
* [curl](https://curl.haxx.se/)
|
|
||||||
* [docker](https://www.docker.com/)
|
|
||||||
* [Google Test](https://github.com/google/googletest)
|
|
||||||
* [ICU](https://icu.unicode.org/)
|
|
||||||
* [JSON for Modern C++](https://github.com/nlohmann/json)
|
|
||||||
* [libexpat](https://github.com/libexpat/libexpat)
|
|
||||||
* [libfuse](https://github.com/libfuse/libfuse)
|
|
||||||
* [libsodium](https://doc.libsodium.org/)
|
|
||||||
* [macFUSE](https://macfuse.github.io/)
|
|
||||||
* [mingw-w64](https://www.mingw-w64.org/)
|
|
||||||
* [MSYS2](https://www.msys2.org)
|
|
||||||
* [OpenSSL](https://www.openssl.org/)
|
|
||||||
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
|
|
||||||
* [pugixml](https://pugixml.org/)
|
|
||||||
* [RocksDB](https://rocksdb.org)
|
|
||||||
* [ScPrime](https://scpri.me/)
|
|
||||||
* [Sia Decentralized Cloud Storage](https://sia.tech/)
|
|
||||||
* [spdlog](https://github.com/gabime/spdlog)
|
|
||||||
* [SQLite](https://www.sqlite.org)
|
|
||||||
* [stduuid](https://github.com/mariusbancila/stduuid)
|
|
||||||
* [Storj](https://www.storj.io/)
|
|
||||||
* [WinFSP - FUSE for Windows](https://github.com/billziss-gh/winfsp)
|
|
||||||
* [zlib](https://zlib.net/)
|
|
||||||
|
|
||||||
## Developer Public Key
|
- [binutils](https://www.gnu.org/software/binutils/)
|
||||||
|
- [boost c++ libraries](https://www.boost.org/)
|
||||||
|
- [cpp-httplib](https://github.com/yhirose/cpp-httplib)
|
||||||
|
- [curl](https://curl.haxx.se/)
|
||||||
|
- [docker](https://www.docker.com/)
|
||||||
|
- [Google Test](https://github.com/google/googletest)
|
||||||
|
- [ICU](https://icu.unicode.org/)
|
||||||
|
- [JSON for Modern C++](https://github.com/nlohmann/json)
|
||||||
|
- [libexpat](https://github.com/libexpat/libexpat)
|
||||||
|
- [libfuse](https://github.com/libfuse/libfuse)
|
||||||
|
- [libsodium](https://doc.libsodium.org/)
|
||||||
|
- [macFUSE](https://macfuse.github.io/)
|
||||||
|
- [mingw-w64](https://www.mingw-w64.org/)
|
||||||
|
- [MSYS2](https://www.msys2.org)
|
||||||
|
- [OpenSSL](https://www.openssl.org/)
|
||||||
|
- [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
|
||||||
|
- [pugixml](https://pugixml.org/)
|
||||||
|
- [RocksDB](https://rocksdb.org)
|
||||||
|
- [ScPrime](https://scpri.me/)
|
||||||
|
- [Sia Decentralized Cloud Storage](https://sia.tech/)
|
||||||
|
- [spdlog](https://github.com/gabime/spdlog)
|
||||||
|
- [SQLite](https://www.sqlite.org)
|
||||||
|
- [stduuid](https://github.com/mariusbancila/stduuid)
|
||||||
|
- [Storj](https://www.storj.io/)
|
||||||
|
- [WinFSP - FUSE for Windows](https://github.com/billziss-gh/winfsp)
|
||||||
|
- [zlib](https://zlib.net/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 Developer Public Key
|
||||||
|
|
||||||
```text
|
```text
|
||||||
-----BEGIN PUBLIC KEY-----
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
Reference in New Issue
Block a user