Create documentation for filesystem repositories (#4287)

<!-- PR description-->

Website documentation update for local storage. 


---

#### Does this PR need a docs update or release note?

- [x]  Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ]  No

#### Type of change

<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [x] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup

#### Issue(s)

<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* https://github.com/alcionai/corso/issues/1416

#### Test Plan

<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ]  Unit test
- [ ] 💚 E2E
This commit is contained in:
Abhishek Pandey 2023-09-19 17:41:36 +05:30 committed by GitHub
parent d2c73827cb
commit fd221587ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 107 additions and 12 deletions

View File

@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] (beta) ## [Unreleased] (beta)
### Added
- Enables local or network-attached storage for Corso repositories.
## [v0.13.0] (beta) - 2023-09-18
### Added ### Added
- Groups and Teams service support available as a feature preview! Channel messages and Files are now available for backup and restore in the CLI: `corso backup create groups --group '*'` - Groups and Teams service support available as a feature preview! Channel messages and Files are now available for backup and restore in the CLI: `corso backup create groups --group '*'`
* The cli commands for "groups" and "teams" can be used interchangably, and will operate on the same backup data. * The cli commands for "groups" and "teams" can be used interchangably, and will operate on the same backup data.

View File

@ -18,19 +18,19 @@ specified when initializing a repository.
Within a repository, Corso uses Within a repository, Corso uses
AES256-GCM-HMAC-SHA256 to encrypt data at rest using keys that are derived from the repository passphrase. AES256-GCM-HMAC-SHA256 to encrypt data at rest using keys that are derived from the repository passphrase.
Data in flight to and from the repositiry is encrypted via TLS. Data in flight to and from the repository is encrypted via TLS.
Repositories are supported on the following object storage systems: Repositories are supported on the following storage systems:
<TOCInline toc={toc} maxHeadingLevel={2}/><br/> <TOCInline toc={toc} maxHeadingLevel={2}/><br/>
:::note :::note
Depending on community interest, Corso will add support for other object storage backends in the future. Depending on community interest, Corso will add support for other storage backends in the future.
::: :::
## Amazon S3 ## Amazon S3
### Prerequisites ### S3 Prerequisites
Before setting up your Corso S3 repository, the following prerequisites must be met: Before setting up your Corso S3 repository, the following prerequisites must be met:
@ -73,7 +73,7 @@ The two most commonly-used options are:
`AWS_SHARED_CREDENTIALS_FILE`, if not using the default file location. You can learn more about the AWS CLI `AWS_SHARED_CREDENTIALS_FILE`, if not using the default file location. You can learn more about the AWS CLI
environment variables [here](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html). environment variables [here](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html).
### Initialize repository ### Initialize a S3 repository
Before first use, you need to initialize a Corso repository with `corso repo init s3`. See the command details Before first use, you need to initialize a Corso repository with `corso repo init s3`. See the command details
[here](../../cli/corso-repo-init-s3). [here](../../cli/corso-repo-init-s3).
@ -84,7 +84,7 @@ Before first use, you need to initialize a Corso repository with `corso repo ini
```powershell ```powershell
# Initialize the Corso Repository # Initialize the Corso Repository
$Env:CORSO_PASSPHRASE = 'CHANGE-ME-THIS-IS-INSECURE' $Env:CORSO_PASSPHRASE = 'CHANGE-ME-THIS-IS-INSECURE'
.\corso repo init s3 --bucket corso-test .\corso repo init s3 --bucket corso-repo
``` ```
</TabItem> </TabItem>
@ -93,7 +93,7 @@ Before first use, you need to initialize a Corso repository with `corso repo ini
```bash ```bash
# Initialize the Corso Repository # Initialize the Corso Repository
export CORSO_PASSPHRASE="CHANGE-ME-THIS-IS-INSECURE" export CORSO_PASSPHRASE="CHANGE-ME-THIS-IS-INSECURE"
./corso repo init s3 --bucket corso-test ./corso repo init s3 --bucket corso-repo
``` ```
</TabItem> </TabItem>
@ -104,13 +104,13 @@ Before first use, you need to initialize a Corso repository with `corso repo ini
export CORSO_PASSPHRASE="CHANGE-ME-THIS-IS-INSECURE" export CORSO_PASSPHRASE="CHANGE-ME-THIS-IS-INSECURE"
docker run --env-file $HOME/.corso/corso.env \\ docker run --env-file $HOME/.corso/corso.env \\
--volume $HOME/.corso:/app/corso ghcr.io/alcionai/corso:${Version()} \\ --volume $HOME/.corso:/app/corso ghcr.io/alcionai/corso:${Version()} \\
repo init s3 --bucket corso-test` repo init s3 --bucket corso-repo`
}</CodeBlock> }</CodeBlock>
</TabItem> </TabItem>
</Tabs> </Tabs>
### Connect to a repository ### Connect to a S3 repository
If a repository already exists, you can connect to it with `corso repo connect s3`. See the command details If a repository already exists, you can connect to it with `corso repo connect s3`. See the command details
[here](../../cli/corso-repo-connect-s3). [here](../../cli/corso-repo-connect-s3).
@ -120,7 +120,7 @@ If a repository already exists, you can connect to it with `corso repo connect s
```powershell ```powershell
# Connect to the Corso Repository # Connect to the Corso Repository
.\corso repo connect s3 --bucket corso-test .\corso repo connect s3 --bucket corso-repo
``` ```
</TabItem> </TabItem>
@ -128,7 +128,7 @@ If a repository already exists, you can connect to it with `corso repo connect s
```bash ```bash
# Connect to the Corso Repository # Connect to the Corso Repository
./corso repo connect s3 --bucket corso-test ./corso repo connect s3 --bucket corso-repo
``` ```
</TabItem> </TabItem>
@ -138,7 +138,7 @@ If a repository already exists, you can connect to it with `corso repo connect s
`# Connect to the Corso Repository `# Connect to the Corso Repository
docker run --env-file $HOME/.corso/corso.env \\ docker run --env-file $HOME/.corso/corso.env \\
--volume $HOME/.corso:/app/corso ghcr.io/alcionai/corso:${Version()} \\ --volume $HOME/.corso:/app/corso ghcr.io/alcionai/corso:${Version()} \\
repo connect s3 --bucket corso-test` repo connect s3 --bucket corso-repo`
}</CodeBlock> }</CodeBlock>
</TabItem> </TabItem>
@ -159,3 +159,93 @@ need to use the following flag with the initial Corso `repo init` command:
Corso also supports the use of object storage systems with no TLS certificate or with self-signed Corso also supports the use of object storage systems with no TLS certificate or with self-signed
TLS certificates with the `--disable-tls` or `--disable-tls-verification` flags. TLS certificates with the `--disable-tls` or `--disable-tls-verification` flags.
[These flags](../../cli/corso-repo-init-s3) should only be used for testing. [These flags](../../cli/corso-repo-init-s3) should only be used for testing.
## Filesystem Storage
Corso supports creating a repository on a local or network attached filesystem.
:::note
Filesystem repositories aren't S3 compatible. Copying a local repository directly to S3-compatible object storage
or the other way around isn't supported.
:::
### Initialize a filesystem repository
Before first use, you need to initialize a Corso repository with `corso repo init filesystem`. See the command details
[here](../../cli/corso-repo-init-filesystem). Corso will create the directory structure if necessary, including any
missing parent directories.
<Tabs groupId="os">
<TabItem value="win" label="Powershell">
```powershell
# Initialize the Corso Repository
$Env:CORSO_PASSPHRASE = 'CHANGE-ME-THIS-IS-INSECURE'
.\corso repo init filesystem --path C:\Users\user\corso-repo
```
</TabItem>
<TabItem value="unix" label="Linux/macOS">
```bash
# Initialize the Corso Repository
export CORSO_PASSPHRASE="CHANGE-ME-THIS-IS-INSECURE"
./corso repo init filesystem --path $HOME/corso-repo
```
</TabItem>
<TabItem value="docker" label="Docker">
<CodeBlock language="bash">{
`# Initialize the Corso Repository
export CORSO_PASSPHRASE="CHANGE-ME-THIS-IS-INSECURE"
docker run --env-file $HOME/.corso/corso.env \\
--volume $HOME/.corso:/app/corso ghcr.io/alcionai/corso:${Version()} \\
--volume /path/on/host/corso-repo:/path/in/container/corso-repo \\
repo init filesystem --path /path/in/container/corso-repo`
}</CodeBlock>
</TabItem>
</Tabs>
### Connect to a filesystem repository
If a repository already exists, you can connect to it with `corso repo connect filesystem`. See the command details
[here](../../cli/corso-repo-connect-filesystem).
<Tabs groupId="os">
<TabItem value="win" label="Powershell">
```powershell
# Connect to the Corso Repository
.\corso repo connect filesystem --path C:\Users\user\corso-repo
```
</TabItem>
<TabItem value="unix" label="Linux/macOS">
```bash
# Connect to the Corso Repository
./corso repo connect filesystem --path $HOME/corso-repo
```
</TabItem>
<TabItem value="docker" label="Docker">
<CodeBlock language="bash">{
`# Connect to the Corso Repository
docker run --env-file $HOME/.corso/corso.env \\
--volume $HOME/.corso:/app/corso ghcr.io/alcionai/corso:${Version()} \\
--volume /path/on/host/corso-repo:/path/in/container/corso-repo \\
repo connect filesystem --path /path/in/container/corso-repo`
}</CodeBlock>
</TabItem>
</Tabs>
### Remarks
* Filesystem repositories can be quickly set up and are well-suited for smaller scale projects or
testing environments. However, they don't offer the same level of interoperability as an S3 compatible object storage.
* `--prefix` options aren't supported.
* Repository directories are created with `0700` permission mode. Files are created with `0600`.