Update README.md
This commit is contained in:
parent
154d8a32ca
commit
cc458b3af5
1 changed files with 83 additions and 38 deletions
121
README.md
121
README.md
|
@ -1,58 +1,103 @@
|
||||||
# GX-Vault Manager
|
# Minimalist Fuse Manager (MFM)
|
||||||
|
|
||||||
GX-Vault Manager is a Crystal-lang script that helps in managing encrypted vaults using `gocryptfs`. The script offers a user-friendly interface for mounting and unmounting vaults, providing real-time status and handling errors gracefully.
|
MFM is a Crystal-lang CLI tailored to simplify the management of encrypted vaults using multiple FUSE filesystems such as sshfs, gocryptfs, httpdirfs, and more. It provides a user-friendly interface, enabling users to smoothly mount and unmount filesystems, obtain filesystem status, and handle errors adeptly.
|
||||||
|
|
||||||
## Configuration
|
## Prerequisites & Dependencies
|
||||||
|
|
||||||
The script uses a YAML configuration file, typically stored at `~/.config/gx-vault.yml`. This file contains details about the vaults, including their names and paths.
|
Before using MFM, ensure the following tools are installed on your system:
|
||||||
|
|
||||||
## YAML File Format
|
- **gocryptfs**: <https://github.com/rfjakob/gocryptfs>
|
||||||
|
- **sshfs**: <https://github.com/libfuse/sshfs>
|
||||||
|
- **httpdirfs**: <https://github.com/fangfufu/httpdirfs>
|
||||||
|
- **fzf**: <https://github.com/junegunn/fzf>
|
||||||
|
|
||||||
The configuration file consists of an array of vaults, with each vault having a name and an encrypted path. Below is the structure of the YAML file:
|
To build from source, you'll also require:
|
||||||
|
|
||||||
```yaml
|
- **crystal-lang** : <https://crystal-lang.org/>
|
||||||
vaults:
|
|
||||||
- name: "vault1"
|
|
||||||
encrypted_path: "/absolute/path/to/vault1"
|
|
||||||
|
|
||||||
- name: "vault2"
|
## Installation
|
||||||
encrypted_path: "/absolute/path/to/vault2"
|
|
||||||
|
|
||||||
# Add more vaults as needed
|
### 1. From Source
|
||||||
```
|
|
||||||
|
|
||||||
## Fields Description
|
1. Clone or download the source code.
|
||||||
|
2. Navigate to the source directory.
|
||||||
|
3. Execute `shards install` to obtain dependencies.
|
||||||
|
4. Compile using `shards build`.
|
||||||
|
5. Find the compiled binary in the `bin` directory.
|
||||||
|
|
||||||
- **vaults:** The root element containing an array of all defined vaults.
|
### 2. Binary Download
|
||||||
|
|
||||||
- **name:** The unique name of the vault. This is used for display and selection purposes.
|
You can also fetch a pre-compiled binary version of MFM.
|
||||||
|
|
||||||
- **encrypted_path:** The absolute path to the directory where the encrypted data is stored. This path is used by `gocryptfs` for mounting the vault.
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
Here is a sample configuration with two vaults named "Personal" and "Work":
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
vaults:
|
|
||||||
- name: "Personal"
|
|
||||||
encrypted_path: "/home/user/encrypted/personal"
|
|
||||||
|
|
||||||
- name: "Work"
|
|
||||||
encrypted_path: "/home/user/encrypted/work"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Once the YAML configuration file is set up, run the script. It will read the configuration, and you can select a vault to mount or unmount using the `fzf` interactive selector. The status of each vault (whether it's open or closed) is displayed next to the vault's name.
|
### Command Line Options
|
||||||
|
|
||||||
## Dependencies
|
```
|
||||||
|
Usage: mfm [options]
|
||||||
|
|
||||||
- gocryptfs
|
Global options:
|
||||||
- fzf
|
-c, --config FILE Define configuration file
|
||||||
- Crystal-lang
|
-h, --help Showcase this help
|
||||||
- Other dependencies as per the Crystal-lang script
|
|
||||||
|
Commands:
|
||||||
|
create Instantiate a new vault
|
||||||
|
delete Erase an existing vault
|
||||||
|
edit Adjust the configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The script harnesses a YAML configuration file, typically located at `~/.config/mfm.yml`, which outlines vault names and paths.
|
||||||
|
|
||||||
|
### YAML File Format
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: "1"
|
||||||
|
|
||||||
|
global:
|
||||||
|
mountpoint: "/home/user/mnt/{{name}}"
|
||||||
|
|
||||||
|
fsmap:
|
||||||
|
- type: "gocryptfs"
|
||||||
|
name: "Work - SSH Keys"
|
||||||
|
encrypted_path: "/home/user/.ssh/keyring.work"
|
||||||
|
|
||||||
|
- type: "sshfs"
|
||||||
|
name: "Personal - Media Server"
|
||||||
|
remote_user: "user"
|
||||||
|
remote_host: "mediaserver.local"
|
||||||
|
remote_path: "/mnt/largedisk/music"
|
||||||
|
remote_port: 22
|
||||||
|
|
||||||
|
# Incorporate more vaults as necessary
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contribution Guidelines
|
||||||
|
|
||||||
|
To contribute to MFM:
|
||||||
|
|
||||||
|
1. **Fork the Repository**: Begin by forking the MFM repository.
|
||||||
|
2. **Create a Feature Branch**: Every feature or fix should reside in distinct branches.
|
||||||
|
3. **Commit Changes**: Commit with expressive messages.
|
||||||
|
4. **Run Tests**: Confirm no functional disruptions.
|
||||||
|
5. **Push to Your Fork**: Transfer changes to your GitHub fork.
|
||||||
|
6. **Submit a Pull Request**: Commence a pull request to the main repo, elaborating on your changes.
|
||||||
|
7. **Review**: Anticipate feedback from maintainers and react suitably.
|
||||||
|
|
||||||
|
Contributors are bound by our code of conduct and the terms of the GPL-2 license.
|
||||||
|
|
||||||
|
## Authors and Contributors
|
||||||
|
|
||||||
|
- Glenn Y. Rolland - *Initial Work*
|
||||||
|
|
||||||
|
## Inspired By
|
||||||
|
|
||||||
|
- **Qasim**: A user-convenient FUSE manager. <https://code.apps.glenux.net/glenux/qasim>
|
||||||
|
- **Sirikali**: A Qt/C++ GUI front end for various FUSE filesystems like cryfs, gocryptfs, securefs, ecryptfs, and encfs. <https://mhogomchungu.github.io/sirikali/>
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
GPL-2
|
GNU GPL-2
|
||||||
|
|
Loading…
Reference in a new issue