2023-10-24 09:22:26 +00:00
# Minimalist Fuse Manager (MFM)
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
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.
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
## Prerequisites & Dependencies
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
Before using MFM, ensure the following tools are installed on your system:
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
- **gocryptfs**: < https: // github . com / rfjakob / gocryptfs >
- **sshfs**: < https: // github . com / libfuse / sshfs >
- **httpdirfs**: < https: // github . com / fangfufu / httpdirfs >
- **fzf**: < https: // github . com / junegunn / fzf >
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
To build from source, you'll also require:
- **crystal-lang** : < https: // crystal-lang . org />
## Installation
### 1. From Source
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.
### 2. Binary Download
You can also fetch a pre-compiled binary version of MFM.
## Usage
### Command Line Options
2023-10-20 09:33:12 +00:00
```
2023-10-24 09:22:26 +00:00
Usage: mfm [options]
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
Global options:
-c, --config FILE Define configuration file
-h, --help Showcase this help
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
Commands:
create Instantiate a new vault
delete Erase an existing vault
edit Adjust the configuration
```
2023-10-20 09:33:12 +00:00
2023-10-24 10:50:42 +00:00
### Demo
< video src = "https://code.apps.glenux.net/glenux/mfm/raw/branch/develop/doc/output.webm" width = "810" height = "595" style = "max-width: 100%;" controls = "controls" > < / video >
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
## Configuration
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
The script harnesses a YAML configuration file, typically located at `~/.config/mfm.yml` , which outlines vault names and paths.
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
### YAML File Format
2023-10-20 09:33:12 +00:00
```yaml
2023-10-24 09:22:26 +00:00
version: "1"
global:
mountpoint: "/home/user/mnt/{{name}}"
2023-10-24 12:49:46 +00:00
filesystems:
2023-10-24 09:22:26 +00:00
- 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
2023-10-24 15:14:14 +00:00
- type: httpdirfs
name: "Debian Repository"
url: "http://ftp.debian.org/debian/"
2023-10-24 09:22:26 +00:00
# Incorporate more vaults as necessary
2023-10-20 09:33:12 +00:00
```
2023-10-24 09:22:26 +00:00
## 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
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
- Glenn Y. Rolland - *Initial Work*
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
## Inspired By
2023-10-20 09:33:12 +00:00
2023-10-24 09:22:26 +00:00
- **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 />
2023-10-20 09:33:12 +00:00
## License
2023-10-24 09:22:26 +00:00
GNU GPL-2