updated README
This commit is contained in:
749
README.md
749
README.md
@@ -1,149 +1,307 @@
|
||||
# Repertory
|
||||
|
||||
Repertory allows you to mount S3 and Sia via FUSE on Linux/macOS or via WinFSP
|
||||
on Windows.
|
||||
Repertory allows you to mount **S3** and **Sia** storage as local drives using:
|
||||
- **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/)
|
||||
* 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
|
||||
1. [Quick Start (Sia Example)](#-quick-start-sia-example)
|
||||
2. [Details & Features](#-details-and-features)
|
||||
3. [Minimum Requirements](#-minimum-requirements)
|
||||
- [Supported Operating Systems](#supported-operating-systems)
|
||||
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
|
||||
* Linux requires `fusermount3`; otherwise, `repertory` must be manually compiled with `libfuse2` support
|
||||
* macOS requires the following dependencies to be installed:
|
||||
* [macFUSE 4.10-2](https://github.com/macfuse/macfuse/releases/download/macfuse-4.10.2/macfuse-4.10.2.dmg)
|
||||
* Windows requires the following dependencies to be installed:
|
||||
* [WinFSP 2025](https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi)
|
||||
## 🚀 Quick Start (Sia Example)
|
||||
|
||||
> 💡 Want to mount S3 instead?
|
||||
> Skip ahead to [S3 Setup](#-s3) — the process is almost identical.
|
||||
|
||||
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
|
||||
|
||||
Only 64-bit operating systems are supported
|
||||
Only **64-bit operating systems** are supported:
|
||||
|
||||
* Linux `arm64/aarch64`
|
||||
* Linux `x86-64`
|
||||
* macOS `arm64/aarch64`
|
||||
* macOS `x86-64`
|
||||
* Windows `x86-64` 10, 11
|
||||
- Linux `arm64/aarch64`
|
||||
- Linux `x86_64`
|
||||
- macOS `arm64/aarch64`
|
||||
- macOS `x86_64`
|
||||
- Windows `x86_64` 10, 11
|
||||
|
||||
## GUI
|
||||
---
|
||||
|
||||
As of `v2.0.6-release`, mounts can be managed using the `Repertory Management Portal`.
|
||||
To launch the portal, execute the following command:
|
||||
## 📂 Data Directories
|
||||
|
||||
* `repertory -ui`
|
||||
* The default username is `repertory`
|
||||
* The default password is `repertory`
|
||||
**Linux**
|
||||
```
|
||||
~/.local/repertory2/s3
|
||||
~/.local/repertory2/sia
|
||||
```
|
||||
|
||||
After first launch, `ui.json` will be created in the appropriate data directory.
|
||||
See [Data Directories](#data-directories).
|
||||
You should modify this file directly or use the portal to change the default
|
||||
username and password.
|
||||
**Windows**
|
||||
```
|
||||
%LOCALAPPDATA%\repertory2\s3
|
||||
%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>
|
||||
|
||||
## Usage
|
||||
---
|
||||
|
||||
## 🛠 Usage
|
||||
|
||||
### Important Options
|
||||
|
||||
* `--help`
|
||||
* Display all mount utility options
|
||||
- `--help`
|
||||
Display all mount utility options.
|
||||
|
||||
* `-f`
|
||||
* Keep process in foreground on Linux.
|
||||
- `-f`
|
||||
Keep process in foreground on Linux.
|
||||
|
||||
* `--name, -na [name]`
|
||||
* 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 is required
|
||||
- `--name, -na [name]`
|
||||
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 is required.**
|
||||
|
||||
* `-dc`
|
||||
* Display mount configuration
|
||||
* For Sia, the `--name` option is required
|
||||
* For S3, the `-s3` and `--name` options are required
|
||||
- `-dc`
|
||||
Display mount configuration.
|
||||
For Sia, the `--name` option is required.
|
||||
For S3, the `-s3` and `--name` options are required.
|
||||
|
||||
### Sia
|
||||
### Unmounting
|
||||
|
||||
#### Sia Initial Configuration
|
||||
**Linux**
|
||||
```bash
|
||||
fusermount3 -u /path/to/mountpoint
|
||||
```
|
||||
|
||||
* Required steps:
|
||||
* Set the appropriate bucket name and `renterd` API password in `repertory` configuration:
|
||||
* `repertory --name '<my config name>' -set HostConfig.ApiPassword '<my password>'`
|
||||
* `repertory --name '<my config name>' -set SiaConfig.Bucket '<my bucket name>'`
|
||||
**macOS**
|
||||
```bash
|
||||
diskutil unmount /Volumes/yourmount
|
||||
```
|
||||
|
||||
* Optional steps:
|
||||
* Set a user name used during `renterd` basic authentication:
|
||||
* `repertory -set HostConfig.ApiUser '<my user>'`
|
||||
* `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`
|
||||
**Windows**
|
||||
```powershell
|
||||
net use <driveletter>: /delete
|
||||
```
|
||||
|
||||
* 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:
|
||||
* `repertory /mnt/location`
|
||||
* `repertory --name '<my config name>' /mnt/location`
|
||||
* Example:
|
||||
* `repertory --name my_bucket /mnt/location`
|
||||
When enabling **encryption tokens** for S3 or remote mounts:
|
||||
- Use a **long, random string**.
|
||||
- Store it **offline** (password manager and an offline backup).
|
||||
- Losing it means **permanent data loss**.
|
||||
|
||||
* 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
|
||||
{
|
||||
@@ -190,48 +348,77 @@ username and password.
|
||||
}
|
||||
```
|
||||
|
||||
### S3
|
||||
---
|
||||
|
||||
#### S3 Initial Configuration
|
||||
## 🗄 S3
|
||||
|
||||
* Required 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`
|
||||
### S3 Initial Configuration
|
||||
|
||||
* 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>'`
|
||||
**Required steps:**
|
||||
- Set the appropriate base URL:
|
||||
```bash
|
||||
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:
|
||||
```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:
|
||||
* `repertory -s3 --name '<my config name>' -dc`
|
||||
* Example:
|
||||
* `repertory -s3 --name minio -dc`
|
||||
**Optional steps:**
|
||||
- Set an appropriate region. Default is `any`:
|
||||
```bash
|
||||
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:
|
||||
* `repertory -s3 --name '<my config name>' /mnt/location`
|
||||
* Example:
|
||||
* `repertory -s3 --name minio /mnt/location`
|
||||
### S3 Mounting
|
||||
|
||||
* Windows:
|
||||
* `repertory -s3 --name '<my config name>' t:`
|
||||
* Example:
|
||||
* `repertory -s3 --name minio t:`
|
||||
**Linux**
|
||||
```bash
|
||||
repertory -s3 --name '<my config name>' /mnt/location
|
||||
# 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
|
||||
{
|
||||
@@ -276,100 +463,103 @@ username and password.
|
||||
}
|
||||
```
|
||||
|
||||
### Data Directories
|
||||
---
|
||||
|
||||
#### Linux Directories
|
||||
## 🌐 Remote Mounting
|
||||
|
||||
* `~/.local/repertory2/s3`
|
||||
* `~/.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.
|
||||
`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
|
||||
|
||||
The following steps must be performed on the mount you wish to share with
|
||||
other systems. Changes to configuration will not take affect while a mount is
|
||||
active, so it is recommended to unmount beforehand.
|
||||
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.
|
||||
|
||||
* Required steps:
|
||||
* Enable remote mount:
|
||||
* Sia
|
||||
* `repertory -set RemoteMount.Enable true`
|
||||
* `repertory --name '<my config name>' -set RemoteMount.Enable true`
|
||||
* S3:
|
||||
* `repertory -s3 --name '<my config name>' -set RemoteMount.Enable true`
|
||||
* Set a secure encryption token:
|
||||
* Sia:
|
||||
* `repertory -set RemoteMount.EncryptionToken '<my secure password>'`
|
||||
* `repertory --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'`
|
||||
* S3:
|
||||
* `repertory -s3 --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'`
|
||||
**Required steps:**
|
||||
- Enable remote mount:
|
||||
- **Sia**
|
||||
```bash
|
||||
repertory -set RemoteMount.Enable true
|
||||
repertory --name '<my config name>' -set RemoteMount.Enable true
|
||||
```
|
||||
- **S3**
|
||||
```bash
|
||||
repertory -s3 --name '<my config name>' -set RemoteMount.Enable true
|
||||
```
|
||||
- Set a secure encryption token:
|
||||
- **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:
|
||||
* Change the port clients will use to connect to your mount:
|
||||
* Sia:
|
||||
* `repertory -set RemoteMount.ApiPort 20000`
|
||||
* `repertory --name '<my config name>' -set RemoteMount.ApiPort 20000`
|
||||
* S3:
|
||||
* `repertory -s3 --name '<my config name>' -set RemoteMount.ApiPort 20000`
|
||||
**Optional steps:**
|
||||
- Change the port clients will use to connect to your mount:
|
||||
- **Sia**
|
||||
```bash
|
||||
repertory -set RemoteMount.ApiPort 20000
|
||||
repertory --name '<my config name>' -set RemoteMount.ApiPort 20000
|
||||
```
|
||||
- **S3**
|
||||
```bash
|
||||
repertory -s3 --name '<my config name>' -set RemoteMount.ApiPort 20000
|
||||
```
|
||||
|
||||
* IMPORTANT:
|
||||
* Be sure to configure your firewall to allow incoming TCP connections on the port configured in `RemoteMount.ApiPort`.
|
||||
**IMPORTANT:**
|
||||
Be sure to configure your firewall to allow incoming TCP connections on the port configured in `RemoteMount.ApiPort`.
|
||||
|
||||
#### Remote Mount Configuration File Section
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"RemoteMount": {
|
||||
"ApiPort": 20000,
|
||||
"ClientPoolSize": 20,
|
||||
"Enable": true,
|
||||
"EncryptionToken": "<my secure password>"
|
||||
},
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Client Setup
|
||||
|
||||
Client configuration is provider agnostic, so there's no need to specify `-s3`
|
||||
for S3 providers.
|
||||
Client configuration is provider agnostic, so there's no need to specify `-s3` for S3 providers.
|
||||
|
||||
* Required steps:
|
||||
* 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>'`
|
||||
* Replace `<host name or IP>` with the host name or IP of the server
|
||||
* Replace `<port>` with the value of `RemoteMount.ApiPort` used in the server configuration
|
||||
* Example:
|
||||
* `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>'`
|
||||
**Required steps:**
|
||||
- Set the encryption token to the same value configured during server setup:
|
||||
```bash
|
||||
repertory -rm <host name or IP>:<port> -set RemoteConfig.EncryptionToken '<my secure password>'
|
||||
# Replace <host name or IP> with the host name or IP of the server
|
||||
# Replace <port> with the value of RemoteMount.ApiPort used in the server configuration
|
||||
# Example:
|
||||
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
|
||||
|
||||
* Linux:
|
||||
* `repertory -rm <host name or IP>:<port> /mnt/location`
|
||||
* Example:
|
||||
* `repertory -rm 192.168.1.10:20000 /mnt/location`
|
||||
**Linux**
|
||||
```bash
|
||||
repertory -rm <host name or IP>:<port> /mnt/location
|
||||
# Example:
|
||||
repertory -rm 192.168.1.10:20000 /mnt/location
|
||||
```
|
||||
|
||||
* Windows:
|
||||
* `repertory -rm <host name or IP>:<port> t:`
|
||||
* Example:
|
||||
* `repertory -rm 192.168.1.10:20000 t:`
|
||||
**macOS**
|
||||
```bash
|
||||
repertory -rm <host name or IP>:<port> /Volumes/remotemount
|
||||
# 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
|
||||
|
||||
@@ -393,81 +583,96 @@ for S3 providers.
|
||||
}
|
||||
```
|
||||
|
||||
## Compiling
|
||||
---
|
||||
|
||||
Successful compilation will result in all files required for execution to be placed
|
||||
in the `dist/` directory
|
||||
## 🧰 Compiling
|
||||
|
||||
Successful compilation will place all required files for execution in the `dist/` directory.
|
||||
|
||||
### Linux Compilation
|
||||
|
||||
* Ensure `docker` is installed
|
||||
* For `x86-64`:
|
||||
* RelWithDebInfo: `scripts/make_unix.sh x86_64`
|
||||
* 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`
|
||||
- Ensure `docker` is installed
|
||||
- For `x86_64`:
|
||||
```bash
|
||||
scripts/make_unix.sh x86_64
|
||||
scripts/make_unix.sh x86_64 Release
|
||||
scripts/make_unix.sh x86_64 Debug
|
||||
```
|
||||
- For `aarch64`:
|
||||
```bash
|
||||
scripts/make_unix.sh aarch64
|
||||
scripts/make_unix.sh aarch64 Release
|
||||
scripts/make_unix.sh aarch64 Debug
|
||||
```
|
||||
|
||||
### macOS Compilation
|
||||
|
||||
* Ensure `Xcode` and `CMake` are installed
|
||||
* For `x86-64`:
|
||||
* RelWithDebInfo: `scripts/make_unix.sh x86_64`
|
||||
* 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`
|
||||
- Ensure `Xcode` and `CMake` are installed
|
||||
- For `x86_64`:
|
||||
```bash
|
||||
scripts/make_unix.sh x86_64
|
||||
scripts/make_unix.sh x86_64 Release
|
||||
scripts/make_unix.sh x86_64 Debug
|
||||
```
|
||||
- For `aarch64`:
|
||||
```bash
|
||||
scripts/make_unix.sh aarch64
|
||||
scripts/make_unix.sh aarch64 Release
|
||||
scripts/make_unix.sh aarch64 Debug
|
||||
```
|
||||
|
||||
### Windows Compilation
|
||||
|
||||
* OFFICIAL: Cross-compiling on Linux
|
||||
* Ensure `docker` is installed
|
||||
* RelWithDebInfo: `scripts/make_win32.sh x86_64`
|
||||
* Release: `scripts/make_win32.sh x86_64 Release`
|
||||
* Debug: `scripts/make_win32.sh x86_64 Debug`
|
||||
- **OFFICIAL: Cross-compiling on Linux**
|
||||
- Ensure `docker` is installed
|
||||
```bash
|
||||
scripts/make_win32.sh x86_64
|
||||
scripts/make_win32.sh x86_64 Release
|
||||
scripts/make_win32.sh x86_64 Debug
|
||||
```
|
||||
|
||||
* UNOFFICIAL: Compiling on Windows
|
||||
* Ensure latest [MSYS2](https://www.msys2.org/) is installed
|
||||
* RelWithDebInfo: `scripts\make_win32.cmd x86_64`
|
||||
* Release: `scripts\make_win32.cmd x86_64 Release`
|
||||
* Debug: `scripts\make_win32.cmd x86_64 Debug`
|
||||
- **UNOFFICIAL: Compiling on Windows**
|
||||
- Ensure latest [MSYS2](https://www.msys2.org/) is installed
|
||||
```powershell
|
||||
scripts\make_win32.cmd x86_64
|
||||
scripts\make_win32.cmd x86_64 Release
|
||||
scripts\make_win32.cmd x86_64 Debug
|
||||
```
|
||||
|
||||
## Credits
|
||||
---
|
||||
|
||||
* [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/)
|
||||
## 📜 Credits
|
||||
|
||||
## 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
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
|
Reference in New Issue
Block a user