├── .github ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FUNDING.yml └── workflows │ └── deploy.yml ├── .gitignore ├── README.md ├── docs ├── android │ ├── _category_.json │ ├── access-vault.md │ ├── cloud-management.md │ ├── index.md │ ├── settings.md │ ├── setup.md │ └── vault-management.md ├── desktop │ ├── _category_.json │ ├── accessing-vaults.md │ ├── adding-vaults.md │ ├── advanced-settings.md │ ├── encrypted-file-names.md │ ├── error-handling.md │ ├── getting-started.md │ ├── index.md │ ├── network.md │ ├── password-and-recovery-key.md │ ├── setup.md │ ├── sync-conflicts.md │ ├── vault-events.md │ ├── vault-management.md │ └── volume-type.md ├── hub │ ├── _category_.json │ ├── access-vault.md │ ├── admin.md │ ├── deployment.md │ ├── index.md │ ├── introduction.md │ ├── user-group-management.md │ ├── vault-management.md │ ├── vault-recovery.md │ └── your-account.md ├── ios │ ├── _category_.json │ ├── access-vault.md │ ├── cloud-management.md │ ├── index.md │ ├── settings.md │ ├── setup.md │ ├── shortcuts-guide.md │ └── vault-management.md ├── misc │ ├── _category_.json │ ├── contribute.md │ ├── index.md │ ├── manual-migration.md │ ├── supported-cloud-services.md │ └── vault-format-history.md └── security │ ├── _category_.json │ ├── architecture.md │ ├── best-practices.md │ ├── hub.md │ ├── index.md │ ├── security-target.md │ ├── vault.md │ └── verify-installers.md ├── docusaurus.config.ts ├── package-lock.json ├── package.json ├── sidebars.ts ├── src ├── clientModules │ └── utmRemover.ts ├── components │ ├── Grid.tsx │ ├── GridContext.tsx │ ├── HomepageFeatures │ │ └── index.tsx │ ├── Image.tsx │ ├── MobileGrid.tsx │ ├── WhiteBox.tsx │ ├── WhiteBoxCaption.tsx │ └── WhiteBoxContext.tsx ├── css │ ├── custom.css │ └── fonts.css ├── pages │ ├── index.module.css │ └── index.tsx └── theme │ └── MDXComponents.js ├── static ├── .nojekyll ├── fonts │ ├── OFL.txt │ ├── opensans-bold.reduced.woff2 │ ├── opensans-medium.reduced.woff2 │ ├── opensans-regular.reduced.woff2 │ ├── opensans-regular.woff2 │ ├── quicksand-bold.reduced.woff2 │ ├── quicksand-bold.woff2 │ ├── quicksand-medium.reduced.woff2 │ ├── quicksand-medium.woff2 │ ├── quicksand-regular.reduced.woff2 │ └── quicksand-regular.woff2 ├── img │ ├── android │ │ ├── add-dropbox-login-provider-0.png │ │ ├── add-dropbox-login-provider-1.png │ │ ├── add-existing-vault-0-start.png │ │ ├── add-existing-vault-1-select-add-existing-vault.png │ │ ├── add-existing-vault-2-select-provider.png │ │ ├── add-existing-vault-5-choose-folder.png │ │ ├── add-existing-vault-6-choose-file.png │ │ ├── add-existing-vault-8-finish.png │ │ ├── add-googledrive-login-provider.png │ │ ├── add-localstorage-login-provider-0.png │ │ ├── add-localstorage-login-provider-1.png │ │ ├── add-localstorage-login-provider-2.png │ │ ├── add-localstorage-login-provider-3.png │ │ ├── add-localstorage-login-provider-4.png │ │ ├── add-onedrive-login-provider-0.png │ │ ├── add-onedrive-login-provider-1.png │ │ ├── add-s3-login-provider.png │ │ ├── add-webdav-login-provider-0.png │ │ ├── add-webdav-login-provider-1.png │ │ ├── add-webdav-login-provider-2.png │ │ ├── change-password-vault-0-start.png │ │ ├── change-password-vault-1-select-change-pw.png │ │ ├── change-password-vault-2-change-password.png │ │ ├── change-password-vault-3-changing-pw.png │ │ ├── change-password-vault-4-finish.png │ │ ├── change-vault-position.gif │ │ ├── create-new-vault-0-start.png │ │ ├── create-new-vault-1-select-new-existing.png │ │ ├── create-new-vault-2-select-provider.png │ │ ├── create-new-vault-5-name-vault.png │ │ ├── create-new-vault-6-select-path.png │ │ ├── create-new-vault-7-set-password.png │ │ ├── create-new-vault-8-creating-vault.png │ │ ├── create-new-vault-9-finish.png │ │ ├── delete-file-0-start.png │ │ ├── delete-file-1-select-delete.png │ │ ├── delete-file-2-confirmation.png │ │ ├── delete-file-3-deleting.png │ │ ├── delete-file-4-finish.png │ │ ├── edit-file.gif │ │ ├── export-file-0-start.png │ │ ├── export-file-1-select-export.png │ │ ├── export-file-2-choose-location.png │ │ ├── export-file-3-exporting.png │ │ ├── export-file-4-finish.png │ │ ├── fast-scroll.gif │ │ ├── fdroid-qr-code.svg │ │ ├── launch-settings.png │ │ ├── lock-vault-0-lock.png │ │ ├── lock-vault-1-notification.png │ │ ├── lock-vault-2-lock-start.png │ │ ├── lock-vault-3-select-lock.png │ │ ├── lock-vault-4-finish.png │ │ ├── move-file-0-start.png │ │ ├── move-file-1-select-move.png │ │ ├── move-file-2-move-root.png │ │ ├── move-file-3-move-target.png │ │ ├── move-file-3-moving.png │ │ ├── move-file-4-finish.png │ │ ├── move-file-5-move-folder-hint.png │ │ ├── remove-vault-0-start.png │ │ ├── remove-vault-1-select-remove-vault.png │ │ ├── remove-vault-2-confirmation.png │ │ ├── remove-vault-3-finish.png │ │ ├── rename-file-0-start.png │ │ ├── rename-file-1-select-rename.png │ │ ├── rename-file-2-rename.png │ │ ├── rename-file-3-renaming.png │ │ ├── rename-file-4-finish.png │ │ ├── rename-vault-0-start.png │ │ ├── rename-vault-1-select-rename.png │ │ ├── rename-vault-2-edit-name.png │ │ ├── rename-vault-3-renaming.png │ │ ├── rename-vault-4-finish.png │ │ ├── search-0-start.png │ │ ├── search-1-searched.png │ │ ├── search-2-finish.png │ │ ├── search-glob-pattern.gif │ │ ├── search.gif │ │ ├── setting-app-obscured.png │ │ ├── setting-cloud-services.png │ │ ├── setting-fingerprint-0-setup.png │ │ ├── setting-fingerprint-1-enter-pw.png │ │ ├── setting-fingerprint-2-authenticate.png │ │ ├── setting-fingerprint-3-finish.png │ │ ├── setting-style-dark.png │ │ ├── settings.png │ │ ├── share-file-0-start.png │ │ ├── share-file-1-select-share.png │ │ ├── share-file-2-select-app.png │ │ ├── share-with-cm-0-start.png │ │ ├── share-with-cm-1-choose-cm.png │ │ ├── share-with-cm-2-select-vault.png │ │ ├── share-with-cm-3-uploading.png │ │ ├── share-with-cm-4-finish.png │ │ ├── sort.gif │ │ ├── unlock-vault-0-select.png │ │ ├── unlock-vault-1-using-password.png │ │ ├── unlock-vault-2-using-fingerprint.png │ │ ├── unlock-vault-3-loading.png │ │ └── unlock-vault-4-unlocked.png │ ├── desktop │ │ ├── add-vault-1.png │ │ ├── add-vault-2.png │ │ ├── add-vault-3.png │ │ ├── add-vault-4.png │ │ ├── add-vault-5.png │ │ ├── add-vault-6.png │ │ ├── change-password-prompt.png │ │ ├── create-or-open-vault.png │ │ ├── decrypt-file-names.png │ │ ├── empty-vault-list.png │ │ ├── error-dialog-1.png │ │ ├── error-dialog-2.png │ │ ├── error-dialog-3.png │ │ ├── event-view.png │ │ ├── move-vaults.gif │ │ ├── preferences-virtual-drive.png │ │ ├── recoverykey-recover-enter.png │ │ ├── recoverykey-recover-valid.png │ │ ├── recoverykey.png │ │ ├── unlock-prompt.png │ │ ├── unlock-success.png │ │ ├── vault-detail-locked.png │ │ ├── vault-detail-unlocked-simple.png │ │ ├── vault-detail-unlocked.png │ │ ├── vault-options-general.png │ │ ├── vault-options-mounting.png │ │ └── vault-options-password.png │ ├── favicon.ico │ ├── hub │ │ ├── access-keycloak-link.png │ │ ├── account-setup.png │ │ ├── admin-area-license.png │ │ ├── auditlogs-filter-events.png │ │ ├── auditlogs-filter.png │ │ ├── auditlogs-overview.png │ │ ├── billing-active-license.png │ │ ├── billing-community-license.png │ │ ├── create-vault-download.png │ │ ├── create-vault-recoverykey.png │ │ ├── create-vault.png │ │ ├── hub-intro.png │ │ ├── legacy-devices.png │ │ ├── profile-view.png │ │ ├── settings.png │ │ ├── trust-device.png │ │ ├── unlock-access-denied.png │ │ ├── unlock-authenticate.png │ │ ├── unlock-click-unlock.png │ │ ├── unlock-register-device-desktop.png │ │ ├── unlock-register-device-hub.png │ │ ├── unlock-setup-required-desktop.png │ │ ├── unlock-setup-required-hub.png │ │ ├── unlock-successfull-desktop.png │ │ ├── unlock-successfull-hub.png │ │ ├── update-permission.png │ │ ├── vault-details-enter-pw.png │ │ ├── vault-details-owner.png │ │ ├── vault-details-search.png │ │ ├── vault-details-user.png │ │ ├── vault-details-with-manage.png │ │ ├── vault-offlinerecovery-step1.png │ │ ├── vault-offlinerecovery-step2.png │ │ ├── vault-offlinerecovery-step3.png │ │ ├── vault-offlinerecovery-step4.png │ │ ├── vault-offlinerecovery-step5.png │ │ ├── vault-onlinerecovery-step1.png │ │ ├── vault-onlinerecovery-step2.png │ │ ├── vault-onlinerecovery-step3.png │ │ ├── vaultlist.png │ │ ├── wot-admin.png │ │ ├── wot-audit-log.png │ │ ├── wot-carol-unverified.png │ │ ├── wot-carol-verified.png │ │ └── wot-carol-verify.png │ ├── ios │ │ ├── enable-cryptomator-in-files-app-01.png │ │ └── enable-cryptomator-in-files-app-02.png │ ├── logo.svg │ ├── og-image.png │ └── security │ │ ├── file-content-encryption.png │ │ ├── file-content-encryption@2x.png │ │ ├── file-header-encryption.png │ │ ├── file-header-encryption@2x.png │ │ ├── filename-encryption.png │ │ ├── filename-encryption@2x.png │ │ ├── key-derivation.png │ │ ├── key-derivation@2x.png │ │ ├── masterkey-decryption.png │ │ ├── masterkey-decryption@2x.png │ │ ├── verify-gpg-signature.png │ │ ├── verify-win-installer.png │ │ └── verify-win-installer@2x.png └── vid │ └── locate-encrypted-file.mov └── tsconfig.json /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | support@cryptomator.org. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Cryptomator Documentation 2 | 3 | Thank you for helping improve Cryptomator's documentation! 4 | 5 | ## Getting Started 6 | 7 | 1. Fork the repository 8 | 2. Clone your fork: `git clone ` 9 | 3. Install dependencies: `npm install` 10 | 4. Start development server: `npm start` 11 | 12 | ## Making Changes 13 | 14 | - Documentation files are in the `docs/` folder 15 | - Use clear, concise language 16 | - Include screenshots or examples where helpful 17 | - Test your changes locally before submitting 18 | 19 | ## Submitting Changes 20 | 21 | We follow git flow for contributions: 22 | 23 | 1. Create a feature branch: `git checkout -b feature/improve-docs` 24 | 2. Make your changes and commit: `git commit -m "Improve setup instructions"` 25 | 3. Push to your fork: `git push origin feature/improve-docs` 26 | 4. Open a pull request 27 | 28 | *Note: Branch names and commit messages above are examples. Use descriptive names that reflect your actual changes.* 29 | 30 | ## Guidelines 31 | 32 | - Keep content up-to-date with the latest app versions 33 | - Use consistent formatting and style 34 | - Break up long sections with headings and lists 35 | - Link to related documentation when relevant 36 | 37 | ## Code of Conduct 38 | 39 | Help us keep Cryptomator open and inclusive. Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md). 40 | 41 | ## Above All, Thank You for Your Contributions 42 | 43 | Thank you for taking the time to contribute to the project! :+1: 44 | 45 | Cryptomator Team 46 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [cryptomator] 2 | custom: https://cryptomator.org/sponsors/ 3 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to GitHub Pages 2 | 3 | on: 4 | push: 5 | branches: ["main"] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | # BUILD 10 | build: 11 | name: Build Site 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v4 16 | - name: Setup Pages 17 | uses: actions/configure-pages@v5 18 | - name: Setup Node.js 19 | uses: actions/setup-node@v4 20 | with: 21 | node-version: '18' 22 | cache: 'npm' 23 | - name: Install dependencies 24 | run: npm ci 25 | - name: Build with Docusaurus 26 | run: npm run build 27 | - name: Upload artifact 28 | uses: actions/upload-pages-artifact@v3 29 | with: 30 | path: './build' 31 | 32 | # DEPLOY 33 | deploy: 34 | name: Deploy to GitHub Pages 35 | runs-on: ubuntu-latest 36 | needs: [build] 37 | permissions: # Grant GITHUB_TOKEN the permissions required to make a Pages deployment 38 | pages: write # to deploy to Pages 39 | id-token: write # to verify the deployment originates from an appropriate source 40 | steps: 41 | - name: Deploy to GitHub Pages 42 | id: deployment 43 | uses: actions/deploy-pages@v4 # or specific "vX.X.X" version tag for this action 44 | environment: # Deploy to the github-pages environment 45 | name: github-pages 46 | url: ${{ steps.deployment.outputs.page_url }} 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cryptomator Documentation 2 | 3 | Official documentation site for Cryptomator. Built with [Docusaurus](https://docusaurus.io/). 4 | 5 | ## Contributing 6 | 7 | We welcome contributions! Please read our [contributing guidelines](.github/CONTRIBUTING.md) for details on how to help. 8 | 9 | ## Quick Start 10 | 11 | ```bash 12 | npm install 13 | npm start 14 | ``` 15 | 16 | Opens dev server at `http://localhost:3000` with live reload. 17 | 18 | ## Structure 19 | 20 | - `docs/desktop/` - Desktop app documentation 21 | - `docs/android/` - Android app documentation 22 | - `docs/ios/` - iOS app documentation 23 | - `docs/hub/` - Cryptomator Hub documentation 24 | - `docs/security/` - Encryption architecture and security details 25 | - `docs/misc/` - Additional resources 26 | 27 | ## Scripts 28 | 29 | ```bash 30 | npm run build # Build static site 31 | npm run serve # Serve built site locally 32 | ``` 33 | 34 | Other scripts can be found in `package.json`. 35 | 36 | ## Deployment 37 | 38 | Deployed to [docs.cryptomator.org](https://docs.cryptomator.org) via GitHub Pages from the `main` branch. 39 | -------------------------------------------------------------------------------- /docs/android/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Android", 3 | "position": 2, 4 | "link": { 5 | "type": "doc", 6 | "id": "android/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/android/cloud-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: cloud-management 3 | title: Cloud Management 4 | sidebar_position: 2 5 | --- 6 | 7 | # Cloud Management 8 | 9 | 10 | How to handle cloud services with Android 11 | 12 | 13 | In "Cloud Services", you can create or edit the connection between the Cryptomator app and your storage provider accounts. 14 | 15 | Please enter the credentials for your provider account or in case of Google Drive choose your account. 16 | If your authentication was successful, some of the providers might ask you to grant Cryptomator access permission to your online files. 17 | Please allow this permission. 18 | 19 | In Google Drive, OneDrive and Dropbox you can only create one connection between your Cloud Service account and the Cryptomator app. 20 | You can't connect to (for example) two different *Dropbox* accounts. 21 | 22 | If the provider requested permission to access your online files you can remove Cryptomator permissions from your online storage account at any time. 23 | Please keep in mind that Cryptomator then cannot connect to your vault anymore. 24 | 25 | ## Login Dropbox {#login-dropbox} 26 | 27 | 28 | How to handle cloud services with Android 29 | How to handle cloud services with Android 30 | 31 | 32 | ## Login Google Drive {#login-google-drive} 33 | 34 | 35 | How to handle cloud services with Android 36 | 37 | 38 | ## Login OneDrive {#login-onedrive} 39 | 40 | 41 | How to handle cloud services with Android 42 | How to handle cloud services with Android 43 | 44 | 45 | ## Login WebDAV {#login-webdav} 46 | 47 | Please see [Cloud Services With WebDAV Support](/docs/misc/supported-cloud-services.md#cloud-services-with-webdav-support) for a non-exhaustive list of Cloud Services and information about accessing them with WebDAV. 48 | 49 | 50 | How to handle cloud services with Android 51 | How to handle cloud services with Android 52 | How to handle cloud services with Android 53 | 54 | 55 | :::note 56 | While creating the WebDAV connection, please make sure to add the root of the accessible storage and don't navigate directly into the vault. 57 | ::: 58 | 59 | ## Login S3 {#login-s3} 60 | 61 | Generate a key that has permissions "Allow List All Bucket Names". (AWS root users have this by default and [this permission may not be necessary in the future](https://github.com/cryptomator/android/issues/339).) 62 | 63 | "endpoint" refers to how the S3 API for your bucket can be reached. In the case of [official S3](https://docs.aws.amazon.com/general/latest/gr/s3.html), it would be `s3..amazonaws.com`, for e.g. [Backblaze B2](https://www.backblaze.com/apidocs/introduction-to-the-s3-compatible-api) `s3..backblazeb2.com`. 64 | 65 | 66 | Android S3 connection form 67 | 68 | 69 | ## Login Local Storage {#login-local-storage} 70 | 71 | The following pictures describes how to setup a location to access vaults stored on the internal storage of the device (the same applies for vaults located e.g. on a SD card): 72 | 73 | 74 | How to handle cloud services with Android 75 | How to handle cloud services with Android 76 | How to handle cloud services with Android 77 | How to handle cloud services with Android 78 | How to handle cloud services with Android 79 | 80 | 81 | After creating the location, you can access it by clicking on the name of the location to add a vault or create a new vault. 82 | 83 | :::note 84 | If you use a custom location please make sure to add the root folder of the storage like described in the pictures and don't navigate directly into the vault. 85 | ::: 86 | -------------------------------------------------------------------------------- /docs/android/index.md: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | 3 | # Android Documentation 4 | 5 | Documentation for Cryptomator on Android devices. Access your encrypted files on the go with our mobile application, whether you're using cloud storage or local files. 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/desktop/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Desktop", 3 | "position": 1, 4 | "link": { 5 | "type": "doc", 6 | "id": "desktop/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/desktop/accessing-vaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: accessing-vaults 3 | title: Accessing Vaults 4 | sidebar_position: 4 5 | --- 6 | 7 | # Accessing Vaults 8 | 9 | You can only access decrypted files of a vault if you can unlock it. Unlocking a vault is just a two-step process as long as you know the password. 10 | 11 | Cryptomator window showing a locked vault 12 | 13 | ## Unlocking a Vault {#unlocking-a-vault} 14 | 15 | 1. Select the vault you wish to unlock. 16 | 2. Click on the large `Unlock` button located at the center of the Cryptomator window. 17 | 3. Enter your vault's password. 18 | 19 | A confirmation will be displayed if your password is correct. 20 | You can either close the confirmation window by clicking `Done` or click on `Reveal Vault` to show your unlocked vault in your file manager. 21 | 22 | Vault unlock dialog 23 | 24 | :::note 25 | You can store the password in your operating system's keychain by checking the "Save Password" checkbox. There are also plug-ins available for Cryptomator, that allow you to store Cryptomator's vault passwords in third party password managers: 26 | 27 | - [KeePassXC plug-in](https://plugin.purejava.org) stores Cryptomator's vault passwords in a KeePassXC database 28 | - [Bitwarden plug-in](https://github.com/purejava/cryptomator-bitwarden/wiki) stores the vault passwords in Bitwarden's Secrets Manager 29 | 30 | With a saved password, you can unlock your vaults without typing a password on every unlock. It's faster. 31 | ::: 32 | 33 | :::warning 34 | Only store your password in the system's keychain on trusted devices. 35 | Anyone with access to the computer with stored passwords will be able to unlock your vault, and in some cases, even find your password. 36 | ::: 37 | 38 | Vault unlock success dialog 39 | 40 | ## Manage Files and Folders in Your Vault {#manage-files-and-folders-in-your-vault} 41 | 42 | By default, a vault's content will be accessible via an attached virtual drive on your PC. 43 | So, you can manage files and folders in your unlocked vault just like you do on any other hard drive or USB drive. 44 | 45 | Alternatively, a vault's content can be accessed via a directory or a WebDAV server by changing its [volume type](volume-type.md). 46 | Click on `Reveal Drive` in the Cryptomator window to open the mount location using the default file manager (Windows Explorer, Finder, …). 47 | 48 | :::note 49 | Even though your files are shown unencrypted in the virtual drive, they are not stored unencrypted on the hard drive but only in [volatile memory](https://en.wikipedia.org/wiki/Volatile_memory). 50 | ::: 51 | 52 | Cryptomator window showing an unlocked vault 53 | 54 | :::note 55 | On Windows, you can choose the drive letter of the virtual drive for each vault using advanced vault options. 56 | ::: 57 | 58 | ## Locking a Vault {#locking-a-vault} 59 | 60 | To lock a vault, simply click `Lock` and the virtual drive will disappear or render empty. Your files remain encrypted at the vault's location. 61 | 62 | ## Locate Encrypted File {#locate-encrypted-file} 63 | 64 | The Locate Encrypted File feature helps users find the encrypted version of a specific file. This feature is particularly useful when vault files are versioned and the user wants to restore an older version of a file. As Cryptomator encrypts filenames and obfuscates directory structures, users first locate the encrypted file and then restore an older version of the encrypted file with the third party app. 65 | 66 | 1. Unlock the desired vault. 67 | 2. Click on the `Locate Encrypted File` button. 68 | 3. Select the file within the vault. 69 | 70 | As an alternative for clicking the button, you can directly drag & drop a file onto the button. 71 | 72 | A file manager window opens showing the encrypted folder and marking the encrypted file. 73 | 74 | 78 | -------------------------------------------------------------------------------- /docs/desktop/adding-vaults.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: adding-vaults 3 | title: Adding Vaults 4 | sidebar_position: 3 5 | --- 6 | 7 | # Adding Vaults 8 | 9 | You will be presented with two options when adding a vault: 10 | 11 | 1. [`Create New Vault…`](#create-a-new-vault) - Choose this if you wish to create a new vault. 12 | 2. [`Open Existing Vault…`](#open-an-existing-vault) - Choose this if you already have a vault and wish to open it. 13 | 14 | Create a new or open an existing vault 15 | 16 | ## Create a New Vault {#create-a-new-vault} 17 | 18 | If you chose to create a new vault, the wizard will guide you through a simple 6-step vault creation process. 19 | 20 | ### 1. Choose a Name {#choose-a-name} 21 | 22 | Start by choosing a name for your vault. 23 | 24 | Choosing "My first Vault" as a vault name 25 | 26 | ### 2. Choose a Storage Location {#choose-a-storage-location} 27 | 28 | Next, you need to choose a directory on your PC where your vault's encrypted data will be stored. 29 | If you wish to sync the encrypted data to your cloud storage, then choose a cloud-synced directory. 30 | 31 | Cryptomator is not a sync tool. 32 | You need to install the sync software of your cloud storage provider to sync your encrypted data. 33 | 34 | :::note 35 | Cryptomator tries to detect locations of well-known cloud sync software (see screenshot below). 36 | 37 | The screenshot below shows multiple cloud storage locations, because we have multiple sync software installed on our device. 38 | You might not see the same options, depending on which cloud services are installed on your PC, but you can always choose `Custom Location` and navigate to your cloud-synced directory manually. 39 | ::: 40 | 41 | Choosing Dropbox as a storage location for my vault 42 | 43 | ### 3. Expert Settings {#expert-settings} 44 | 45 | The **Expert Settings** screen provides advanced configuration options for your vault. These settings are intended for users who require greater control over how their data is encrypted and stored. 46 | 47 | :::note 48 | Expert Settings are optional and should only be adjusted if you understand their implications. 49 | ::: 50 | 51 | **Enable Expert Settings** 52 | 53 | To access expert settings, toggle the **Enable Expert Settings** switch. Once enabled, additional configuration options will be available. 54 | 55 | **Maximum Length of Encrypted File Names** 56 | 57 | One of the primary expert settings allows you to configure the maximum length of encrypted file names. This setting controls the degree of *name shortening* applied to file names during encryption, which is critical for compatibility with filesystems that have strict length limits. 58 | 59 | - **Default Behavior**: Cryptomator automatically shortens file names to comply with filesystem constraints. 60 | - **Custom Configuration**: If specific requirements must be met, you can manually set the maximum allowed length for encrypted file names. 61 | 62 | Refer to [Name Shortening](/docs/security/vault.md#name-shortening) for additional details. 63 | 64 | Expert settings 65 | 66 | :::warning 67 | Adjusting the maximum length of encrypted file names may affect compatibility with certain filesystems. Ensure you thoroughly test these settings before enabling them for critical data. 68 | ::: 69 | 70 | ### 4. Choose a Password {#choose-a-password} 71 | 72 | Now it is time to choose a [strong password](/docs/security/best-practices.md#good-passwords) for your vault. 73 | Cryptomator requires at least 8 characters, but we recommend you to use longer phrases such as pass-sentences. 74 | The bar below the password field will help you estimate the strength of your password. 75 | 76 | :::tip 77 | Always choose a password that's unique across your vaults and accounts. 78 | This is especially important if you plan to share a vault with someone. 79 | Additionally, we recommend sharing passwords only over a secure channel, like PGP encypted emails, or end-to-end encrypted chat apps. 80 | ::: 81 | 82 | Choose a strong password for your Cryptomator vault 83 | 84 | :::warning 85 | Nobody except you knows this password, and we also cannot "reset" it for you. 86 | Without a valid password, your files can't be decrypted and will become inaccessible. 87 | So, store your password in a secure password manager or just don't forget it. 88 | 89 | However, you can reset a vault's password by yourself if you have its *recovery key*. 90 | ::: 91 | 92 | ### 5. Show Recovery Key (Optional Step) {#show-recovery-key} 93 | 94 | A recovery key allows you to reset your password if you ever forget it. 95 | 96 | If you chose to create a recovery key in the previous step, it will now be displayed. 97 | Make sure not to lose it and ideally make a hard copy of it. 98 | 99 | Showing the recovery key 100 | 101 | :::warning 102 | Remember, a recovery key is just like your password, its purpose is to gain access to your vault! 103 | Keep it as safe as your password. 104 | ::: 105 | 106 | For more details, take a look at [how a recovery key works](password-and-recovery-key.md#reset-password). 107 | 108 | ### 6. Done {#done} 109 | 110 | That's it. 111 | You have successfully created a new vault. 112 | 113 | You can now unlock this vault using your password and start adding files into it. 114 | 115 | Showing the recovery key 116 | 117 | ## Open an Existing Vault {#open-an-existing-vault} 118 | 119 | To open an existing vault, you need to locate the `masterkey.cryptomator` file of the vault you wish to open. 120 | 121 | :::note 122 | If you created the vault on another device and cannot find it or its masterkey file, make sure that the directory containing the vault is properly synchronized and fully accessible on your device. 123 | ::: 124 | -------------------------------------------------------------------------------- /docs/desktop/encrypted-file-names.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: encrypted-file-names 3 | title: Encrypted File Names 4 | sidebar_position: 7 5 | --- 6 | 7 | # Encrypted File Names 8 | 9 | :::info 10 | Neither file name nor directory structure encryption can be disabled. 11 | ::: 12 | 13 | Cryptomator protects your files by not only encrypting their content, but also their names and the overall directory structure of the vault. 14 | For example, if you have a directory structure inside your vault like this: 15 | 16 | ``` 17 | . 18 | ├─ myProject.pptx 19 | ├─ Images for Project 20 | │ └─ ImageOfBees.jpg 21 | └─ ... 22 | ``` 23 | 24 | The actual directory structure of the vault on your hard drive/cloud will look like this: 25 | 26 | ``` 27 | . 28 | ├─ d 29 | │ ├─ BZ 30 | │ │ └─ R4VZSS5PEF7TU3PMFIMON5GJRNBDWA 31 | │ │ ├─ dirId.c9r # internal vault file 32 | │ │ ├─ 5TyvCyF255sRtfrIv**83ucADQ==.c9r # myProject.pptx 33 | │ │ └─ FHTa55bH*sUfVDbEb0gTL9hZ8nho.c9r # Linking entry for directory "Images for Project" 34 | │ │ └─ dir.c9r # contains information for the link 35 | │ └─ FC 36 | │ └─ ZKZRLZUODUUYTYA4457CSBPZXB5A77 # content of the directory "Images for Project" 37 | │ └─ 4lmrQYfE_5ETusEkVJlTJrcFzjwxNBymig==.c9r # ImageOfBees.jpg 38 | ├─ masterkey.cryptomator 39 | ├─ masterkey.cryptomator.DFD9B248.bkup 40 | └─ vault.cryptomator 41 | ``` 42 | 43 | While this increases security, it also makes it impossible to see the original file names and directory structure without decrypting them first. 44 | When you need to know the original name of a file (e.g. to restore an older version), you can use the `Decrypt File Name` feature to decrypt the file name. 45 | 46 | ## Decrypting File Names {#decrypting-file-names} 47 | 48 | :::note 49 | Due to technical reasons, given only an encrypted file Cryptomator can only decrypt its name. 50 | It cannot compute its cleartext path. 51 | ::: 52 | 53 | You can access this feature from the unlocked view of a vault in the Cryptomator main window. 54 | On the bottom of the unlocked view, drop files on the `Decrypt File Name` zone or click on it. 55 | A modal window with the encrypted-decrypted-mapping opens. 56 | 57 | Vault detail view in the unlocked state 58 | 59 | The encrypted-decrypted-table has an action bar at the top with two buttons: 60 | * Clipboard button to copy the whole table as a CSV into the system clipboard 61 | * Trash button to clear the table 62 | 63 | Decrypt file names window 64 | 65 | Encrypted file names and their corresponding decrypted, original name are shown inside a two column table, with the encrypted names on the right. 66 | If you have not dropped any files, the table is empty. 67 | You can click inside the empty table to select files with a file picker dialog. 68 | 69 | Once the table has content, you can select single cells and copy their content with the OS specific keyboard copy shortcut. 70 | -------------------------------------------------------------------------------- /docs/desktop/error-handling.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: error-handling 3 | title: Error Handling 4 | sidebar_position: 10 5 | --- 6 | 7 | # Error Handling 8 | 9 | If you encounter an unexpected error, Cryptomator gives you the option to look up a solution in our error database. It's possible that the error has already been reported and a solution has been suggested for you to follow. 10 | 11 | Simply click the `Look up Solution` button. 12 | 13 | Error dialog with options to dismiss or look up solution 14 | 15 | We will cross-reference your current error with the database and provide a solution link if one is available. 16 | 17 | Error dialog with look up the solution link to matching error 18 | 19 | If no results are found, you have the option to initiate your own search by selecting `Look up this error`, or create a ticket by selecting `Report this error`. 20 | 21 | Error dialog with options to look up or report the error 22 | 23 | Your privacy is important to us. We assure you that all requests are handled with your explicit consent and are directed exclusively to our server. This feature operates solely on an opt-in basis to protect your privacy. 24 | 25 | For further information, please visit our [privacy policy](https://cryptomator.org/privacy/#812-cross-reference-with-error-database). 26 | -------------------------------------------------------------------------------- /docs/desktop/getting-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: getting-started 3 | title: Getting Started 4 | sidebar_position: 2 5 | --- 6 | 7 | # Getting Started 8 | 9 | You will be greeted with the following screen when you start Cryptomator for the first time. 10 | You can create new vaults (or add existing ones) using the [`+`](adding-vaults.md) button located at the lower left corner. 11 | 12 | Empty vault list 13 | 14 | 19 | -------------------------------------------------------------------------------- /docs/desktop/index.md: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | 3 | # Desktop Documentation 4 | 5 | Documentation for Cryptomator on Windows, macOS, and Linux. Create vaults, manage encrypted files, and configure settings to protect your data across all major desktop platforms. 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/desktop/network.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: network 3 | title: Network Settings 4 | sidebar_position: 13 5 | --- 6 | 7 | # Network Settings 8 | 9 | In general, Cryptomator does not require a network connection to function. 10 | 11 | If the network connection is present, it is used for optional features, i.e. update checks and searching the error database for solutions. 12 | The only exception is when unlocking [Cryptomator Hub](/docs/hub/introduction.md) vaults, then a network connection to the hub server is required. 13 | All network connections to the internet are using HTTPS with at least TLS 1.2. 14 | 15 | ## Trust Certificate Management {#trust-certificate-management} 16 | 17 | Depending on the OS, the required trusted root certificates are loaded from different locations. 18 | 19 | | OS | Trust Store | 20 | | :------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | 21 | | Linux | PKCS#12 file `/etc/cryptomator/certs.p12`; If the file does not exist, the JDK default trust store is used. [^1] | 22 | | macOS | System keychain | 23 | | Windows | Certificate store "Trusted Root Certification Authorities", with registry path `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\ROOT\` | 24 | 25 | [^1]: For more information about the location and contained certificates, see [JEP 319](https://openjdk.org/jeps/319). 26 | 27 | ## Proxy Server {#proxy-server} 28 | 29 | The default proxy server differs depending on the operating system: 30 | 31 | | OS | Default Proxy Setting | 32 | | :------ | :-------------------- | 33 | | Linux | No proxy | 34 | | macOS | Use system proxy | 35 | | Windows | Use system proxy | 36 | 37 | To change the proxy server, you need to edit [Cryptomator.cfg](advanced-settings.md#locating-the-system-wide-advanced-configuration). 38 | Open the file in a text editor, search for the line: 39 | 40 | ``` 41 | java-options=-Djava.net.useSystemProxies=true 42 | ``` 43 | 44 | and *if it exists*, only replace the word `true` with `false`. 45 | 46 | In the second step, add the following lines to the end of the file: 47 | 48 | ``` 49 | java-options=-Dhttp.proxyHost=[1] 50 | java-options=-Dhttp.proxyPort=[2] 51 | java-options=-Dhttps.proxyHost=[1] 52 | java-options=-Dhttps.proxyPort=[2] 53 | java-options=-Dhttp.nonProxyHosts=localhost|127.0.0.1|cryptomator-vault|[3] 54 | ``` 55 | 56 | and replace `[1]` with the host address of the proxy server, `[2]` with the port used on the proxy server and `[3]` with the list of host addresses, which should not use the proxy server, separated by '|'. 57 | -------------------------------------------------------------------------------- /docs/desktop/password-and-recovery-key.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: password-and-recovery-key 3 | title: Password and Recovery Key 4 | sidebar_position: 5 5 | --- 6 | 7 | # Password and Recovery Key 8 | 9 | This section explains how to change a password for a vault, show its recovery key, and reset a password. 10 | But, before that, let's understand how Cryptomator encrypts a vault using a password and what a recovery key is. 11 | The security of your vault is only as good as its password because Cryptomator encrypts your vault using a key derived from your password. 12 | So, [choosing a strong password](/docs/security/best-practices.md#good-passwords) is very important. 13 | 14 | Additionally, a unique *recovery key* can be derived for each vault while creating its password or later. 15 | A *recovery key* allows you to create a new password if you forget the original one. 16 | Do note that the *recovery key* feature does not break encryption in any way. 17 | It is a human readable form of your decrypted [masterkey](/docs/security/architecture.md#masterkey) and therefore independent of the current vault password and highly confidential. 18 | Keep it as safe as your password. 19 | 20 | All actions can be carried out using the `Password` tab under vault options. 21 | You can access it by selecting a vault, lock it if necessary, and click on `Vault Options`. 22 | 23 | Vault options allowing you to enter a recovery key 24 | 25 | ## Change Password {#change-password} 26 | 27 | To change the password of an existing vault, you need to know its current one or have a recovery key (see reset password section). 28 | 29 | Navigate to the `Vault Options` → `Password` tab, and click on `Change Password`. 30 | 31 | In the opened window, you will be asked for: 32 | 33 | 1. The vault's current password. 34 | 2. A new password. We suggest following our guide on choosing a [strong password](/docs/security/best-practices.md#good-passwords). 35 | 3. Enter the new password again. 36 | 37 | In order to proceed, you must confirm that you understand your action by selecting a checkbox. 38 | 39 | Finally, click on the `Change` button to change the password. 40 | 41 | :::note 42 | The `Change` button is activated only if the new password fields match and the checkbox is selected. 43 | ::: 44 | 45 | After entering your current password, enter your new one and confirm it 46 | 47 | :::info 48 | The password is used to derive a [KEK](https://en.wikipedia.org/wiki/Glossary_of_cryptographic_keys), which is then used to encrypt further keys. The KEK changes, but the keys encrypted with the KEK will stay the same. The actual files will not get re-encrypted, meaning you can not upgrade a weak passphrase to a stronger one once the data has been synced to a service that allows recovery of older versions of the masterkey file. 49 | 50 | If you like to encrypt your vault files with a new, stronger password, you need to create a new vault and drag the data from the old to the new one. Make sure to wipe all backups of the old vault afterwards. 51 | ::: 52 | 53 | ## Show Recovery Key {#show-recovery-key} 54 | 55 | You can derive a recovery key during vault creation or even later as long as you know your vault's password. 56 | To increase security, Cryptomator does not store the recovery key on your hard drive and always derives it on the fly. 57 | 58 | :::warning 59 | A recovery key can reset a vault's current password. 60 | So, treat it like a password and ensure only trusted people have access to it. 61 | ::: 62 | 63 | To derive a recovery key: 64 | 65 | 1. Navigate to the `Password` tab under `Vault Options`. 66 | 2. Click on `Display Recovery Key`. 67 | 3. Enter the vault's password. 68 | 69 | A new window will open displaying a sequence of words (i.e., the recovery key). 70 | 71 | This shows your recoverykey 72 | 73 | You can copy it to your clipboard and store it in a secure password manager, or print it on paper. 74 | 75 | ## Reset Password {#reset-password} 76 | 77 | We cannot reset the password of a vault for you in any way. Only you can reset a vault's password, assuming you have its recovery key. Keep it ready before you proceed. 78 | 79 | 1. Navigate to the `Password` tab under `Vault Options`. 80 | 2. Click on `Recover Password`. 81 | 82 | Type or paste your recovery key in the new window. 83 | 84 | :::note 85 | Cryptomator offers an auto completion feature to make things easier when typing a recovery key. It's helpful if your recovery key is printed on paper or stored it somewhere where you cannot copy it. The feature will kick in automatically once you start typing the first few letters of a word. 86 | ::: 87 | 88 | Autocompletion during recovery key entry 89 | 90 | If the recovery key is valid, a small message will be displayed below the entered recovery key and the `Next` button will be activated. 91 | 92 | A valid recovery key has been entered 93 | 94 | :::info 95 | By design, *only* the correct recovery key is accepted. **A valid but incorrect key won't be accepted to prevent your old data from becoming inaccessible.** 96 | ::: 97 | 98 | Finally, assign a new password to your vault. 99 | It is the same process as the [vault creation](adding-vaults.md#choose-a-password), except that no new recovery key is generated. 100 | Again, please choose a [strong password](/docs/security/best-practices.md#good-passwords). 101 | 102 | Once changed, you can unlock your vault with the new password. 103 | 104 | :::note 105 | Don't discard the recovery key after resetting the password as it will still remain valid. 106 | ::: 107 | -------------------------------------------------------------------------------- /docs/desktop/setup.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: setup 3 | title: Setup 4 | sidebar_position: 1 5 | --- 6 | 7 | # Setup 8 | 9 | The Desktop version of Cryptomator is currently available for Windows, macOS, and Linux. 10 | Download and installation process varies depending on your operating system. Follow the instructions for your operating system. 11 | Ensure that your computer's specifications meet the system requirements required to run Cryptomator smoothly. 12 | 13 | :::note 14 | We maintain archives of all Cryptomator versions along with detailed changelogs on our [GitHub releases page](https://github.com/cryptomator/cryptomator/releases). 15 | ::: 16 | 17 | ## Install Cryptomator on Windows {#install-cryptomator-on-windows} 18 | 19 | 1. Download Cryptomator's `.exe` installer for Windows from our [downloads page](https://cryptomator.org/downloads/#win). 20 | 2. Launch the `.exe` installer. 21 | 3. Follow the on-screen instructions. 22 | 23 | ## Install Cryptomator on macOS {#install-cryptomator-on-macos} 24 | 25 | 1. Download Cryptomator's `.dmg` installer for macOS from our [downloads page](https://cryptomator.org/downloads/#mac). 26 | 2. Launch the `.dmg` installer. 27 | 3. Accept the license. 28 | 4. Drag & drop Cryptomator into the Applications folder. 29 | 30 | On macOS, Cryptomator will use WebDAV volume type by default if no FUSE driver is installed on the system. But we recommend installing *macFUSE* or *FUSE-T* for a smoother file browsing experience. 31 | Install *macFUSE* if your Mac comes with an Intel CPU or install *FUSE-T* if your Mac comes with an Apple Silicon CPU. 32 | 33 | :::note 34 | Change your [Gatekeeper settings](https://support.apple.com/HT202491) if macOS blocks Cryptomator's installation. 35 | ::: 36 | 37 | ## Install Cryptomator on Linux {#install-cryptomator-on-linux} 38 | 39 | Cryptomator is available on Linux via `Flatpak`, `PPA` and `AUR` package managers, and as an AppImage (an `.appimage` file). 40 | 41 | The easiest and recommended way of installing Cryptomator on Linux is by downloading Cryptomator's AppImage (an `.appimage` file) - as it works on almost all distributions. 42 | Just remember to [make it executable](https://docs.appimage.org/user-guide/run-appimages.html#running-appimages) before you try to run it. 43 | 44 | Visit our [downloads page](https://cryptomator.org/downloads/#linux) to choose your preferred installation method. 45 | -------------------------------------------------------------------------------- /docs/desktop/sync-conflicts.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: sync-conflicts 3 | title: Synchronization Conflicts 4 | sidebar_position: 11 5 | --- 6 | 7 | # Synchronization Conflicts 8 | 9 | Working on encrypted data from multiple locations is the same as working on unencrypted data from multiple locations. 10 | If there is a synchronization conflict, it is handled similarly to how most cloud storage services deal with conflicts. 11 | 12 | When a sync conflict occurs, cloud storage services typically resolve the conflict by leaving the local file as it is and create an additional, conflicting file with the content from the cloud. 13 | The file name is the same as the original one, suffixed with a short string (e.g., `(Created by Alice)`) to indicate it's a different version. 14 | 15 | Cryptomator handles encrypted files in the same way. 16 | It detects sync conflicts and appends the suffix from your cloud provider to the decrypted filename. 17 | If the filename with the conflict suffix is too long, Cryptomator shortens the overall filename. 18 | If the (decrypted) filename with the conflict suffix already exists, the conflicted file has a simple `(X)` suffix, where X is an integer. 19 | 20 | 21 | | Situation | Cloud Provider Suffix | Original Decrypted Name | New Decrypted Name | 22 | |---------------------------------------------|----------------------------------|-----------------------------------------------|----------------------------------------------------------------| 23 | | Regular | (Created by Alice) | businessPitch.odp | businessPitch (Created by Alice).odp | 24 | | Preferred name already taken | (Created by Alice) | businessPitch.odp | businessPitch (1).odp | 25 | | Maximum cleartext of the vault is set to 62 | (Created by Alice on 2024-01-31) | businessPitchForTheGreatIdeaIHadLastNight.odp | businessPitchForTheGreatIdeaI (Created by Alice on 2024-01.odp | 26 | 27 | 28 | :::tip 29 | Sync conflicts can happen in cloud storages for several reasons. 30 | In such cases, it is up to you to decide what to do with the conflicted files. 31 | It is recommended to manually check both files and determine which one to keep. 32 | If you conclude that both files are identical, you can delete one copy. 33 | The organization of your files is entirely in your hands. 34 | ::: 35 | 36 | ## Handling Sync Conflicts {#handling-sync-conflicts} 37 | 38 | 1. When a sync conflict is detected, Cryptomator will display the conflicted file with a suffix, as shown in the table above. 39 | 2. Manually review both the original and conflicted files. 40 | 3. Decide which file to keep based on your review. 41 | 4. If both files are identical, you can delete one of the copies to resolve the conflict. 42 | 43 | By following these steps, you can effectively manage synchronization conflicts and ensure that your data remains consistent across multiple locations. 44 | 45 | ## Example {#example} 46 | 47 | Suppose you have a file named `projectPlan.doc` in your vault. 48 | In the encrypted vault, this file might be represented with an encrypted name such as `5TyvCyF255sRtfrIv...83ucADQ==.c9r`. 49 | 50 | If a synchronization conflict occurs, it will happen on the encrypted filename. 51 | Cryptomator detects unexpected patterns in the encrypted filename and handles the conflict accordingly. 52 | 53 | For example, if there is a conflict with `5TyvCyF255sRtfrIv...83ucADQ== (Created by Alice).c9r`, Cryptomator will decrypt the encrypted part of the filename and rename the file to include a conflict suffix. 54 | The conflicted file might be renamed to something like `FHTa55bH...sUfVDbEb0gTL9hZ8nho.c9r`, which corresponds to `projectPlan (Created by Alice).doc`. 55 | -------------------------------------------------------------------------------- /docs/desktop/vault-events.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: vault-events 3 | title: Events and Event View 4 | sidebar_position: 9 5 | --- 6 | 7 | # Events and Event View 8 | 9 | Vault events give information about the vault's status and certain activities. 10 | There are several types of events, including conflict detection or corrupted files. 11 | All vault events are logged in the event view, which can be opened from the main window. 12 | 13 | :::info 14 | Vault events are not persisted on the hard disk. 15 | They are only stored in memory and are lost when the application is closed. 16 | ::: 17 | 18 | ## Event View {#event-view} 19 | 20 | The event view shows the events of all vaults. 21 | To open the event view, click on the Bell icon in the lower left corner of the main window. 22 | If new, unread events are present, the icon has a small red dot. 23 | 24 | Event view 25 | 26 | The event view has an action bar at the top followed by the actual event list. 27 | Events are displayed from newest (top) to oldest (bottom). 28 | You can filter the events by the vault they belong to. 29 | Also, you can clear the event log by clicking on the trash can icon. 30 | 31 | ## Vault Event {#vault-event} 32 | 33 | A vault event consists of a title, its number of appearances in brackets, an affected file, and a timestamp. 34 | If you hover over the event, a button to open a context menu appears. 35 | The context menu contains event-specific actions, mostly to reveal affected files in the file manager. 36 | 37 | If the vault of the event is locked, the event is anonymized. 38 | To view the event details, you need to unlock the corresponding vault first. 39 | -------------------------------------------------------------------------------- /docs/desktop/vault-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: vault-management 3 | title: Vault Management 4 | sidebar_position: 6 5 | --- 6 | 7 | # Vault Management 8 | 9 | A *vault* is where your files are stored encrypted. 10 | For your operating system or other apps, a vault is a just a normal directory containing some encrypted files. 11 | Only Cryptomator can decrypt the vault's contents when you unlock it using a password. 12 | 13 | ## Remove Vaults {#remove-vaults} 14 | 15 | To remove a vault from the vault list, right click on a vault, and click remove. 16 | This is only possible if the vault is locked. 17 | 18 | :::note 19 | The vault is **not** deleted from your PC by removing it from the list. If you wish to permanently delete your encrypted files, you need to delete the vault directory using the file manager. 20 | ::: 21 | 22 | ## Reorder Vaults {#reorder-vaults} 23 | 24 | You can change the order of the vaults in the list by dragging them. 25 | 26 | How to reorder vaults 27 | 28 | ## Vault Options {#vault-options} 29 | 30 | Each vault has its own settings which can be customized under vault options. 31 | To open a vault's settings, select a vault, lock it, and click on `Vault Options`. 32 | 33 | The options are divided across three categories: 34 | 35 | 1. General - Options not fitting in other categories. 36 | 37 | You can select this option if the vault is unlocked as soon as Cryptomator starts. 38 | 39 | General vault options 40 | 41 | - `Vault Name` - The name of the vault. *You can edit this field to rename the vault.* 42 | - `Lock when idle for minutes` - The vault will be locked automatically after the specified time of inactivity. 43 | - `Unlock vault when starting Cryptomator` - On app start, Cryptomator will unlock the vault (otherwise the vault will remain locked). 44 | - `After successful unlock` 45 | - `Do nothing` - Cryptomator will do nothing after unlocking the vault. 46 | - `Reveal Drive` - Opens the mount location using the default file manager (Windows Explorer, Finder, …). 47 | - `Ask` - Cryptomator will ask you what to do after unlocking the vault. 48 | 49 | 2. Mounting - Settings that manage how and where a vault is mounted. 50 | 51 | :::note 52 | The mount options depend on the selected [volume type](volume-type.md). 53 | ::: 54 | 55 | Vault options for mounting 56 | 57 | 3. Password - Here you can manage the vault's password and recovery key. 58 | 59 | Vault options regarding the password 60 | 61 | Take a look at the [Volume Type](volume-type.md) and [Password And Recovery Key](password-and-recovery-key.md) sections to understand how vault mounting and passwords work. 62 | -------------------------------------------------------------------------------- /docs/hub/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Hub", 3 | "position": 4, 4 | "link": { 5 | "type": "doc", 6 | "id": "hub/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/hub/access-vault.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: access-vault 3 | title: Working with Vaults 4 | sidebar_position: 6 5 | --- 6 | 7 | # Working with Vaults 8 | 9 | To encrypt your data securely with Cryptomator Hub vaults, you need the Cryptomator app for your OS. 10 | Cryptomator runs on Windows, macOS, Linux, Android and iOS. 11 | You can download the version for your OS from [cryptomator.org](https://cryptomator.org/downloads/). 12 | 13 | This section describes exemplarily how to unlock a vault in the Desktop app. 14 | Android and iOS work analogously. 15 | 16 | As described in [open an existing vault](/docs/desktop/adding-vaults.md#open-an-existing-vault), you should have already added the vault to the vault list, e.g., by selecting the `vault.cryptomator` file. 17 | 18 | ## Unlocking a Vault {#unlocking-a-vault} 19 | 20 | ### 1. Click Unlock {#click-unlock} 21 | 22 | To unlock the vault, click on the large `Unlock` button in the center of Cryptomator's main window. 23 | 24 | Click 'Unlock' to unlock a Hub vault with the Desktop app 25 | 26 | ### 2. Authenticate {#authenticate} 27 | 28 | Cryptomator should open your default browser for authentication. If you're not already logged in, you need to provide your user credentials, e.g., by entering your username and password or by inserting your key when WebAuthn is enabled. 29 | 30 | After your browser asks for credentials, enter your username and password 31 | 32 | ### 3. Account Setup {#account-setup} 33 | 34 | If this is the first time you log into Hub, Cryptomator and Cryptomator Hub requests you to [set up your account](your-account.md#account-setup). 35 | 36 | Desktop 37 | 38 | Cryptomator requests to setup your user account 39 | 40 | Hub 41 | 42 | Hub requests to setup your user account 43 | 44 | When you finished the account setup in Hub, unlock the vault again. 45 | 46 | ### 4. Register Device {#register-device} 47 | 48 | If you just did setup your account, a vault owner needs to grant you access for the requested vault as described [here](vault-management.md#update-permissions). Retry unlocking the vault after the vault owner granted you access. 49 | 50 | Access is denied since it has not been granted by a vault owner yet 51 | 52 | If you connect to Hub with this device for the first time, you need to register it. 53 | 54 | Desktop 55 | 56 | Register your device by entering the setup code and a name for it 57 | 58 | Hub 59 | 60 | Hub requests device registration 61 | 62 | Enter a name for the device to identify it later on and the [Account Key](your-account.md#account-key) which was generated during the account setup. You can also find it in the [account settings](your-account.md#profile-page). 63 | 64 | After that, you will see a confirmation dialog, unlock the vault again. 65 | 66 | ### 5. Vault Unlocked {#vault-unlocked} 67 | 68 | You are all set up and an unlock should be successful from now on. You can then reveal the vault's contents as usual. 69 | 70 | Desktop 71 | 72 | Desktop shows unlock successful 73 | 74 | Hub 75 | 76 | Hub shows unlock successful 77 | -------------------------------------------------------------------------------- /docs/hub/admin.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: admin 3 | title: Admin 4 | sidebar_position: 8 5 | --- 6 | 7 | # Admin 8 | 9 | ## License {#license} 10 | 11 | Every Cryptomator Hub instance requires a license. 12 | The license is bound to the instance and cannot be transferred to another instance. 13 | Every license has a number of seats and a validity period. 14 | As an Hub administrator, you can view license information in the administration area. 15 | 16 | Administration area 17 | 18 | ### What Is a Seat? {#what-is-a-seat} 19 | 20 | A regular license contains a fixed number of *seats*. 21 | A *seat* is taken for every user, which is assigned to at least one, not-archived vault. 22 | Note that: 23 | 24 | * If a user is not assigned to any vault, it *does not occupy* a seat. 25 | * If a user is assigned to multiple vaults, it only *occupies one* seat. 26 | * If [a user is created or imported to Hub](user-group-management.md), it does not occupy a seat. 27 | 28 | :::note 29 | Enterprise licenses can have an unlimited number of seats. Visit [cryptomator.org](https://cryptomator.org/for-teams/) for more information. 30 | ::: 31 | 32 | ### Community License {#community-license} 33 | 34 | When you deploy Cryptomator Hub by yourself, it comes with a community license with life-long validity and 5 seats. 35 | 36 | ### Updating Your License {#updating-your-license} 37 | 38 | If the community license is not sufficient for your needs, you can upgrade it to a paid license. 39 | You can also upgrade an already existing, paid license. 40 | To do so, click on the button in the lower right corner of the administration area. 41 | It will redirect you to the Cryptomator Hub license store. 42 | After the purchase, you will be automatically redirected back to your Hub instance. 43 | 44 | ## Audit Logs {#audit-logs} 45 | 46 | The Audit Logs provide an overview of security-related events within Cryptomator Hub. 47 | These logs allow administrators to track important account and vault-related actions. 48 | 49 | :::note 50 | Audit Logs are not available with a Community License. 51 | ::: 52 | 53 | ### Event Types {#event-types} 54 | 55 | The following events are logged: 56 | 57 | #### Device {#event-type-device} 58 | 59 | - **Register Device** - A user [registered a new device](access-vault.md#register-device). This can be, e.g., a Cryptomator app (desktop/mobile) to unlock a vault or a web browser to access Cryptomator Hub. 60 | - **Remove Device** – A user [removed a device](your-account.md#authorized-devices). 61 | 62 | #### Web of Trust {#event-type-web-of-trust} 63 | 64 | - **Signed Identity** – A user [signed the identity of another user](vault-management.md#web-of-trust). 65 | - **Update Wot Setting** – A user updated [Web-of-Trust settings](vault-management.md#web-of-trust), e.g., the `wot_max_depth`. 66 | 67 | #### Vault {#event-type-vault} 68 | 69 | - **Add Vault Member** – A vault owner [added a member to a vault](vault-management.md#share-a-vault). This only adds the member but does not derive the vault key for the new member. 70 | - **Create Vault** – A user [created a vault](vault-management.md#create-a-vault). 71 | - **Grant Vault Access** – A user [derived the vault key for the new member](vault-management.md#update-permissions). 72 | - **Retrieve Vault Key** – A user retrieved a vault key. This happens when a user [unlocks a vault](access-vault.md#unlocking-a-vault) but also, e.g., when an owner manages the vault. The IP address and device information are optional for legacy reasons. 73 | - **Remove Vault Member** – A vault owner removed a member from a vault. 74 | - **Update Vault Member** – A vault owner [changed a member's role](vault-management.md#change-ownership) (owner or user). 75 | - **Update Vault** – A vault owner [updated the vault metadata](vault-management.md#edit-vault-metadata). This includes the vault name or description. 76 | 77 | #### Account {#event-type-account} 78 | 79 | - **Account Key Changed** – A user [re-generated the account key](your-account.md#regenerate-account-key). This also logs `User Keys Change` because changing the account key also changes parts of the user keys. 80 | - **Reset User Account** – A user [reset their account](your-account.md#reset-account). 81 | - **User Keys Change** – A user changed their keys. This happens when, e.g., the user [finished the account setup](your-account.md#account-setup) or when the `Account Key Changed`. 82 | 83 | #### Legacy {#event-type-legacy} 84 | 85 | - **Claim Vault Ownership** – A user claimed vault ownership. This event is logged when a vault created with hub pre 1.3.0 is claimed by the vault creator using the `Vault Admin Password`. 86 | 87 | ### Audit Log Table View {#audit-log-table-view} 88 | 89 | The logs are displayed in a structured table containing the following columns: 90 | 91 | - **Timestamp** – The exact time of the event. 92 | - **Event** – The type of event that occurred. 93 | - **Details** – Additional information about the event. 94 | 95 | Audit Logs Table View 96 | 97 | ### Filtering Audit Logs {#filtering-audit-logs} 98 | 99 | To refine the displayed logs, a filtering function is available: 100 | 101 | Audit Log Filtering Options 102 | 103 | - **Date Range Filter**: Allows filtering logs between two specific dates. 104 | - **Event Type Filter**: A multi-select dropdown enables filtering by event type. 105 | 106 | Audit Log Filtering Options 107 | 108 | ## Web of Trust {#web-of-trust} 109 | 110 | The Web of Trust (WoT) feature in Cryptomator Hub helps users verify each other's identity by signing the [User Key Pair](/docs/security/hub.md#user-key-pair) with their private keys using ECDSA. 111 | First, the trusting user needs to verify the trustee by entering the first characters of the trustee's public key fingerprint. Once signed, the proof is uploaded to Hub, where others can check its authenticity. 112 | 113 | WoT also supports transitive trust, meaning if Alice trusts Bob, and Bob trusts Charlie, then Alice implicitly trusts Charlie. This forms a trust chain, allowing users to establish indirect trust relationships. 114 | 115 | Web of Trust Administration 116 | 117 | **In the administration area, administrators can configure the following trust settings:** 118 | 119 | The maximum depth of such chains can be configured using the **Maximum WoT Depth** property: 120 | 121 | * The default value is 3 ("Great-Grandchild") 122 | * The maximum value is 9 123 | * The minimum value, 0, means no trust chain is allowed, only direct trust relationships are considered. 124 | 125 | With the **Fingerprint Verification Preciseness** property, the minimum length of the entered public key fingerprint can be configured: 126 | 127 | * The default value is 2 128 | * The minimum value, 0, means the fingerprint of the trustee is fully shown without any input needed. 129 | 130 | :::note 131 | If a user resets their account, their [User Key Pair](/docs/security/hub.md#user-key-pair) is regenerated, invalidating all previously established trust relationships regarding this user. 132 | Additionally, any existing trust chains that included the user will be broken, requiring re-verification to restore trust. 133 | ::: 134 | -------------------------------------------------------------------------------- /docs/hub/deployment.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: deployment 3 | title: Deployment 4 | sidebar_position: 2 5 | --- 6 | 7 | # Deployment 8 | 9 | Cryptomator Hub can be deployed to a Kubernetes cluster or a Docker host. The following sections describe the deployment process in detail. 10 | 11 | :::note 12 | Cryptomator Hub is also offered as a hosted solution, including 99.5%-uptime guarantee and regular backups! Visit [cryptomator.org](https://cryptomator.org/for-teams/) for more information. 13 | ::: 14 | 15 | ## Summary {#summary} 16 | 17 | 1. Decide, on which web addresses you want to deploy Hub and Keycloak 18 | 1. Set up DNS and TLS termination 19 | 1. Use the [Setup Wizard](https://cryptomator.org/hub/self-hosted/) to generate a deployment descriptor template 20 | 1. Customize the template if needed (e.g., adjust the Ingress settings) and deploy the software stack to your cluster 21 | 22 | Afterwards you're done. 23 | You can now login to Cryptomator Hub and start [creating vaults](vault-management.md) or [add users](user-group-management.md). 24 | 25 | ## Hardware Requirements {#hardware-requirements} 26 | 27 | Currently, we are evaluating the system requirements for Cryptomator Hub. If you can provide data, please send us an email to hub@cryptomator.org. 28 | 29 | ## Setup Wizard {#setup-wizard} 30 | 31 | To get started, use the [Setup Wizard](https://cryptomator.org/hub/self-hosted/) to generate the necessary configuration files. 32 | 33 | Cryptomator Hub depends on [Keycloak](https://www.keycloak.org/), an open-source identity and access management solution. 34 | In the Setup Wizard, you will have the option to choose between deploying Keycloak alongside Hub or specifying an URL to an existing Keycloak installation. 35 | 36 | ## Reverse Proxy {#reverse-proxy} 37 | 38 | Cryptomator Hub must be used behind a reverse proxy such as Traefik or Nginx. In the [Setup Wizard](https://cryptomator.org/hub/self-hosted/) you can already add rules for some reverse proxies like Traefik. As mentioned there, you will still need a running Traefik deployment. 39 | 40 | If you don't have a running Traefik deployment and want to use Docker Compose to run Hub, you can use the following as starting point: 41 | 42 | ```yaml 43 | networks: 44 | srv: 45 | name: srv 46 | 47 | services: 48 | traefik: 49 | image: traefik:v3.0 50 | command: 51 | # Provider 52 | - '--providers.docker' 53 | - '--providers.docker.exposedbydefault=false' 54 | - '--providers.docker.network=srv' 55 | # Entrypoints 56 | - '--entrypoints.web.address=:80' 57 | - '--entrypoints.web.http.redirections.entrypoint.to=websecure' 58 | - '--entrypoints.websecure.address=:443' 59 | # Let's Encrypt 60 | - '--certificatesresolvers.myresolver.acme.email=TODO' # TODO change 61 | - '--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web' 62 | - '--certificatesresolvers.myresolver.acme.httpchallenge=true' 63 | - '--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json' 64 | # Uncomment to use staging for testing 65 | # - '--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory' 66 | - '--entrypoints.websecure.http.tls.certresolver=myresolver' 67 | # HTTP/3 68 | - '--entrypoints.websecure.http3' 69 | # Logs 70 | - '--accesslog.filepath=/logs/access.log' 71 | - '--accesslog.format=json' 72 | - '--log.filepath=/logs/traefik.log' 73 | - '--log.format=json' 74 | - '--log.level=ERROR' 75 | # Misc 76 | - '--api.dashboard=false' 77 | - '--global.checknewversion=false' 78 | - '--global.sendanonymoususage=false' 79 | - '--ping' 80 | ports: 81 | - '80:80' 82 | - '443:443' 83 | networks: 84 | - 'srv' 85 | restart: always 86 | healthcheck: 87 | test: ['CMD', 'traefik', 'healthcheck', '--ping'] 88 | interval: 10s 89 | timeout: 10s 90 | retries: 5 91 | volumes: 92 | - '/var/run/docker.sock:/var/run/docker.sock' 93 | - './logs:/logs' 94 | - './letsencrypt:/letsencrypt' 95 | labels: 96 | - 'traefik.enable=false' 97 | ``` 98 | 99 | Some remarks 100 | 101 | 1. There are a lot of other features of Traefik like Promeheus metrics generation, API frontend, … but we wanted to keep the deployment as simple as possible 102 | 1. This deployment uses Let's encrypt in HTTP challenge mode to create and update a TLS certificate for Hub/Keycloak. There are other methods available such as DNS or TCP challenge, see https://doc.traefik.io/traefik/https/overview/ for more information 103 | 1. Make sure you add `logs/access.log` to your log rotation, otherwise this file can grow very quickly 104 | 105 | Before running this deployment 106 | 107 | 1. You must set a valid email address in `TODO` 108 | 1. You must have ports 80 and 443 open on the host machine 109 | 1. You need to create for Hub and optionally Keycloak DNS entries (`CNAME`, or `A` record) for the domain entered in the Setup Wizard of Hub 110 | 1. Create a Hub deployment using the [Setup Wizard](https://cryptomator.org/hub/self-hosted/) with `include Traeffik` selected and merge the content with this file: 111 | 1. Copy the `hub-internal: {}` section of the Setup Wizard to this `networks` 112 | 1. Copy all services of the Setup Wizard under the `services` section to this `services` 113 | 1. Copy the `volumes` from the Setup Wizard to this file 114 | 115 | Troubleshooting: If you encounter problems, check the log files in `logs/traffik.log` and `logs/access.log`. Make sure you entered `srv` as `Public Network` in the Setup Wizard of Hub. 116 | 117 | ## Backup {#backup} 118 | 119 | Cryptomator Hub and Keycloak both write to the connected Postgres database. So the best and easiest way is to backup it cyclically using e.g. a Cron Job. Depending on your deployment, here is a sample command that you can run on the host system to backup the entire databases to a file using the Postgres container, which you than could import in a similar way: 120 | 121 | ```bash 122 | Docker: 123 | docker exec -u postgres -it postgres /bin/bash -c /usr/local/bin/pg_dumpall \ 124 | > "$(date +%F)-hub-backup" 125 | 126 | Kubernetes: 127 | kubectl exec -it deployments/postgres -n NAMESPACE \ 128 | -- /usr/local/bin/pg_dumpall -U postgres > "$(date +%F)-hub-backup" 129 | ``` 130 | 131 | See https://www.postgresql.org/docs/current/app-pg-dumpall.html for more information on the `pg_dumpall` command. 132 | The command will create a file on the host with a name like "2023-02-06-hub-backup". 133 | 134 | Besides `pg_dumpall` Postgres offers with `psql -f PATH_TO_FILE` a command to restore the database from this file and a new system is completely at the state of this file. 135 | 136 | If you also back up the deployment script, you can restore the entire solution to production in minutes. 137 | 138 | :::note 139 | Make sure this backup is moved to another secure location. 140 | ::: 141 | -------------------------------------------------------------------------------- /docs/hub/index.md: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | 3 | # Hub Documentation 4 | 5 | Team and organization solutions with Cryptomator Hub. Manage user access, deploy for your organization, and handle vault recovery with zero-knowledge encryption and seamless identity management integration. 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/hub/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: introduction 3 | title: Cryptomator Hub 4 | sidebar_position: 1 5 | --- 6 | 7 | Cryptomator Hub connects team members 8 | 9 | # Cryptomator Hub 10 | 11 | Cryptomator Hub adds *zero-knowledge key management* for teams and organizations to Cryptomator. 12 | It easily integrates into your existing identity management incl. OpenID Connect, SAML, and LDAP. 13 | As usual, your favorite cloud service remains your free choice. 14 | 15 | This documentation covers various topics, depending on your role. 16 | If you are… 17 | 18 | …an **administrator**: 19 | 20 | * [User & Group management](user-group-management.md) - how to manage users and groups. 21 | * [License](admin.md#license) - how to manage your Hub license. 22 | * [Deployment](deployment.md) - how to deploy Cryptomator Hub. 23 | 24 | …a **user**: 25 | 26 | * [Your Account](your-account.md) - how to manage your own account. 27 | * [Managing Vaults](vault-management.md) - how to manage vaults. 28 | * [Working with Vaults](access-vault.md) - how to use Hub vaults with Cryptomator apps to encrypt your data. 29 | -------------------------------------------------------------------------------- /docs/hub/user-group-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: user-group-management 3 | title: User & Group Management 4 | sidebar_position: 3 5 | --- 6 | 7 | # User & Group Management 8 | 9 | Users and groups are managed in [Keycloak](https://www.keycloak.org/), a powerful, open source identity and access management solution. 10 | In the default configuration Cryptomator Hub provides its own Keycloak instance, but you can also integrate an existing instance. 11 | 12 | You can access the Keycloak management interface over the admin section of Hub. 13 | 14 | Accessing Keycloak via Hub 15 | 16 | There you can perform all users or groups related tasks, such as 17 | [creating new users](https://www.keycloak.org/docs/latest/server_admin/index.html#proc-creating-user_server_administration_guide), 18 | [deleting users](https://www.keycloak.org/docs/latest/server_admin/index.html#proc-deleting-user_server_administration_guide) or 19 | [manage groups](https://www.keycloak.org/docs/latest/server_admin/index.html#proc-managing-groups_server_administration_guide). 20 | 21 | :::note 22 | Subgroups are not supported at this time. 23 | ::: 24 | 25 | ## Connect External IAM {#connect-external-iam} 26 | 27 | Alternatively to the in-house administration, you can also connect Keycloak to other identity and access management solutions (IAM) to keep your user management centralized. 28 | You can either only synchronize existing users and groups from your IAM (using LDAP or Active Directory) or completely delegate the authentication process to your IAM via OpenID Connect or SAML. 29 | 30 | Setting up LDAP synchronization is described in the [Keycloak documentation](https://www.keycloak.org/docs/latest/server_admin/#_ldap). 31 | For OpenID Connect and SAML, the Keycloak documentation provides [general information](https://www.keycloak.org/docs/latest/server_admin/#_identity_broker). 32 | A good step-by-step guide for connecting Microsoft Entra with OpenID Connect can be found [here](https://dev.to/andremoriya/keycloak-azure-active-directory-4cg4). 33 | 34 | :::note 35 | With `LDAP`, all users and groups are imported and synchronized with Keycloak, so they are available immediately after setup. 36 | With `OpenID Connect` or `SAML`, users are unknown to Keycloak and Hub *until they log in for the first time*. 37 | ::: 38 | 39 | :::warning 40 | Regardless of your choice, your Keycloak instance always contains two local users: `admin` and `syncer`. **Do not edit or delete them!** The first one is for administration tasks and the second one is used to synchronize users and groups between Keycloak and Hub. 41 | ::: 42 | 43 | ## Roles {#roles} 44 | 45 | There are four different roles in Cryptomator Hub: 46 | 47 | * **user**: A user can open vaults and manage their own account. 48 | * **admin**: An admin manages the Keycloak realm, can see the audit log, and can create vaults. 49 | * **create-vault**: Only users with this role can create vaults. The role is inherited by the `admin` role. 50 | 51 | The `user`, `admin`, and `create-vault` roles are assigned to users or groups via the Keycloak admin console by an existing user with the `admin` role. 52 | 53 | ### Create Vault Role {#create-vault-role} 54 | 55 | By default, this role is only assigned to the `admin` role. This means that only users with the `admin` role can create vaults. If you want to allow other users to create vaults, you can assign the `create-vault` role to them directly or via a group. 56 | 57 | If you want that all users can create vaults, assigning the `create-vault` role as transient role to the `user` role. This way, every user will have the `create-vault` role as well. 58 | 59 | To allow all users vault creation, assign `create-vault` as a transient role to the `user` role: 60 | 61 | 1. Open the Keycloak admin console. 62 | 2. Select `Realm roles`. 63 | 3. Select the `user` role. 64 | 4. Select `Assign role`. 65 | 5. Select the `create-vault` role. 66 | 6. Apply with `Assign`. 67 | -------------------------------------------------------------------------------- /docs/hub/vault-recovery.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: vault-recovery 3 | title: Vault Recovery 4 | sidebar_position: 7 5 | --- 6 | 7 | # Vault Recovery 8 | 9 | This section contains instructions for recovering Cryptomator Hub vaults using the vault recovery key. 10 | 11 | Cryptomator Hub vaults can be recovered in two different ways: 12 | 13 | 1. [Online Recovery](#online-recovery) - Reestablishes Hub controlled access management for a vault in case the vault admin password got lost 14 | 2. [Offline Recovery](#offline-recovery) - Restores vault data access of a hub managed vault in case of a disaster (e.g. Cryptomator Hub is down and immediate data access is needed) 15 | 16 | ## Online Recovery {#online-recovery} 17 | 18 | This recovery method should be used, if the vault admin password got lost. 19 | In the process, a new Hub vault with the same key material as the "to-be-recovered" vault is created. 20 | The membership information of the old vault cannot be migrated, hence all users/groups need to be added manually afterwards. 21 | 22 | Requirements: 23 | 24 | * Access to Cryptomator Hub 25 | * Write access to the storage location of the vault 26 | * Access to the recovery key of the vault 27 | 28 | In Cryptomator Hub navigate to the vault list, click `Add` and `Recover Existing` 29 | 30 | Vault list add drop down 31 | 32 | Enter the recovery key for the vault you want to restore. If you enter a recovery key from a different vault, the recovery will not work. 33 | 34 | Proceed with `Restore Vault`. 35 | 36 | Vault enter recovery key 37 | 38 | Enter a new vault name, description and vault admin password. The new vault admin password is required to grant or revoke access to the vault. 39 | 40 | Creating a vault using recovery key 41 | 42 | If successful, a new vault has been created. Proceed as follows: 43 | 44 | 1. Click on `Download zipped vault folder` of the new created vault 45 | 2. Unzip the downloaded folder 46 | 3. Copy the file `vault.cryptomator` of the unzipped folder 47 | 4. Browse locally on the device, directly in the cloud or network storage to the location of the vault folder. In that folder, replace the existing `vault.cryptomator` file with the one you just copied. 48 | 49 | Afterwards, you can manage vault data access over the newly created vault in Hub. 50 | You will need to regrant permission to the vault members, and then the vault can be unlocked by the team. 51 | 52 | ## Offline Recovery {#offline-recovery} 53 | 54 | This recovery method should only be used in an emergency, i.e. immediate data access is needed but Cryptomator Hub not reachable. 55 | In the process, the authentication needed to unlock the vault is changed from Hub- to password-based by creating/changing vault configuration files. 56 | If these changes are synchronized to the online storage, everyone with the chosen password can unlock and access the vault data without requiring a connection to Cryptomator Hub. 57 | If you don't want that, ensure that the vault is stored at an offline location without any kind of synchronization. 58 | 59 | :::note 60 | This process is reversible. See the [end of this section](#reversing-offline-conversion). 61 | ::: 62 | 63 | Requirements: 64 | 65 | * Access to the Cryptomator desktop application 66 | * Write access to the storage location of the vault 67 | * Access to the recovery key of the vault 68 | 69 | Open the Cryptomator desktop app, right-click on the vault you want to restore in the vault list, click `Show vault options` in the opened context menu. 70 | In the opening window, select the `Recovery`, read the label description and click the `Convert to Password-Based Vault` button. 71 | 72 | Vault recovery convert to Password-Based-Vault 73 | 74 | Enter the recovery key for the vault you want to restore. If you enter a recovery key from a different vault, the recovery will not work. Proceed with `Next`. 75 | 76 | Convert vault enter recovery key 77 | 78 | In the next step choose a [good password](/docs/security/best-practices.md#good-passwords) used for unlocking the vault. 79 | Cryptomator requires at least 8 characters but we recommend you to use a longer phrases such as pass-sentences. 80 | The bar below the password field estimates the strength of your password. 81 | 82 | Convert vault enter new password 83 | 84 | If the conversion was successful, a success message is shown. 85 | You can close the dialog box. 86 | This vault is now converted to a password-based vault. 87 | 88 | Convert vault successful 89 | 90 | After the conversion, when unlocking the vault, you are prompted for a password and only the one chosen in the previous step leads to a successful unlock. 91 | 92 | Unlock converted Vault 93 | 94 | ## Reversing Offline Conversion {#reversing-offline-conversion} 95 | 96 | You can reverse the offline conversion. 97 | In order to do that, remove the following files: 98 | 99 | * all files named or starting with `masterkey.cryptomator` 100 | * `vault.cryptomator` 101 | * the *most recent* `vault.cryptomator.XXXXXXXX.bkup` 102 | 103 | Then restore the original config by renaming `vault.cryptomator.XXXXXXXX.bkup` to `vault.cryptomator`. 104 | You can then unlock the vault again using the Cryptomator Hub. 105 | -------------------------------------------------------------------------------- /docs/hub/your-account.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: your-account 3 | title: Your Account 4 | sidebar_position: 4 5 | --- 6 | 7 | # Your Account 8 | 9 | To open vaults secured by a Cryptomator Hub instance, you need an account on the regarding Hub instance. 10 | The account is used to authenticate your identity and to manage your trusted devices. 11 | 12 | If you don't have an account, contact your local administrator to create one for you. 13 | 14 | ## Account Key {#account-key} 15 | 16 | Every account has a private *Account Key*. 17 | The Account Key is used for authorizing browsers or apps which try to connect to Hub. 18 | It is not used for encrypting vault data. 19 | Keep your account key secret and only store it in a secure place (e.g. password manager). 20 | You can view your account key in your [profile](#profile-page) on trusted browsers. 21 | 22 | :::note 23 | If you lose your account key, you have two options: If you have access to an authorized browser, you can view it on the [profile page](#profile-page) or otherwise, you can [reset your account](#reset-account). 24 | ::: 25 | 26 | ## Account Setup {#account-setup} 27 | 28 | The very first time you log in to Cryptomator Hub, you're asked to set up your account. 29 | This is a one-time process that takes just a minute. 30 | 31 | Account setup on first login 32 | 33 | In the setup your [Account Key](#account-key) is generated and displayed. 34 | We recommend to copy your Account Key to a secure place (e.g. password manager), but you can always view it later in your profile from any trusted browser. 35 | 36 | The browser used for the setup is automatically trusted. 37 | You can revoke the trust at any time in your profile. 38 | 39 | After storing your account key securely, tick the checkbox and finish the setup. 40 | You are now logged in to Hub and can start using it. 41 | 42 | ## Profile Page {#profile-page} 43 | 44 | On the profile page, you can manage your account. 45 | It shows your account key and fingerprint, lists your trusted devices and more. 46 | 47 | You can open it by clicking on your profile icon in the top right corner and select *Your Profile*. 48 | 49 | Your account in Cryptomator Hub 50 | 51 | ### Change Language {#change-language} 52 | 53 | You can change the language of Cryptomator Hub to match your preference. 54 | The language selection is available in the profile settings. 55 | 56 | Is your preferred language not available yet? 57 | We are continuously working on adding more languages. 58 | If you're interested, you can contribute translations via Crowdin: 59 | [Cryptomator Hub on Crowdin](https://crowdin.com/project/cryptomator). 60 | 61 | ### Regenerate Account Key {#regenerate-account-key} 62 | 63 | If you suspect that your old Account Key has been compromised, you can regenerate it. 64 | You will then only be able to add new devices with the new Account Key. 65 | Your existing devices will remain trusted. 66 | 67 | ### Authorized Devices {#authorized-devices} 68 | 69 | A device is authorized if it has been authenticated with your Account Key. 70 | Only on authorized devices you can log in to Hub and open vaults. 71 | 72 | For each authorized device, you can view its name, type (e.g., browser), the date it was added, the last time it accessed a vault, and its IP address. 73 | If the last access values are not present this can have multiple reasons: 74 | 75 | 1. The device has not accessed any vaults yet 76 | 2. The device is not up to date and does not send the required information 77 | 78 | The device marked with `This Device` is the one you are currently using. This allows you to easily verify your active session and detect any unauthorized access. 79 | 80 | By managing your authorized devices, you ensure that only trusted ones remain active, giving you greater security and control over your account. 81 | 82 | If you don't trust a device anymore, you can remove it from the list of authorized devices. 83 | This will log out the device and revoke access to all shared vaults. 84 | 85 | ### Legacy Devices {#legacy-devices} 86 | 87 | This section lists devices that have been authorized with an older version of Cryptomator Hub. It is only visible if you have any legacy devices. 88 | Legacy devices where created before the introduction of the current user key system and will be removed from your account within one of the next major updates of Hub. 89 | 90 | Your legacy devices 91 | 92 | If you have any legacy device 93 | 94 | 1. check if you still use them, if so, update the client version on this device which migrates it to the new format 95 | 2. if you don't use them anymore, remove them to revoke access of this device to your accessible vaults 96 | 97 | ### User Key Fingerprint {#user-key-fingerprint} 98 | 99 | The fingerprint can be used to verify the identity of the user, for example when [updating the permissions](vault-management.md#update-permissions) of a vault. 100 | It will only change if you [reset your account](#reset-account). 101 | 102 | ## Reset Account {#reset-account} 103 | If you lose your account key and can't access any trusted browser, you can reset your account when logging in from a new device. 104 | All already authorized devices will be removed and access to shared vaults will be revoked. 105 | After the reset, you can log in to Hub from a new browser and set up your account again. 106 | 107 | Reset account on login 108 | -------------------------------------------------------------------------------- /docs/ios/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "iOS", 3 | "position": 3, 4 | "link": { 5 | "type": "doc", 6 | "id": "ios/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/ios/access-vault.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: access-vault 3 | title: Working with Vaults 4 | sidebar_position: 4 5 | --- 6 | 7 | # Working with Vaults 8 | 9 | Cryptomator for iOS is fully integrated into the Files app of iOS. In order to access your encrypted data, you have to use the Files app. 10 | 11 | ## Enable Cryptomator in Files App {#enable-cryptomator-in-files-app} 12 | 13 | In order for Cryptomator to be listed in the Files app under "Locations", you may have to enable Cryptomator first. Open the Files app and then: 14 | 15 | 1. Tap on the **Browse** tab in the lower right corner. 16 | 2. Tap on the **(…)** button in the upper right corner. 17 | 3. Tap on **Edit**. 18 | 4. Enable **Cryptomator**. 19 | 5. Tap on **Done** in the upper right corner. 20 | 21 | 22 | How to enable Cryptomator in Files app 23 | How to enable Cryptomator in Files app 24 | 25 | -------------------------------------------------------------------------------- /docs/ios/cloud-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: cloud-management 3 | title: Cloud Management 4 | sidebar_position: 2 5 | --- 6 | 7 | # Cloud Management 8 | 9 | ## Other File Provider {#other-file-provider} 10 | 11 | This option allows you to add a vault from any supported [file provider](https://developer.apple.com/documentation/fileprovider/). Default implementations by Apple are iCloud Drive and On My iPhone/iPad. Inside the Files app, you can also add custom connections to SMB-compatible servers. 12 | 13 | If you have a lot of apps installed that include a file provider, you may notice that most of them are grayed out. This is because third-party file providers usually don't support "picking folders". To our best of knowledge, this is unsupported by Apple. You can find a technical discussion [here](https://github.com/cryptomator/ios/issues/51). 14 | -------------------------------------------------------------------------------- /docs/ios/index.md: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | 3 | # iOS Documentation 4 | 5 | Documentation for Cryptomator on iPhone and iPad. Secure access to your encrypted files from your iOS device with seamless integration into the Files app and cloud providers. 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/ios/settings.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: settings 3 | title: Settings 4 | sidebar_position: 5 5 | --- 6 | 7 | # Settings 8 | 9 | You can configure Cryptomator to your needs. Access the settings by tapping the gear icon in the top left corner. 10 | 11 | ## Support {#support} 12 | 13 | If you have problems with the app, you can enable `Debug Mode`. After reproducing the problem, you should disable `Debug Mode` again and then `Send Log File`. 14 | -------------------------------------------------------------------------------- /docs/ios/setup.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: setup 3 | title: Setup 4 | sidebar_position: 1 5 | --- 6 | 7 | # Setup 8 | 9 | You can get Cryptomator for iOS on the [App Store](https://apps.apple.com/app/cryptomator/id1560822163). 10 | 11 | Cryptomator is available for free with in-app purchases. The free version gives you read-only access to your vaults. With the in-app purchase, you can unlock the full version to gain write access to your vaults. You can also try out the full version free for 30 days. 12 | 13 | ## Full Version {#full-version} 14 | 15 | A full version of Cryptomator without in-app purchases is available on the [App Store](https://apps.apple.com/app/cryptomator-full-version/id1665616242) as well. This version is unlisted and only available via the direct link. 16 | 17 | The "Full Version" is basically the same as Cryptomator with the in-app purchase "Full Version" unlocked. This app is available for interested parties using Apple School Manager or Apple Business Manager that are unable to buy in-app purchases. Or if you want to gift the app to your friends or family. 18 | 19 | ## Requirements {#requirements} 20 | 21 | Requires iOS 14.0 or later. Compatible with iPhone, iPad, and iPod touch. 22 | -------------------------------------------------------------------------------- /docs/ios/shortcuts-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: shortcuts-guide 3 | title: Shortcuts Guide 4 | sidebar_position: 6 5 | --- 6 | 7 | # Shortcuts Guide 8 | 9 | The Shortcuts integration of Cryptomator allows you to build different automations in the [Shortcuts app](https://support.apple.com/guide/shortcuts/welcome/ios). With that, you can automate recurring tasks quickly and easily. 10 | 11 | For a shortcut to run smoothly, the vault must be unlocked during the execution of the shortcut. For automations, you should set the unlock duration to "Indefinite" in the [settings of your vault](vault-management.md#unlock-duration). 12 | 13 | In addition, you should know that some Cryptomator shortcut actions build on each other. For example, the "Save File" action requires a folder inside a vault as an input, which can be obtained using the "Get Folder" action. 14 | 15 | ## Automatic Photo Upload {#automatic-photo-upload} 16 | 17 | With Cryptomator's integration in Shortcuts, you can build an action to automatically upload your photos to a Cryptomator vault. You can either follow these step-by-step instructions or use the following shortcut to get started: 18 | 19 | [https://www.icloud.com/shortcuts/90ae0e36dda44da3a39c9070ae097a92](https://www.icloud.com/shortcuts/90ae0e36dda44da3a39c9070ae097a92) 20 | 21 | **Step 1: Create new shortcut** 22 | 23 | * Open the Shortcuts app on your iOS device. 24 | * Tap on the "+" at the top right to create a new shortcut. 25 | 26 | If the Shortcuts app is not installed, download it from the [App Store](https://apps.apple.com/app/shortcuts/id915249334). 27 | 28 | **Step 2: Add "Find Photos" action** 29 | 30 | * Select the search field at the bottom to add an action. 31 | * Under the tab "Apps", select "Photos". 32 | * Select the action "Find Photos". 33 | 34 | You can customize this action to your needs by adding various filters or to limit the number of photos to be selected. 35 | 36 | **Step 3: Add "Get Folder" action** 37 | 38 | * Add the "Get Folder" action from Cryptomator. 39 | * Specify the vault and the path of the folder where your photos should be stored. 40 | 41 | Important: It will check if the folder exists in your vault. If it doesn't exist, the action will fail and no photos will be uploaded. 42 | 43 | **Step 4: Add "Save File" action** 44 | 45 | We're going to add the "Save File" action from Cryptomator. But since this action only saves a single file (or in this case, photo), we need to add wrap this action around a different action first. 46 | 47 | * Add the "Repeat with Each" action, which you can find under the "Categories" tab and then under "Scripting". 48 | * Add the "Save File" action from Cryptomator. 49 | * Make sure that the two variables are correctly set: The image you want to save and the folder from the "Get Folder" action in step 3. 50 | 51 | In order to set these variables, you may have to tap on the "File" field, then "Select Magic Variable", and tap on "Repeat Item". 52 | 53 | Congratulations, you have just created your first shortcut with Cryptomator actions! 54 | 55 | **Hints:** 56 | 57 | 1. To fully automate your photo upload, you should run a shortcut using an automation. To do this, [create a new automation](https://support.apple.com/guide/shortcuts/create-a-new-personal-automation-apdfbdbd7123/ios) in the Shortcuts app. You don't have to create the whole shortcut again. You can just add the action "Execute Shortcut" and select the previously created shortcut. 58 | 59 | 2. Executing a shortcut with a lot of photos (>1,000) can take much longer than executing it with 2x500 photos. To our knowledge, this seems to be a limitation of the Shortcuts app. Therefore, try to limit the number of photos using the available filters. One possible filter is to consider only the photos of the last 2-7 days for a shortcut that is executed daily. 60 | 61 | ## Photo to PDF (Advanced Example) {#photo-to-pdf} 62 | 63 | Another example, inspired by community member JB, is to convert the latest photo to a PDF and save it in a vault under a chosen path. This example is a bit more advanced, but it shows how you can combine different actions to create a more complex automation. You can either follow these step-by-step instructions or use the following shortcut to get started: 64 | 65 | [https://www.icloud.com/shortcuts/3d8e20cbfe26452486f3629a2f104c94](https://www.icloud.com/shortcuts/3d8e20cbfe26452486f3629a2f104c94) 66 | 67 | We assume that you have already installed Shortcuts, see step 1 of the previous example. 68 | 69 | **Step 1: Add "Is Vault Unlocked" action** 70 | 71 | * Add the "Is Vault Unlocked" action from Cryptomator. 72 | * Specify the vault you want to use. 73 | * Add the "If" action from the "Scripting" category. 74 | * Set the condition to "is" and the number to "0". 75 | 76 | This makes sure that your vault is unlocked. If it is not, the shortcut will ask you to unlock it, see step 2. 77 | 78 | **Step 2: Add "Open Vault" action** 79 | 80 | * Add the "Open Vault" action from Cryptomator. 81 | * Drag this action below the "If" action (and above "Otherwise"). 82 | * Specify the same vault you used before. 83 | * Add the "Show Alert" action from the "Scripting" category. 84 | * Drag this action below the "Open Vault" action (and above "Otherwise"). 85 | * Replace the informational message with something like "Unlock this vault and run this shortcut again". 86 | 87 | This completes the "If" block. Now we can be certain that the vault is unlocked for the "Otherwise" block. 88 | 89 | **Step 3: Add "List" action** 90 | 91 | If you only want to save the PDF in one specific path, you can skip this step and go to step 4. Otherwise, you can add a list of paths to choose from. 92 | 93 | * Add the "List" action from the "Scripting" category. 94 | * Drag this action below the "Otherise" action (and above "End If"). 95 | * Customize this list to your needs by specifying paths of the folders where your PDFs could potentially be stored, something like a "favorites" list. 96 | * Add the "Choose from List" action from the "Scripting" category. 97 | 98 | Don't worry about dragging these actions inside the "Otherwise" block of the "If" action, we'll do that in the very end. 99 | 100 | **Step 4: Add "Get Latest Photos" + "Make PDF" actions** 101 | 102 | * Add the "Get Latest Photos" action from the "Media" category. 103 | * Add the "Make PDF" action from the "Documents" category. 104 | 105 | This is just an example. Shortcuts offer you many other ways to get the file or media that you could use as an input for encryption. 106 | 107 | **Step 5: Add "Get Folder" action** 108 | 109 | * Add the "Get Folder" action from Cryptomator. 110 | * Select the variable "Chosen Item" for the path (or enter a specific path if you skipped step 3) and specify the same vault you used before. 111 | 112 | Important: It will check if the folder exists in your vault. If it doesn't exist, the action will fail and no PDF will be uploaded. 113 | 114 | **Step 6: Add "Save File" action** 115 | 116 | * Add the "Save File" action from Cryptomator. 117 | * Make sure that the two variables are correctly set: The PDF you want to save and the folder from the "Get Folder" action in step 5. 118 | 119 | **Step 7: Finish "Otherwise" block** 120 | 121 | * Drag the "End If" action to the very bottom, which will enclose all actions that you have created between the steps 3 and 6 into the "Otherwise" block. 122 | 123 | Congratulations, you have just created a more advanced shortcut with Cryptomator actions! 124 | -------------------------------------------------------------------------------- /docs/ios/vault-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: vault-management 3 | title: Vault Management 4 | sidebar_position: 3 5 | --- 6 | 7 | # Vault Management 8 | 9 | ## Unlock Duration {#unlock-duration} 10 | 11 | With the vault setting "Unlock Duration", you can specify for how long you want your vault to stay unlocked when idle. The following options are: 12 | 13 | * Let iOS Decide Automatically 14 | * 5 Minutes 15 | * 10 Minutes 16 | * 30 Minutes 17 | * 1 Hour 18 | * Indefinite 19 | 20 | The default option is "Let iOS Decide Automatically". Accessing Cryptomator via the Files app is possible via a so-called File Provider Extension. This extension has limited capabilities, e.g., it has a lower memory limit than regular apps. To free up memory, iOS may terminate Cryptomator at any time, which is basically the same as locking the vault since the key is held in memory. 21 | 22 | This option has two consequences: 23 | 24 | * There is no guarantee for how long your vault stays unlocked. Of course, while you're accessing your vault, it's highly unlikely that Cryptomator gets terminated. 25 | * You're responsible for locking your vault manually. Or if that's not a concern of yours, you can just let iOS decide when Cryptomator is getting terminated. 26 | 27 | In order to have a guarantee that your vault stays unlocked for a certain amount of time, the other options are available. By using one of these options, a copy of your key needs to be stored in the iOS keychain, as long as your vault is unlocked. 28 | 29 | E.g., if you choose "1 Hour" and Cryptomator gets terminated by iOS within that time frame, your vault can automatically be unlocked again using the key from the iOS keychain. If the selected time frame has passed, the key will be removed from the iOS keychain and your vault will get automatically locked. 30 | 31 | If you choose the "Indefinite" option, your vault will be kept unlocked until you have manually locked it. 32 | 33 | ## Security Considerations {#security-considerations} 34 | 35 | Cryptomator balances security and usability by storing certain credentials in the iOS Keychain to enable convenient features like biometric authentication and reduced password prompts. Here's how it works: 36 | 37 | * Vault Passwords: Cryptomator stores a copy of your vault password in the iOS Keychain when Touch ID or Face ID is enabled. 38 | * Masterkeys: Cryptomator stores a copy of the masterkey in the iOS Keychain for vaults with a specified "Unlock Duration" (anything except "Let iOS Decide Automatically"). 39 | 40 | These credentials are stored with the [kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly](https://developer.apple.com/documentation/security/ksecattraccessibleafterfirstunlockthisdeviceonly) attribute, ensuring: 41 | 42 | 1. Keychain entries are only accessible after the first unlock using your device's passcode following a reboot. 43 | 2. Keychain entries are not transferred to a new device when restoring from a backup. 44 | 3. Keychain entries are not synchronized to iCloud. 45 | 46 | These measures are designed to provide a secure yet convenient experience on your trusted devices. If you prefer not to store these credentials in the Keychain due to security concerns, you can opt out of using these features. However, for most users, this balance between security and usability is appropriate and safe. 47 | -------------------------------------------------------------------------------- /docs/misc/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Misc", 3 | "position": 6, 4 | "link": { 5 | "type": "doc", 6 | "id": "misc/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/misc/contribute.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: contribute 3 | title: Contribute 4 | sidebar_position: 1 5 | --- 6 | 7 | # Contribute 8 | 9 | ## How Can You Help Us? {#how-can-you-help-us} 10 | 11 | Cryptomator is an open source project and wouldn't be possible without contributions from users who support the idea. 12 | 13 | There are several ways you can help us: 14 | 15 | * By reporting bugs or feature requests on [GitHub](https://github.com/cryptomator/cryptomator/issues/new/choose), 16 | * By discussing solutions in our [community](https://community.cryptomator.org), 17 | * By contributing patches or features via pull requests, 18 | * By helping us with the [localization](https://translate.cryptomator.org/) of Cryptomator, 19 | * By improving this documentation, 20 | * By becoming a [sponsor](https://cryptomator.org/sponsors/), 21 | * Or by [donating](https://cryptomator.org/donate/) to the maintainers. 22 | 23 | ## Before You Start {#before-you-start} 24 | 25 | If you plan to help, please stick to our [Code of Conduct](https://github.com/cryptomator/cryptomator/blob/develop/.github/CODE_OF_CONDUCT.md). 26 | 27 | Our code is licensed under GPLv3 and this documentation under CC-BY-SA 4.0. If you contribute either, your grant us the rights to publish your contributions under those licenses. Also you have to digitally sign a [Contributor License Agreement (CLA)](https://gist.github.com/cryptobot/80c6654b7c8d5529cc365f1124cef50e). This is required to protect the maintainers of Cryptomator from legal problems with patent or copyright infringement. The CLA signature process is triggered by your first pull request automatically. You will be asked to authenticate with your GitHub account and your username will be stored even if you revoke any activity on GitHub. 28 | -------------------------------------------------------------------------------- /docs/misc/index.md: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | 3 | # Miscellaneous 4 | 5 | Additional resources and supplementary information. Learn how to contribute to the project and find supported cloud services, along with migration guides and technical reference materials. 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/misc/manual-migration.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: manual-migration 3 | title: Manual Migration 4 | sidebar_position: 4 5 | --- 6 | 7 | # Manual Migration 8 | 9 | Under some circumstances, Cryptomator refuses to automatically migrate a vault to a newer format. In this case, your vault will remain untouched, so you can continue using it with the previous version. 10 | 11 | To upgrade to the latest version, you can perform a migration manually: 12 | 13 | 1. Unlock the vault with the previous version of Cryptomator that you have used. You can find downloads of older versions [on our GitHub site](https://github.com/cryptomator/cryptomator/releases/). 14 | 1. Copy all files from this vault onto a temporary storage location on your computer. Be aware that these files are decrypted. 15 | 1. Once finished, lock your vault and quit Cryptomator. Now install the latest version of Cryptomator. 16 | 1. Create new vault with the latest version of Cryptomator and unlock it. 17 | 1. Copy all files from step 2 into the new vault. 18 | 19 | :::note 20 | One reason why automatic migration is impossible might be the fact that your vault is stored in a location that limits filename or path lengths, such as: 21 | 22 | - Network drives on Windows, such as WebDAV mounts 23 | - eCryptfs-encrypted volumes on Linux 24 | 25 | In this case, during step 5, you may encounter warnings indicating that you can not encrypt files due to such length limitations. Feel free to simply change the name of any affected files. 26 | ::: 27 | -------------------------------------------------------------------------------- /docs/misc/vault-format-history.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: vault-format-history 3 | title: Vault Format History 4 | sidebar_position: 3 5 | --- 6 | 7 | # Vault Format History 8 | 9 | Cryptomator vaults need to adhere to a structure and format (as described in [Security Architecture](/docs/security/architecture.md)) that may change over time. 10 | In order to identify the correct format, the masterkey file contains a version number, which represents the vault format. 11 | 12 | ## Format 8 {#format-8} 13 | 14 | Introduced in Cryptomator 1.6.0 on 2021-10-19. 15 | The following changes are: 16 | 17 | * Decoupled vault configuration from key derivation by introducing new vault configuration file named `vault.cryptomator`. It is a JWT containing basic information about the vault and specification what key to use. 18 | * `version` inside `masterkey.cryptomator` is now deprecated. 19 | 20 | ## Format 7 {#format-7} 21 | 22 | Introduced in Cryptomator 1.5.0 on 2020-04-16. 23 | The following changes are: 24 | 25 | * Added file extension (`*.c9r` and `*.c9s`) to all encrypted files and directories. Certain cloud storage services have issues with files without an extension. 26 | * Encrypted directories are now actually directories. Directory file is now inside of that with the fixed name `dir.c9r`. 27 | * Encrypted symlinks are now directories. Symlink file is now inside of that with the fixed name `symlink.c9r`. 28 | * Files and directories with shortened filenames are now directories (identifiable by the `.c9s` suffix). Mapping file with the long filename is now inside of that with the fixed name `name.c9s`. If it's a regular file, the content file has the fixed name `contents.c9r`. 29 | * Removed directory `m` because mapping files for shortened filenames are now in `d` as well. 30 | * Filenames are encoded with base64url so that name shortenings are less likely. 31 | * Increased ciphertext filename threshold to 220 characters. 32 | 33 | This is an example of the vault structure: 34 | 35 | ``` 36 | . 37 | ├─ d 38 | │ ├─ BZ 39 | │ │ └─ R4VZSS5PEF7TU3PMFIMON5GJRNBDWA 40 | │ │ ├─ 5TyvCyF255sRtfrIv__83ucADQ==.c9r # regular file 41 | │ │ ├─ FHTa55bH_sUfVDbEb0gTL9hZ8nho.c9r # irregular file... 42 | │ │ │ └─ dir.c9r # ...which is a directory 43 | │ │ ├─ gLeOGMCN358_UBf2Qk9cWCQl.c9r # irregular file... 44 | │ │ │ └─ symlink.c9r # ...which is a symlink 45 | │ │ ├─ IjTsXtReTy6bAAuxzLPV9T0k2vg=.c9s # shortened name... 46 | │ │ │ ├─ contents.c9r # ...which is a regular file 47 | │ │ │ └─ name.c9s # ...mapping to this full name 48 | │ │ ├─ q2nx5XeNCenHyQvkFD4mxYNrWpQ=.c9s # shortened name... 49 | │ │ │ ├─ dir.c9r # ...which is a directory 50 | │ │ │ └─ name.c9s # ...mapping to this full name 51 | │ │ ├─ u_JJCJE-T4IH-EBYASUp1u3p7mA=.c9s # shortened name... 52 | │ │ │ ├─ name.c9s # ...mapping to this full name 53 | │ │ │ └─ symlink.c9r # ...which is a symlink 54 | │ │ └─ ... 55 | │ └─ FC 56 | │ └─ ZKZRLZUODUUYTYA4457CSBPZXB5A77 57 | │ └─ ... 58 | ├─ masterkey.cryptomator 59 | └─ masterkey.cryptomator.DFD9B248.bkup 60 | ``` 61 | 62 | ## Format 6 {#format-6} 63 | 64 | Introduced in Cryptomator 1.3.0 on 2017-07-01. 65 | The following changes are: 66 | 67 | * Password is normalized in NFC. 68 | 69 | ## Format 5 {#format-5} 70 | 71 | Introduced in Cryptomator 1.2.0 on 2016-09-19. 72 | The following changes are: 73 | 74 | * Dropped file size obfuscation support. 75 | 76 | File sizes can be determined in `O(1)` instead of having to read and decrypt the file header. 77 | This allows showing file sizes in the directory listing without having to download each file first. 78 | The file size in the header is now unused and filled with `0xFFFFFFFFFFFFFFFF`. 79 | 80 | ## Format 4 {#format-4} 81 | 82 | Introduced in Cryptomator 1.1.1 on 2016-07-08. 83 | The following changes are: 84 | 85 | * Directories now have `0` (zero) prefix instead of a `_` (underscore) suffix. 86 | 87 | Directories are now stored with different names to avoid conflicts with the naming scheme of certain cloud storage services in case of synchronization conflicts. 88 | 89 | This is an example of the vault structure: 90 | 91 | ``` 92 | . 93 | ├─ d 94 | │ ├─ BZ 95 | │ │ └─ R4VZSS5PEF7TU3PMFIMON5GJRNBDWA 96 | │ │ ├─ 0USJ7VD36K7YU2RARYJMEFTABZOGN6LUH63VRH5MADVOZ433VZ7EPSM2PLJPHTBL6 97 | │ │ ├─ 0YWVRCCROEC3ZECD2UTJR7BGYERU3LG6R7QODBGMZ7EQ3BXGY24====== 98 | │ │ ├─ ... 99 | │ │ ├─ YWBBP7RC6FFX6ZN4YBLN4WXD6IIBTMKXHFFDQEZNYTQLNZWOGDT22EY= 100 | │ │ └─ ZTNHMICOWU6ZSNIR72ESLQSGDMLQYQ42XEKGOWSYYX5II=== 101 | │ └─ FC 102 | │ └─ ZKZRLZUODUUYTYA4457CSBPZXB5A77 103 | │ └─ ... 104 | ├─ m 105 | │ └─ ... 106 | ├─ masterkey.cryptomator 107 | └─ masterkey.cryptomator.bkup 108 | ``` 109 | 110 | ## Format 3 {#format-3} 111 | 112 | Introduced in Cryptomator 1.0.0 on 2016-03-09. 113 | 114 | Vault format 3 is basically the official "first" version. 115 | To be exact, it was actually introduced in Cryptomator Beta 0.11 on 2016-03-03. 116 | Vault formats 1 and 2 were only used in beta versions of Cryptomator. 117 | 118 | This is an example of the vault structure: 119 | 120 | ``` 121 | . 122 | ├─ d 123 | │ ├─ BZ 124 | │ │ └─ R4VZSS5PEF7TU3PMFIMON5GJRNBDWA 125 | │ │ ├─ USJ7VD36K7YU2RARYJMEFTABZOGN6LUH63VRH5MADVOZ433VZ7EPSM2PLJPHTBL6_ 126 | │ │ ├─ YWBBP7RC6FFX6ZN4YBLN4WXD6IIBTMKXHFFDQEZNYTQLNZWOGDT22EY= 127 | │ │ ├─ ... 128 | │ │ ├─ YWVRCCROEC3ZECD2UTJR7BGYERU3LG6R7QODBGMZ7EQ3BXGY24======_ 129 | │ │ └─ ZTNHMICOWU6ZSNIR72ESLQSGDMLQYQ42XEKGOWSYYX5II=== 130 | │ └─ FC 131 | │ └─ ZKZRLZUODUUYTYA4457CSBPZXB5A77 132 | │ └─ ... 133 | ├─ m 134 | │ └─ ... 135 | ├─ masterkey.cryptomator 136 | └─ masterkey.cryptomator.bkup 137 | ``` 138 | -------------------------------------------------------------------------------- /docs/security/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Security", 3 | "position": 5, 4 | "link": { 5 | "type": "doc", 6 | "id": "security/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/security/architecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: architecture 3 | title: Security Architecture 4 | sidebar_position: 2 5 | --- 6 | 7 | # Security Architecture 8 | 9 | ## Virtual Filesystem {#virtual-filesystem} 10 | 11 | Cryptomator provides a virtual drive. Add, edit, remove files as you're used to with just any disk drive. 12 | 13 | Files are transparently en- and decrypted. 14 | There are no unencrypted copies on your hard disk drive. 15 | With every access on your files inside the virtual drive, Cryptomator will en- and decrypt these files on-the-fly. 16 | 17 | Currently WinFsp (on Windows) and macFUSE (on macOS) and FUSE (Linux) are our frontends of choice. 18 | If they're not available on your system, Cryptomator will fall back on WebDAV, as it is supported on every major operating system. 19 | WebDAV is an HTTP-based protocol and Cryptomator acts as a WebDAV server accepting so-called loopback connections on your local machine only. 20 | 21 | Whenever your file manager accesses files through this virtual drive, Cryptomator will process this request via the following layers. 22 | 23 | ## Vault Configuration {#vault-configuration} 24 | 25 | Every vault must have a vault configuration file named `vault.cryptomator` in the root directory of the vault. 26 | It is a JWT containing basic information about the vault and specification what key to use. 27 | The JWT is signed using the 512 bit raw masterkey. 28 | 29 | This is an example of an encoded vault configuration file: 30 | 31 | ``` 32 | eyJraWQiOiJtYXN0ZXJrZXlmaWxlOm1hc3RlcmtleS5jcnlwdG9tYXRvciIsInR5cCI6IkpXVCIsImFsZyI6IkhTMjU2In0.eyJmb3JtYXQiOjgsInNob3J0ZW5pbmdUaHJlc2hvbGQiOjIyMCwianRpIjoiY2U5NzZmN2EtN2I5Mi00Y2MwLWI0YzEtYzc0YTZhYTE3Y2Y1IiwiY2lwaGVyQ29tYm8iOiJTSVZfQ1RSTUFDIn0.IJlu4dHb3fqB2fAk9lf8G8zyEXc7OLB-5m9aNxOEXIQ 33 | ``` 34 | 35 | The decoded header: 36 | 37 | ```js 38 | { 39 | "kid": "masterkeyfile:masterkey.cryptomator", /* URI of where to get the key */ 40 | "typ": "JWT", 41 | "alg": "HS256" /* current implementations also support HS384 and HS512 */ 42 | } 43 | ``` 44 | 45 | The decoded payload: 46 | 47 | ```js 48 | { 49 | "format": 8, /* vault format for checking software compatibility */ 50 | "shorteningThreshold": 220, /* how many characters in ciphertext filenames before shortening */ 51 | "jti": "ce976f7a-7b92-4cc0-b4c1-c74a6aa17cf5", /* random UUID to uniquely identify the vault */ 52 | "cipherCombo": "SIV_GCM" /* mode of operation for the block cipher. Other possible values are "SIV_CTRMAC" */ 53 | } 54 | ``` 55 | 56 | When opening a vault, the following steps have to be followed: 57 | 58 | 1. Decode `vault.cryptomator` without verification. 59 | 2. Read `kid` header and, depending on its value, retrieve the masterkey from the specified location. 60 | 3. Verify the JWT signature using the concatenation of encryption masterkey and MAC masterkey. 61 | 4. Make sure `format` and `cipherCombo` are supported. 62 | 63 | ## Masterkey {#masterkey} 64 | 65 | Each vault has its own 256 bit encryption as well as MAC masterkey used for encryption of file specific keys and file authentication, respectively. 66 | 67 | All key material is generated by a CSPRNG (Cryptographically secure pseudorandom number generator). 68 | 69 | * In Java (Desktop, Android App), we use [SecureRandom](https://docs.oracle.com/javase/8/docs/api/java/security/SecureRandom.html) with SHA1PRNG, seeded with 440 bits from `SecureRandom.getInstanceStrong()`. 70 | * In Javascript (Cryptomator Hub), we rely on [crypto.subtle.generateKey()](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey). 71 | * In Swift (iOS App), we use [SecRandomCopyBytes](https://developer.apple.com/documentation/security/1399291-secrandomcopybytes) with `kSecRandomDefault`. 72 | 73 | These keys are themselves protected and can be retrieved using, either of the following methods, depending on the use case: 74 | 75 | ### Using Cryptomator Hub {#using-cryptomator-hub} 76 | 77 | When using [Cryptomator Hub](/docs/hub/access-vault.md), the encrypted raw masterkey can be retrieved from a the server component. 78 | 79 | :::note 80 | If a vault is managed by Cryptomator Hub, the `vault.cryptomator`'s `kid` field will point to the resource URI of said vault on the corresponding Hub instance, prefixed by `hub+`. 81 | 82 | Example: `"kid": "hub+https://hub.example.com/api/vaults/bb36d67c"` 83 | ::: 84 | 85 | Every Cryptomator Hub user who is authorized to access this vault will retrieve an individual ciphertext from the vault's `/access-token` sub-resource. 86 | This ciphertext is formatted as a [JWE](https://tools.ietf.org/html/rfc7516) and can be decrypted using [ECDH-ES](https://datatracker.ietf.org/doc/html/rfc7518#section-4.6) and the user's static private key. 87 | The JWE's decoded header looks something like this: 88 | 89 | ```js 90 | { 91 | "alg": "ECDH-ES", 92 | "enc": "A256GCM", 93 | "epk": { 94 | "crv": "P-384", 95 | "kty": "EC", 96 | "x": "p1J...g", 97 | "y": "8Il...H" 98 | } 99 | "apu": "", 100 | "apv": "" 101 | } 102 | ``` 103 | 104 | The JWE's decrypted payload holds a single value, which can then be consumed by Cryptomator to unlock the vault: 105 | 106 | ```js 107 | { 108 | "key": "H7u...o==" /* 512 bit raw masterkey */ 109 | } 110 | ``` 111 | 112 | ### Masterkey File {#masterkey-file} 113 | 114 | Alternatively, for normal password-protected vaults, Cryptomator will derive a 32byte long KEK (Key-encryption key) via [scrypt](https://tools.ietf.org/html/rfc7914) (non-parallel), encrypt both masterkeys using [AES Key Wrap (RFC 3394)](https://tools.ietf.org/html/rfc3394), and store the results together with the key derivation parameters in a JSON file: 115 | 116 | ``` 117 | encryptionMasterKey := createRandomBytes(32) 118 | macMasterKey := createRandomBytes(32) 119 | kek := scrypt(password, scryptSalt, scryptCostParam, scryptBlockSize) 120 | wrappedEncryptionMasterKey := aesKeyWrap(encryptionMasterKey, kek) 121 | wrappedMacMasterKey := aesKeyWrap(macMasterKey, kek) 122 | ``` 123 | 124 | 125 | KEK Derivation 126 | 127 | 128 | The wrapped keys and the parameters needed to derive the KEK are then stored as integers or Base64-encoded strings in a JSON file named `masterkey.cryptomator`, which is located in the root directory of the vault. 129 | 130 | ```js 131 | { 132 | "version": 999, /* deprecated, vault format is now specified in the vault configuration */ 133 | "scryptSalt": "QGk...jY=", 134 | "scryptCostParam": 32768, 135 | "scryptBlockSize": 8, 136 | "primaryMasterKey": "QDi...Q==", /* wrappedEncryptionMasterKey */ 137 | "hmacMasterKey": "L83...Q==", /* wrappedMacMasterKey */ 138 | "versionMac": "3/U...9Q=" /* HMAC-256 of vault version to prevent undetected downgrade attacks */ 139 | } 140 | ``` 141 | 142 | When unlocking a vault the KEK is used to unwrap (i.e. decrypt) the stored masterkeys. 143 | 144 | 145 | Masterkey Decryption 146 | 147 | -------------------------------------------------------------------------------- /docs/security/best-practices.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: best-practices 3 | title: Best Practices 4 | sidebar_position: 5 5 | --- 6 | 7 | # Best Practices 8 | 9 | ## Sharing of Vaults {#sharing-of-vaults} 10 | 11 | When sharing your vault or working in a team, we strongly recommend using [Cryptomator Hub](https://cryptomator.org/for-teams/). 12 | It adds access management for your vaults and allows you to unlock vaults with your own account. 13 | 14 | Otherwise, always be careful when sharing your vault with other people. 15 | 16 | In general, keep your vault password secret. 17 | Nobody except yourself should know the vault password. 18 | Sharing your vault password should be reserved for very limited personal scenarios (for example, with your spouse) and is generally not advised. 19 | Keep in mind that other people could pass on – with or without intent – the vault password. 20 | Only share your vaults with people you trust. 21 | 22 | If you share a vault with others, do not communicate the vault password on an insecure channel. 23 | Tell the password in person, use encrypted email or messengers or other similar secure means. 24 | 25 | ## Good Passwords {#good-passwords} 26 | 27 | Bad passwords can be cracked easily when using computers. 28 | Plenty of recommendations exist for secure passwords. 29 | Some of these are: 30 | 31 | * A password should not contain public or personal information like the name of your pet, date of birth, or username. 32 | * A password should be long. 33 | * A password should not be an existing word or a combination of few words. It should be a combination of characters or words that is as random as possible. 34 | * For each purpose, a unique password without similarities to other passwords should be used. 35 | 36 | If you fulfill these requirements, you quickly reach a point where remembering the passwords gets impossible. 37 | Thus, we recommend using a password manager to generate and store the passwords. 38 | By doing so, you only have to remember a few or a single secure password. 39 | Otherwise, we recommend using at least 10 characters, ideally [use sentences instead of words](https://xkcd.com/936/). 40 | 41 | ## Backup Strategy {#backup-strategy} 42 | 43 | Cryptomator is not a backup solution. 44 | Its primary and only purpose is client-side encryption. 45 | 46 | We strongly recommend maintaining your own backup strategy. 47 | Even with unencrypted data, regular backups are essential. 48 | 49 | Most cloud storage services offer some form of backup or file revision capabilities. 50 | Evaluate if those available measures are sufficient for your needs or consider implementing additional backup systems. 51 | -------------------------------------------------------------------------------- /docs/security/hub.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: hub 3 | title: Cryptomator Hub 4 | sidebar_position: 3 5 | --- 6 | 7 | # Cryptomator Hub 8 | 9 | Cryptomator Hub facilitates asymmetric encryption to allow sharing the key material used in Cryptomator vaults between multiple parties. 10 | 11 | ## Key Types {#key-types} 12 | 13 | Cryptomator Hub facilitates different keys types. Here is an overview of these types and how they are interconnected: 14 | 15 | ### User Key Pair {#user-key-pair} 16 | 17 | During first login, every user will generate a new EC key pair. The private key is then encrypted using both the [Account Key](#account-key) as well as the [Device Key](#device-key-pair) of every single device owned by this user. 18 | 19 | The purpose of the user key is to access secrets that have been shared with this user using [ECDH-ES-encrypted JWEs](https://datatracker.ietf.org/doc/html/rfc7518.html#section-4.6), most prominently the masterkey of shared vaults. 20 | 21 | If users wish to rotate their keys, e.g. when a device may be compromised, they can simply re-roll the key pair, re-encrypt secrets that they whish to keep access to and delete the old key pair. 22 | 23 | ### Device Key Pair {#device-key-pair} 24 | 25 | Every device requires a key pair, which is generated on first use. The private key is securely stored on-device and not intended to ever leave it. For example, 26 | on web browsers the private key is [non-extractable](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey#extractable) and stored in the browser's IndexedDB. 27 | 28 | :::note 29 | A *device* is any client that interacts with Cryptomator Hub on behalf of a user. This definition includes the web browser used to access the Hub 30 | web interface as well as the mobile app on a user's smartphone. On multi-user systems, every user is expected to have a separate user account, in 31 | which case we're talking about multiple devices with distinct key pairs, even if they share the same hardware. 32 | ::: 33 | 34 | The sole purpose of the device key is to decrypt the [User Key](#user-key-pair), which is stored in a device-specific [ECDH-ES-encrypted JWE](https://datatracker.ietf.org/doc/html/rfc7518.html#section-4.6). 35 | 36 | Users can invalidate devices by simply deleting the device-specific JWE and rotating their user key. 37 | 38 | ### Account Key {#account-key} 39 | 40 | When users attempt to access their account from a new device, there is no device-specific JWE yet. Instead they can then use the Account Key to decrypt the [User Key](#user-key-pair). The Account Key acts as a password to derive a key for a [PBES2-encrypted JWE](https://datatracker.ietf.org/doc/html/rfc7518.html#section-4.8). 41 | 42 | :::warning 43 | The Account Key needs to be kept secret, as it is the only user-facing secret that allows anyone knowing it to authorize as the corresponding user. 44 | 45 | When an Account Key is suspected of being compromised, it can and should be re-generated from the user's profile page, which will immediately invalidate any circulating copies. 46 | ::: 47 | 48 | :::note 49 | The Account Key itself is stored as an [ECDH-ES-encrypted JWE](https://datatracker.ietf.org/doc/html/rfc7518.html#section-4.6), allowing its owner to 50 | view it from any authorized device. Regardless it should be securely stored independently. 51 | ::: 52 | -------------------------------------------------------------------------------- /docs/security/index.md: -------------------------------------------------------------------------------- 1 | import DocCardList from '@theme/DocCardList'; 2 | 3 | # Security Documentation 4 | 5 | Deep dive into Cryptomator's security architecture, encryption methods, and best practices for keeping your data safe. Understand the cryptographic foundations and security principles that protect your files. 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/security/security-target.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: security-target 3 | title: Security Target 4 | sidebar_position: 1 5 | --- 6 | 7 | # Security Target 8 | 9 | Cryptomator was designed to solve privacy issues when saving files to cloud storages. 10 | 11 | The risk that the cloud provider or third parties access the data stored in the cloud without permission is mitigated. 12 | Only people who know the vault password are able to read the files in the vault or change the file contents undetected. 13 | This is true for file contents as well as for filenames. 14 | 15 | ## What Cryptomator Encrypts {#what-cryptomator-encrypts} 16 | 17 | To allow a working synchronization with the cloud, there are some meta information that Cryptomator does not encrypt. 18 | These are: 19 | 20 | * access, modification, and creation timestamp of files and folders, 21 | * number of files and folders in a vault and in the folders, and 22 | * size of the stored files. 23 | 24 | ## What Cryptomator Is Not {#what-cryptomator-is-not} 25 | 26 | In addition, you have to keep in mind what Cryptomator is not. 27 | Protection of the files on the local computer is not the focus of Cryptomator. 28 | Cryptomator is not a complete replacement for other encryption tools based on container files if the aforementioned meta information should be encrypted. 29 | Cryptomator does not provide protection if programs create backup copies of the encrypted files when working with them. 30 | Such files are not detected by Cryptomator and may remain on the computer even after unlocking a vault. 31 | Cryptomator cannot provide protection if the local computer is infected with malware which reads entered passwords and file contents (e.g., files in an unlocked vault). 32 | 33 | To protect against such risks, other methods, like complete disk encryption, immediate installation of system and software updates, and the use of applicable antivirus software, is required. 34 | -------------------------------------------------------------------------------- /docs/security/verify-installers.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: verify-installers 3 | title: Verify Installer Signatures 4 | sidebar_position: 6 5 | --- 6 | 7 | # Verify Installer Signatures 8 | 9 | If you are not sure whether an alleged Cryptomator installer is legitimate, you can verify its authenticity and integrity. 10 | 11 | ## GPG Signature {#gpg-signature} 12 | 13 | All Cryptomator release artifacts include a `.asc` signature file that you can use to verify authenticity and integrity using GPG. This method works on Windows, Linux, and macOS (with GPG installed). Download both the installer and the corresponding `.asc` signature file, then verify in the following steps: 14 | 15 | How to verify GPG signatures 16 | 17 | 1. Use `gpg --list-keys --fingerprint 58117AFA1F85B3EEC154677D615D449FE6E6A235` to make sure you have loaded the GPG key. If it is not available, download it from a keyserver e.g.: `gpg --keyserver keys.gnupg.net --recv-keys 58117AFA1F85B3EEC154677D615D449FE6E6A235` or another trusted source like from Cryptobot using Github `curl -sSL https://github.com/cryptobot.gpg | gpg --import -`. 18 | 2. Use `gpg --verify .asc ` to execute the verification process (replace `` with the actual filename of your downloaded installer). 19 | 20 | The message should say: 21 | 22 | 3. `gpg: Good signature from "Cryptobot "` 23 | 4. `Primary key fingerprint: 5811 7AFA 1F85 B3EE C154 677D 615D 449F E6E6 A235` 24 | 25 | If shown, you can ignore the following warning: 26 | 27 | `gpg: WARNING: This key is not certified with a trusted signature!` 28 | 29 | ## Windows (exe) {#windows} 30 | 31 | Our Windows installers are signed using a code signing certificate. You can verify the signature in five simple steps: 32 | 33 | How to check the code signing certificate on Windows 34 | 35 | 1. Right click on the file and click on Properties. 36 | 2. Select the Digital Signatures tab: It should show a signature by `Skymatic GmbH`. 37 | 3. Click on Details. 38 | 4. Click on View Certificates. 39 | 5. Click on Details. The serial number of our certificate should be: 40 | - For releases since July 14, 2022: `d77e4f8b938f56ae265cd08e9193490c` 41 | - For releases from July 3, 2019 to July 3, 2022: `63c45bff1a148d60ed2994d3a2639034` 42 | 43 | ## macOS (app) {#macos} 44 | 45 | On macOS, you can verify the code signature of the Cryptomator app using the built-in `codesign` utility. This verification confirms the app's authenticity and integrity: 46 | 47 | 1. Open Terminal (found in Applications > Utilities). 48 | 2. Run the following command to check the signature: 49 | ``` 50 | codesign -dv /Applications/Cryptomator.app 51 | ``` 52 | 3. Verify that the output includes: 53 | - `TeamIdentifier=YZQJQUHA3L` 54 | - The signature should be valid with no errors 55 | 56 | If the app is properly signed, you should see output similar to: 57 | ``` 58 | Executable=/Applications/Cryptomator.app/Contents/MacOS/Cryptomator 59 | Identifier=org.cryptomator 60 | ... 61 | TeamIdentifier=YZQJQUHA3L 62 | ``` 63 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docs", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "start": "docusaurus start --port 8000", 8 | "build": "docusaurus build", 9 | "swizzle": "docusaurus swizzle", 10 | "deploy": "docusaurus deploy", 11 | "clear": "docusaurus clear", 12 | "serve": "docusaurus serve", 13 | "write-translations": "docusaurus write-translations", 14 | "write-heading-ids": "docusaurus write-heading-ids", 15 | "typecheck": "tsc" 16 | }, 17 | "dependencies": { 18 | "@docusaurus/core": "3.8.0", 19 | "@docusaurus/plugin-client-redirects": "^3.8.0", 20 | "@docusaurus/preset-classic": "3.8.0", 21 | "@easyops-cn/docusaurus-search-local": "^0.50.0", 22 | "@mdx-js/react": "^3.1.0", 23 | "clsx": "^2.1.1", 24 | "prism-react-renderer": "^2.4.1", 25 | "react": "^19.1.0", 26 | "react-dom": "^19.1.0" 27 | }, 28 | "devDependencies": { 29 | "@docusaurus/module-type-aliases": "3.8.0", 30 | "@docusaurus/tsconfig": "3.8.0", 31 | "@docusaurus/types": "3.8.0", 32 | "typescript": "~5.8.3" 33 | }, 34 | "browserslist": { 35 | "production": [ 36 | ">0.5%", 37 | "not dead", 38 | "not op_mini all" 39 | ], 40 | "development": [ 41 | "last 3 chrome version", 42 | "last 3 firefox version", 43 | "last 5 safari version" 44 | ] 45 | }, 46 | "engines": { 47 | "node": ">=18.0" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /sidebars.ts: -------------------------------------------------------------------------------- 1 | import type { SidebarsConfig } from '@docusaurus/plugin-content-docs'; 2 | 3 | // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) 4 | 5 | const sidebars: SidebarsConfig = { 6 | docs: [ 7 | { 8 | type: 'autogenerated', 9 | dirName: '.', 10 | }, 11 | ], 12 | }; 13 | 14 | export default sidebars; 15 | -------------------------------------------------------------------------------- /src/clientModules/utmRemover.ts: -------------------------------------------------------------------------------- 1 | (function removeUTMParams() { 2 | if (typeof window === 'undefined') { 3 | return; 4 | } 5 | 6 | const url = new URL(window.location.href); 7 | const params = url.searchParams; 8 | const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']; 9 | let modified = false; 10 | 11 | utmParams.forEach(param => { 12 | if (params.has(param)) { 13 | params.delete(param); 14 | modified = true; 15 | } 16 | }); 17 | 18 | if (modified) { 19 | const newQuery = params.toString() ? '?' + params.toString() : ''; 20 | const newUrl = url.pathname + newQuery + url.hash; 21 | window.history.replaceState({}, document.title, newUrl); 22 | } 23 | })(); 24 | -------------------------------------------------------------------------------- /src/components/Grid.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { GridContext } from './GridContext'; 3 | 4 | interface GridProps { 5 | children: React.ReactNode; 6 | className?: string; 7 | columns?: number; 8 | columnsSmall?: number; 9 | columnsLarge?: number; 10 | } 11 | 12 | export default function Grid({ children, className, columns = 1, columnsSmall, columnsLarge }: GridProps) { 13 | const childArray = React.Children.toArray(children); 14 | const defaultColumns = columns || childArray.length; 15 | const smallColumns = columnsSmall ?? defaultColumns; 16 | const largeColumns = columnsLarge ?? defaultColumns; 17 | const gridId = React.useId(); 18 | return ( 19 |

20 | 42 | 43 |

44 | {children} 45 |
46 | 47 |

48 | ); 49 | } 50 | -------------------------------------------------------------------------------- /src/components/GridContext.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export const GridContext = React.createContext(false); 4 | -------------------------------------------------------------------------------- /src/components/HomepageFeatures/index.tsx: -------------------------------------------------------------------------------- 1 | import Link from '@docusaurus/Link'; 2 | import Heading from '@theme/Heading'; 3 | import type { ReactNode } from 'react'; 4 | 5 | type FeatureItem = { 6 | title: string; 7 | description: ReactNode; 8 | link: string; 9 | }; 10 | 11 | const FeatureList: FeatureItem[] = [ 12 | { 13 | title: 'Cryptomator', 14 | link: '/desktop/setup', 15 | description: ( 16 | <> 17 | Documentation for Cryptomator on Windows, macOS, and Linux. 18 | Create vaults, manage encrypted files, and configure settings. 19 | 20 | ), 21 | }, 22 | { 23 | title: 'Cryptomator for Android', 24 | link: '/android/setup', 25 | description: ( 26 | <> 27 | Documentation for Cryptomator on Android devices. 28 | Access your encrypted files on the go with our mobile application. 29 | 30 | ), 31 | }, 32 | { 33 | title: 'Cryptomator for iOS', 34 | link: '/ios/setup', 35 | description: ( 36 | <> 37 | Documentation for Cryptomator on iPhone and iPad. 38 | Secure access to your encrypted files from your iOS device. 39 | 40 | ), 41 | }, 42 | { 43 | title: 'Cryptomator Hub', 44 | link: '/hub/introduction', 45 | description: ( 46 | <> 47 | Team and organization solutions with Cryptomator Hub. 48 | Manage user access, deploy for your organization, and handle vault recovery. 49 | 50 | ), 51 | }, 52 | { 53 | title: 'Security', 54 | link: '/security/security-target', 55 | description: ( 56 | <> 57 | Deep dive into Cryptomator's security architecture, encryption methods, 58 | and best practices for keeping your data safe. 59 | 60 | ), 61 | }, 62 | { 63 | title: 'Misc', 64 | link: '/misc/contribute', 65 | description: ( 66 | <> 67 | Additional resources and supplementary information. 68 | Learn how to contribute to the project and find supported cloud services. 69 | 70 | ), 71 | }, 72 | ]; 73 | 74 | function Feature({title, description, link}: FeatureItem) { 75 | return ( 76 |
77 |
78 | 79 | 80 | {title} 81 | 82 | 83 |
84 |
85 |

{description}

86 |
87 |
88 | 91 | Learn More 92 | 93 |
94 |
95 | ); 96 | } 97 | 98 | export default function HomepageFeatures(): ReactNode { 99 | return ( 100 |
101 |
102 | {FeatureList.map((props, idx) => ( 103 |
104 | 105 |
106 | ))} 107 |
108 |
109 | ); 110 | } 111 | -------------------------------------------------------------------------------- /src/components/Image.tsx: -------------------------------------------------------------------------------- 1 | import useBaseUrl from '@docusaurus/useBaseUrl'; 2 | import React from 'react'; 3 | import { GridContext } from './GridContext'; 4 | import { WhiteBoxContext } from './WhiteBoxContext'; 5 | 6 | interface ImageProps { 7 | src: string; 8 | srcset?: string; 9 | alt: string; 10 | width?: number | string; 11 | height?: number | string; 12 | className?: string; 13 | } 14 | 15 | export default function Image({ src, srcset, alt, width, height, className }: ImageProps) { 16 | const imageSrc = useBaseUrl(src); 17 | const isInsideGrid = React.useContext(GridContext); 18 | const isInsideWhiteBox = React.useContext(WhiteBoxContext); 19 | const processedSrcset = srcset 20 | ? srcset 21 | .split(',') 22 | .map(item => { 23 | const [url, descriptor] = item.trim().split(/\s+/); 24 | return `${useBaseUrl(url)} ${descriptor || ''}`.trim(); 25 | }) 26 | .join(', ') 27 | : undefined; 28 | const imageElement = ( 29 | {alt} 40 | ); 41 | if (isInsideGrid || isInsideWhiteBox) { 42 | return imageElement; 43 | } 44 | return

{imageElement}

; 45 | } 46 | -------------------------------------------------------------------------------- /src/components/MobileGrid.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Grid from './Grid'; 3 | 4 | interface MobileGridProps { 5 | children: React.ReactNode; 6 | className?: string; 7 | } 8 | 9 | /** 10 | * A specialized Grid component optimized for mobile screenshots. 11 | * Uses columns={3} columnsSmall={2} columnsLarge={4} configuration 12 | * that's commonly used throughout the mobile documentation. 13 | */ 14 | export default function MobileGrid({ children, className }: MobileGridProps) { 15 | return ( 16 | 17 | {children} 18 | 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /src/components/WhiteBox.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { WhiteBoxContext } from './WhiteBoxContext'; 3 | 4 | interface WhiteBoxProps { 5 | children: React.ReactNode; 6 | } 7 | 8 | export default function WhiteBox({ children }: WhiteBoxProps) { 9 | return ( 10 | 11 |

18 | {children} 19 |

20 |
21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/components/WhiteBoxCaption.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | interface WhiteBoxCaptionProps { 4 | children: React.ReactNode; 5 | } 6 | 7 | export default function WhiteBoxCaption({ children }: WhiteBoxCaptionProps) { 8 | return ( 9 |

16 | {children} 17 |

18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /src/components/WhiteBoxContext.tsx: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export const WhiteBoxContext = createContext(false); 4 | -------------------------------------------------------------------------------- /src/css/custom.css: -------------------------------------------------------------------------------- 1 | @import './fonts.css'; 2 | 3 | /** 4 | * Any CSS included here will be global. The classic template 5 | * bundles Infima by default. Infima is a CSS framework designed to 6 | * work well for content-centric websites. 7 | */ 8 | 9 | /* You can override the default Infima variables here. */ 10 | :root { 11 | --ifm-color-primary: #49b04a; 12 | --ifm-color-primary-dark: #429e43; 13 | --ifm-color-primary-darker: #3e963f; 14 | --ifm-color-primary-darkest: #337b34; 15 | --ifm-color-primary-light: #58ba59; 16 | --ifm-color-primary-lighter: #61bd62; 17 | --ifm-color-primary-lightest: #7bc87c; 18 | --ifm-code-font-size: 95%; 19 | --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); 20 | 21 | /* Font family overrides */ 22 | --ifm-font-family-base: 'Open Sans', sans-serif; 23 | --ifm-heading-font-family: 'Quicksand', sans-serif; 24 | } 25 | 26 | /* Light mode only background color */ 27 | [data-theme='light'] { 28 | --ifm-background-color: #f7fafc; 29 | --ifm-code-background: #ffffff; 30 | } 31 | 32 | [data-theme='light'] pre { 33 | background-color: #ffffff !important; 34 | } 35 | 36 | /* Custom heading font weights for Quicksand */ 37 | h1 { 38 | font-weight: 500; /* Use Quicksand medium */ 39 | } 40 | 41 | h2 { 42 | font-weight: 500; /* Use Quicksand medium */ 43 | } 44 | 45 | h3, h4, h5, h6 { 46 | font-weight: 400; /* Use Quicksand regular */ 47 | } 48 | 49 | .navbar__title { 50 | font-family: 'Quicksand', sans-serif; 51 | font-weight: 700; 52 | color: #49b04a; 53 | } 54 | 55 | [data-theme='dark'] .navbar__title { 56 | color: #ffffff; 57 | } 58 | 59 | /* GitHub navbar icon */ 60 | .header-github-link::before { 61 | content: ''; 62 | width: 24px; 63 | height: 24px; 64 | display: flex; 65 | background-color: var(--ifm-navbar-link-color); 66 | mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E"); 67 | mask-repeat: no-repeat; 68 | mask-position: center; 69 | transition: background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default); 70 | } 71 | 72 | .header-github-link:hover::before { 73 | background-color: var(--ifm-navbar-link-hover-color); 74 | } 75 | -------------------------------------------------------------------------------- /src/css/fonts.css: -------------------------------------------------------------------------------- 1 | /* 2 | * For Font reduction use: 3 | * `pip install fonttools brotli` 4 | */ 5 | 6 | /* 7 | * For text bodies [ASCII + ÄäÖöÜü߀]: 8 | * pyftsubset opensans-regular.woff2 --unicodes=U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC --verbose --flavor=woff2 --output-file=opensans-regular.reduced.woff2 9 | */ 10 | @font-face { 11 | font-family: 'Open Sans'; 12 | font-style: normal; 13 | font-weight: 400; 14 | font-display: swap; 15 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url('/fonts/opensans-regular.reduced.woff2') format('woff2'); 16 | unicode-range: U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC; 17 | } 18 | 19 | /* 20 | * For medium text (e.g. paragraphs, medium emphasis) [ASCII + ÄäÖöÜü߀]: 21 | * pyftsubset opensans-medium.woff2 --unicodes=U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC --verbose --flavor=woff2 --output-file=opensans-medium.reduced.woff2 22 | */ 23 | @font-face { 24 | font-family: 'Open Sans'; 25 | font-style: normal; 26 | font-weight: 500; 27 | font-display: swap; 28 | src: local('Open Sans Medium'), local('OpenSans-Medium'), url('/fonts/opensans-medium.reduced.woff2') format('woff2'); 29 | unicode-range: U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC; 30 | } 31 | 32 | /* 33 | * For bold text (e.g. headings, bold emphasis) [ASCII + ÄäÖöÜü߀]: 34 | * pyftsubset opensans-bold.woff2 --unicodes=U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC --verbose --flavor=woff2 --output-file=opensans-bold.reduced.woff2 35 | */ 36 | @font-face { 37 | font-family: 'Open Sans'; 38 | font-style: normal; 39 | font-weight: 700; 40 | font-display: swap; 41 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url('/fonts/opensans-bold.reduced.woff2') format('woff2'); 42 | unicode-range: U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC; 43 | } 44 | 45 | /* 46 | * For h3 headings [ASCII + ÄäÖöÜü߀]: 47 | * pyftsubset quicksand-regular.woff2 --unicodes=U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC --verbose --flavor=woff2 --output-file=quicksand-regular.reduced.woff2 48 | */ 49 | @font-face { 50 | font-family: 'Quicksand'; 51 | font-style: normal; 52 | font-weight: 400; 53 | font-display: swap; 54 | src: url('/fonts/quicksand-regular.reduced.woff2') format('woff2'); 55 | unicode-range: U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC; 56 | } 57 | 58 | /* 59 | * For h1/h2 headings [ASCII + ÄäÖöÜü߀]: 60 | * pyftsubset quicksand-medium.woff2 --unicodes=U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC --verbose --flavor=woff2 --output-file=quicksand-medium.reduced.woff2 61 | */ 62 | @font-face { 63 | font-family: 'Quicksand'; 64 | font-style: normal; 65 | font-weight: 500; 66 | font-display: swap; 67 | src: url('/fonts/quicksand-medium.reduced.woff2') format('woff2'); 68 | unicode-range: U+0020-007F,U+00C4,U+00E4,U+00D6,U+00F6,U+00DC,U+00FC,U+00DF,U+20AC; 69 | } 70 | 71 | /* 72 | * Only for "CRYPTOMATOR" title: 73 | * pyftsubset quicksand-bold.woff2 --text="CRYPTOMATOR HUB" --verbose --flavor=woff2 --output-file=quicksand-bold.reduced.woff2 74 | */ 75 | @font-face { 76 | font-family: 'Quicksand'; 77 | font-style: normal; 78 | font-weight: 700; 79 | font-display: swap; 80 | src: url('/fonts/quicksand-bold.reduced.woff2') format('woff2'); 81 | unicode-range: U+0043,U+0052,U+0059,U+0050,U+0054,U+004F,U+004D,U+0041,U+0020,U+0048,U+0055,U+0042; 82 | } 83 | -------------------------------------------------------------------------------- /src/pages/index.module.css: -------------------------------------------------------------------------------- 1 | .heroLogo { 2 | width: 160px; 3 | height: 160px; 4 | } 5 | 6 | .heroBanner :global(.hero__title) { 7 | color: white; 8 | } 9 | 10 | .heroBanner :global(.hero__subtitle) { 11 | color: white; 12 | } 13 | 14 | @media screen and (max-width: 996px) { 15 | .heroLogo { 16 | width: 128px; 17 | height: 128px; 18 | } 19 | 20 | .heroBanner :global(.hero__title) { 21 | font-size: 2.75rem; 22 | } 23 | 24 | .heroBanner :global(.hero__subtitle) { 25 | font-size: 1.25rem; 26 | } 27 | 28 | .heroBanner :global(.button) { 29 | --ifm-button-size-multiplier: 1.1; 30 | width: 100%; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import Link from '@docusaurus/Link'; 2 | import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; 3 | import HomepageFeatures from '@site/src/components/HomepageFeatures'; 4 | import Heading from '@theme/Heading'; 5 | import Layout from '@theme/Layout'; 6 | import clsx from 'clsx'; 7 | import type { ReactNode } from 'react'; 8 | 9 | import styles from './index.module.css'; 10 | 11 | const Logo = require('@site/static/img/logo.svg').default; 12 | 13 | function HomepageHeader() { 14 | const {siteConfig} = useDocusaurusContext(); 15 | return ( 16 |
17 |
18 | 23 | 24 | {siteConfig.title} 25 | 26 |

{siteConfig.tagline}

27 | 30 | Get Started with Cryptomator 🚀 31 | 32 |
33 |
34 | ); 35 | } 36 | 37 | export default function Home(): ReactNode { 38 | const {siteConfig} = useDocusaurusContext(); 39 | return ( 40 | 43 | 44 |
45 | 46 |
47 |
48 | ); 49 | } 50 | -------------------------------------------------------------------------------- /src/theme/MDXComponents.js: -------------------------------------------------------------------------------- 1 | import Grid from '@site/src/components/Grid'; 2 | import Image from '@site/src/components/Image'; 3 | import MobileGrid from '@site/src/components/MobileGrid'; 4 | import WhiteBox from '@site/src/components/WhiteBox'; 5 | import WhiteBoxCaption from '@site/src/components/WhiteBoxCaption'; 6 | import MDXComponents from '@theme-original/MDXComponents'; 7 | 8 | export default { 9 | ...MDXComponents, 10 | Grid, 11 | Image, 12 | MobileGrid, 13 | WhiteBox, 14 | WhiteBoxCaption, 15 | }; 16 | -------------------------------------------------------------------------------- /static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/.nojekyll -------------------------------------------------------------------------------- /static/fonts/OFL.txt: -------------------------------------------------------------------------------- 1 | Copyright 2011 The Quicksand Project Authors (https://github.com/andrew-paglinawan/QuicksandFamily), with Reserved Font Name “Quicksand”. 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | http://scripts.sil.org/OFL 6 | 7 | 8 | ----------------------------------------------------------- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | ----------------------------------------------------------- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide 14 | development of collaborative font projects, to support the font creation 15 | efforts of academic and linguistic communities, and to provide a free and 16 | open framework in which fonts may be shared and improved in partnership 17 | with others. 18 | 19 | The OFL allows the licensed fonts to be used, studied, modified and 20 | redistributed freely as long as they are not sold by themselves. The 21 | fonts, including any derivative works, can be bundled, embedded, 22 | redistributed and/or sold with any software provided that any reserved 23 | names are not used by derivative works. The fonts and derivatives, 24 | however, cannot be released under any other type of license. The 25 | requirement for fonts to remain under this license does not apply 26 | to any document created using the fonts or their derivatives. 27 | 28 | DEFINITIONS 29 | "Font Software" refers to the set of files released by the Copyright 30 | Holder(s) under this license and clearly marked as such. This may 31 | include source files, build scripts and documentation. 32 | 33 | "Reserved Font Name" refers to any names specified as such after the 34 | copyright statement(s). 35 | 36 | "Original Version" refers to the collection of Font Software components as 37 | distributed by the Copyright Holder(s). 38 | 39 | "Modified Version" refers to any derivative made by adding to, deleting, 40 | or substituting -- in part or in whole -- any of the components of the 41 | Original Version, by changing formats or by porting the Font Software to a 42 | new environment. 43 | 44 | "Author" refers to any designer, engineer, programmer, technical 45 | writer or other person who contributed to the Font Software. 46 | 47 | PERMISSION & CONDITIONS 48 | Permission is hereby granted, free of charge, to any person obtaining 49 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 | redistribute, and sell modified and unmodified copies of the Font 51 | Software, subject to the following conditions: 52 | 53 | 1) Neither the Font Software nor any of its individual components, 54 | in Original or Modified Versions, may be sold by itself. 55 | 56 | 2) Original or Modified Versions of the Font Software may be bundled, 57 | redistributed and/or sold with any software, provided that each copy 58 | contains the above copyright notice and this license. These can be 59 | included either as stand-alone text files, human-readable headers or 60 | in the appropriate machine-readable metadata fields within text or 61 | binary files as long as those fields can be easily viewed by the user. 62 | 63 | 3) No Modified Version of the Font Software may use the Reserved Font 64 | Name(s) unless explicit written permission is granted by the corresponding 65 | Copyright Holder. This restriction only applies to the primary font name as 66 | presented to the users. 67 | 68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 | Software shall not be used to promote, endorse or advertise any 70 | Modified Version, except to acknowledge the contribution(s) of the 71 | Copyright Holder(s) and the Author(s) or with their explicit written 72 | permission. 73 | 74 | 5) The Font Software, modified or unmodified, in part or in whole, 75 | must be distributed entirely under this license, and must not be 76 | distributed under any other license. The requirement for fonts to 77 | remain under this license does not apply to any document created 78 | using the Font Software. 79 | 80 | TERMINATION 81 | This license becomes null and void if any of the above conditions are 82 | not met. 83 | 84 | DISCLAIMER 85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 | OTHER DEALINGS IN THE FONT SOFTWARE. 94 | -------------------------------------------------------------------------------- /static/fonts/opensans-bold.reduced.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/opensans-bold.reduced.woff2 -------------------------------------------------------------------------------- /static/fonts/opensans-medium.reduced.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/opensans-medium.reduced.woff2 -------------------------------------------------------------------------------- /static/fonts/opensans-regular.reduced.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/opensans-regular.reduced.woff2 -------------------------------------------------------------------------------- /static/fonts/opensans-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/opensans-regular.woff2 -------------------------------------------------------------------------------- /static/fonts/quicksand-bold.reduced.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/quicksand-bold.reduced.woff2 -------------------------------------------------------------------------------- /static/fonts/quicksand-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/quicksand-bold.woff2 -------------------------------------------------------------------------------- /static/fonts/quicksand-medium.reduced.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/quicksand-medium.reduced.woff2 -------------------------------------------------------------------------------- /static/fonts/quicksand-medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/quicksand-medium.woff2 -------------------------------------------------------------------------------- /static/fonts/quicksand-regular.reduced.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/quicksand-regular.reduced.woff2 -------------------------------------------------------------------------------- /static/fonts/quicksand-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/fonts/quicksand-regular.woff2 -------------------------------------------------------------------------------- /static/img/android/add-dropbox-login-provider-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-dropbox-login-provider-0.png -------------------------------------------------------------------------------- /static/img/android/add-dropbox-login-provider-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-dropbox-login-provider-1.png -------------------------------------------------------------------------------- /static/img/android/add-existing-vault-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-existing-vault-0-start.png -------------------------------------------------------------------------------- /static/img/android/add-existing-vault-1-select-add-existing-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-existing-vault-1-select-add-existing-vault.png -------------------------------------------------------------------------------- /static/img/android/add-existing-vault-2-select-provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-existing-vault-2-select-provider.png -------------------------------------------------------------------------------- /static/img/android/add-existing-vault-5-choose-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-existing-vault-5-choose-folder.png -------------------------------------------------------------------------------- /static/img/android/add-existing-vault-6-choose-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-existing-vault-6-choose-file.png -------------------------------------------------------------------------------- /static/img/android/add-existing-vault-8-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-existing-vault-8-finish.png -------------------------------------------------------------------------------- /static/img/android/add-googledrive-login-provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-googledrive-login-provider.png -------------------------------------------------------------------------------- /static/img/android/add-localstorage-login-provider-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-localstorage-login-provider-0.png -------------------------------------------------------------------------------- /static/img/android/add-localstorage-login-provider-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-localstorage-login-provider-1.png -------------------------------------------------------------------------------- /static/img/android/add-localstorage-login-provider-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-localstorage-login-provider-2.png -------------------------------------------------------------------------------- /static/img/android/add-localstorage-login-provider-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-localstorage-login-provider-3.png -------------------------------------------------------------------------------- /static/img/android/add-localstorage-login-provider-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-localstorage-login-provider-4.png -------------------------------------------------------------------------------- /static/img/android/add-onedrive-login-provider-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-onedrive-login-provider-0.png -------------------------------------------------------------------------------- /static/img/android/add-onedrive-login-provider-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-onedrive-login-provider-1.png -------------------------------------------------------------------------------- /static/img/android/add-s3-login-provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-s3-login-provider.png -------------------------------------------------------------------------------- /static/img/android/add-webdav-login-provider-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-webdav-login-provider-0.png -------------------------------------------------------------------------------- /static/img/android/add-webdav-login-provider-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-webdav-login-provider-1.png -------------------------------------------------------------------------------- /static/img/android/add-webdav-login-provider-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/add-webdav-login-provider-2.png -------------------------------------------------------------------------------- /static/img/android/change-password-vault-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/change-password-vault-0-start.png -------------------------------------------------------------------------------- /static/img/android/change-password-vault-1-select-change-pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/change-password-vault-1-select-change-pw.png -------------------------------------------------------------------------------- /static/img/android/change-password-vault-2-change-password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/change-password-vault-2-change-password.png -------------------------------------------------------------------------------- /static/img/android/change-password-vault-3-changing-pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/change-password-vault-3-changing-pw.png -------------------------------------------------------------------------------- /static/img/android/change-password-vault-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/change-password-vault-4-finish.png -------------------------------------------------------------------------------- /static/img/android/change-vault-position.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/change-vault-position.gif -------------------------------------------------------------------------------- /static/img/android/create-new-vault-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-0-start.png -------------------------------------------------------------------------------- /static/img/android/create-new-vault-1-select-new-existing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-1-select-new-existing.png -------------------------------------------------------------------------------- /static/img/android/create-new-vault-2-select-provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-2-select-provider.png -------------------------------------------------------------------------------- /static/img/android/create-new-vault-5-name-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-5-name-vault.png -------------------------------------------------------------------------------- /static/img/android/create-new-vault-6-select-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-6-select-path.png -------------------------------------------------------------------------------- /static/img/android/create-new-vault-7-set-password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-7-set-password.png -------------------------------------------------------------------------------- /static/img/android/create-new-vault-8-creating-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-8-creating-vault.png -------------------------------------------------------------------------------- /static/img/android/create-new-vault-9-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/create-new-vault-9-finish.png -------------------------------------------------------------------------------- /static/img/android/delete-file-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/delete-file-0-start.png -------------------------------------------------------------------------------- /static/img/android/delete-file-1-select-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/delete-file-1-select-delete.png -------------------------------------------------------------------------------- /static/img/android/delete-file-2-confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/delete-file-2-confirmation.png -------------------------------------------------------------------------------- /static/img/android/delete-file-3-deleting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/delete-file-3-deleting.png -------------------------------------------------------------------------------- /static/img/android/delete-file-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/delete-file-4-finish.png -------------------------------------------------------------------------------- /static/img/android/edit-file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/edit-file.gif -------------------------------------------------------------------------------- /static/img/android/export-file-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/export-file-0-start.png -------------------------------------------------------------------------------- /static/img/android/export-file-1-select-export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/export-file-1-select-export.png -------------------------------------------------------------------------------- /static/img/android/export-file-2-choose-location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/export-file-2-choose-location.png -------------------------------------------------------------------------------- /static/img/android/export-file-3-exporting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/export-file-3-exporting.png -------------------------------------------------------------------------------- /static/img/android/export-file-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/export-file-4-finish.png -------------------------------------------------------------------------------- /static/img/android/fast-scroll.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/fast-scroll.gif -------------------------------------------------------------------------------- /static/img/android/launch-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/launch-settings.png -------------------------------------------------------------------------------- /static/img/android/lock-vault-0-lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/lock-vault-0-lock.png -------------------------------------------------------------------------------- /static/img/android/lock-vault-1-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/lock-vault-1-notification.png -------------------------------------------------------------------------------- /static/img/android/lock-vault-2-lock-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/lock-vault-2-lock-start.png -------------------------------------------------------------------------------- /static/img/android/lock-vault-3-select-lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/lock-vault-3-select-lock.png -------------------------------------------------------------------------------- /static/img/android/lock-vault-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/lock-vault-4-finish.png -------------------------------------------------------------------------------- /static/img/android/move-file-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/move-file-0-start.png -------------------------------------------------------------------------------- /static/img/android/move-file-1-select-move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/move-file-1-select-move.png -------------------------------------------------------------------------------- /static/img/android/move-file-2-move-root.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/move-file-2-move-root.png -------------------------------------------------------------------------------- /static/img/android/move-file-3-move-target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/move-file-3-move-target.png -------------------------------------------------------------------------------- /static/img/android/move-file-3-moving.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/move-file-3-moving.png -------------------------------------------------------------------------------- /static/img/android/move-file-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/move-file-4-finish.png -------------------------------------------------------------------------------- /static/img/android/move-file-5-move-folder-hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/move-file-5-move-folder-hint.png -------------------------------------------------------------------------------- /static/img/android/remove-vault-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/remove-vault-0-start.png -------------------------------------------------------------------------------- /static/img/android/remove-vault-1-select-remove-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/remove-vault-1-select-remove-vault.png -------------------------------------------------------------------------------- /static/img/android/remove-vault-2-confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/remove-vault-2-confirmation.png -------------------------------------------------------------------------------- /static/img/android/remove-vault-3-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/remove-vault-3-finish.png -------------------------------------------------------------------------------- /static/img/android/rename-file-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-file-0-start.png -------------------------------------------------------------------------------- /static/img/android/rename-file-1-select-rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-file-1-select-rename.png -------------------------------------------------------------------------------- /static/img/android/rename-file-2-rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-file-2-rename.png -------------------------------------------------------------------------------- /static/img/android/rename-file-3-renaming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-file-3-renaming.png -------------------------------------------------------------------------------- /static/img/android/rename-file-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-file-4-finish.png -------------------------------------------------------------------------------- /static/img/android/rename-vault-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-vault-0-start.png -------------------------------------------------------------------------------- /static/img/android/rename-vault-1-select-rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-vault-1-select-rename.png -------------------------------------------------------------------------------- /static/img/android/rename-vault-2-edit-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-vault-2-edit-name.png -------------------------------------------------------------------------------- /static/img/android/rename-vault-3-renaming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-vault-3-renaming.png -------------------------------------------------------------------------------- /static/img/android/rename-vault-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/rename-vault-4-finish.png -------------------------------------------------------------------------------- /static/img/android/search-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/search-0-start.png -------------------------------------------------------------------------------- /static/img/android/search-1-searched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/search-1-searched.png -------------------------------------------------------------------------------- /static/img/android/search-2-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/search-2-finish.png -------------------------------------------------------------------------------- /static/img/android/search-glob-pattern.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/search-glob-pattern.gif -------------------------------------------------------------------------------- /static/img/android/search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/search.gif -------------------------------------------------------------------------------- /static/img/android/setting-app-obscured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/setting-app-obscured.png -------------------------------------------------------------------------------- /static/img/android/setting-cloud-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/setting-cloud-services.png -------------------------------------------------------------------------------- /static/img/android/setting-fingerprint-0-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/setting-fingerprint-0-setup.png -------------------------------------------------------------------------------- /static/img/android/setting-fingerprint-1-enter-pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/setting-fingerprint-1-enter-pw.png -------------------------------------------------------------------------------- /static/img/android/setting-fingerprint-2-authenticate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/setting-fingerprint-2-authenticate.png -------------------------------------------------------------------------------- /static/img/android/setting-fingerprint-3-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/setting-fingerprint-3-finish.png -------------------------------------------------------------------------------- /static/img/android/setting-style-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/setting-style-dark.png -------------------------------------------------------------------------------- /static/img/android/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/settings.png -------------------------------------------------------------------------------- /static/img/android/share-file-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-file-0-start.png -------------------------------------------------------------------------------- /static/img/android/share-file-1-select-share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-file-1-select-share.png -------------------------------------------------------------------------------- /static/img/android/share-file-2-select-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-file-2-select-app.png -------------------------------------------------------------------------------- /static/img/android/share-with-cm-0-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-with-cm-0-start.png -------------------------------------------------------------------------------- /static/img/android/share-with-cm-1-choose-cm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-with-cm-1-choose-cm.png -------------------------------------------------------------------------------- /static/img/android/share-with-cm-2-select-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-with-cm-2-select-vault.png -------------------------------------------------------------------------------- /static/img/android/share-with-cm-3-uploading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-with-cm-3-uploading.png -------------------------------------------------------------------------------- /static/img/android/share-with-cm-4-finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/share-with-cm-4-finish.png -------------------------------------------------------------------------------- /static/img/android/sort.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/sort.gif -------------------------------------------------------------------------------- /static/img/android/unlock-vault-0-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/unlock-vault-0-select.png -------------------------------------------------------------------------------- /static/img/android/unlock-vault-1-using-password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/unlock-vault-1-using-password.png -------------------------------------------------------------------------------- /static/img/android/unlock-vault-2-using-fingerprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/unlock-vault-2-using-fingerprint.png -------------------------------------------------------------------------------- /static/img/android/unlock-vault-3-loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/unlock-vault-3-loading.png -------------------------------------------------------------------------------- /static/img/android/unlock-vault-4-unlocked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/android/unlock-vault-4-unlocked.png -------------------------------------------------------------------------------- /static/img/desktop/add-vault-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/add-vault-1.png -------------------------------------------------------------------------------- /static/img/desktop/add-vault-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/add-vault-2.png -------------------------------------------------------------------------------- /static/img/desktop/add-vault-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/add-vault-3.png -------------------------------------------------------------------------------- /static/img/desktop/add-vault-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/add-vault-4.png -------------------------------------------------------------------------------- /static/img/desktop/add-vault-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/add-vault-5.png -------------------------------------------------------------------------------- /static/img/desktop/add-vault-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/add-vault-6.png -------------------------------------------------------------------------------- /static/img/desktop/change-password-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/change-password-prompt.png -------------------------------------------------------------------------------- /static/img/desktop/create-or-open-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/create-or-open-vault.png -------------------------------------------------------------------------------- /static/img/desktop/decrypt-file-names.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/decrypt-file-names.png -------------------------------------------------------------------------------- /static/img/desktop/empty-vault-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/empty-vault-list.png -------------------------------------------------------------------------------- /static/img/desktop/error-dialog-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/error-dialog-1.png -------------------------------------------------------------------------------- /static/img/desktop/error-dialog-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/error-dialog-2.png -------------------------------------------------------------------------------- /static/img/desktop/error-dialog-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/error-dialog-3.png -------------------------------------------------------------------------------- /static/img/desktop/event-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/event-view.png -------------------------------------------------------------------------------- /static/img/desktop/move-vaults.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/move-vaults.gif -------------------------------------------------------------------------------- /static/img/desktop/preferences-virtual-drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/preferences-virtual-drive.png -------------------------------------------------------------------------------- /static/img/desktop/recoverykey-recover-enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/recoverykey-recover-enter.png -------------------------------------------------------------------------------- /static/img/desktop/recoverykey-recover-valid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/recoverykey-recover-valid.png -------------------------------------------------------------------------------- /static/img/desktop/recoverykey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/recoverykey.png -------------------------------------------------------------------------------- /static/img/desktop/unlock-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/unlock-prompt.png -------------------------------------------------------------------------------- /static/img/desktop/unlock-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/unlock-success.png -------------------------------------------------------------------------------- /static/img/desktop/vault-detail-locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/vault-detail-locked.png -------------------------------------------------------------------------------- /static/img/desktop/vault-detail-unlocked-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/vault-detail-unlocked-simple.png -------------------------------------------------------------------------------- /static/img/desktop/vault-detail-unlocked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/vault-detail-unlocked.png -------------------------------------------------------------------------------- /static/img/desktop/vault-options-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/vault-options-general.png -------------------------------------------------------------------------------- /static/img/desktop/vault-options-mounting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/vault-options-mounting.png -------------------------------------------------------------------------------- /static/img/desktop/vault-options-password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/desktop/vault-options-password.png -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/favicon.ico -------------------------------------------------------------------------------- /static/img/hub/access-keycloak-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/access-keycloak-link.png -------------------------------------------------------------------------------- /static/img/hub/account-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/account-setup.png -------------------------------------------------------------------------------- /static/img/hub/admin-area-license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/admin-area-license.png -------------------------------------------------------------------------------- /static/img/hub/auditlogs-filter-events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/auditlogs-filter-events.png -------------------------------------------------------------------------------- /static/img/hub/auditlogs-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/auditlogs-filter.png -------------------------------------------------------------------------------- /static/img/hub/auditlogs-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/auditlogs-overview.png -------------------------------------------------------------------------------- /static/img/hub/billing-active-license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/billing-active-license.png -------------------------------------------------------------------------------- /static/img/hub/billing-community-license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/billing-community-license.png -------------------------------------------------------------------------------- /static/img/hub/create-vault-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/create-vault-download.png -------------------------------------------------------------------------------- /static/img/hub/create-vault-recoverykey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/create-vault-recoverykey.png -------------------------------------------------------------------------------- /static/img/hub/create-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/create-vault.png -------------------------------------------------------------------------------- /static/img/hub/hub-intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/hub-intro.png -------------------------------------------------------------------------------- /static/img/hub/legacy-devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/legacy-devices.png -------------------------------------------------------------------------------- /static/img/hub/profile-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/profile-view.png -------------------------------------------------------------------------------- /static/img/hub/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/settings.png -------------------------------------------------------------------------------- /static/img/hub/trust-device.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/trust-device.png -------------------------------------------------------------------------------- /static/img/hub/unlock-access-denied.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-access-denied.png -------------------------------------------------------------------------------- /static/img/hub/unlock-authenticate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-authenticate.png -------------------------------------------------------------------------------- /static/img/hub/unlock-click-unlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-click-unlock.png -------------------------------------------------------------------------------- /static/img/hub/unlock-register-device-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-register-device-desktop.png -------------------------------------------------------------------------------- /static/img/hub/unlock-register-device-hub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-register-device-hub.png -------------------------------------------------------------------------------- /static/img/hub/unlock-setup-required-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-setup-required-desktop.png -------------------------------------------------------------------------------- /static/img/hub/unlock-setup-required-hub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-setup-required-hub.png -------------------------------------------------------------------------------- /static/img/hub/unlock-successfull-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-successfull-desktop.png -------------------------------------------------------------------------------- /static/img/hub/unlock-successfull-hub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/unlock-successfull-hub.png -------------------------------------------------------------------------------- /static/img/hub/update-permission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/update-permission.png -------------------------------------------------------------------------------- /static/img/hub/vault-details-enter-pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-details-enter-pw.png -------------------------------------------------------------------------------- /static/img/hub/vault-details-owner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-details-owner.png -------------------------------------------------------------------------------- /static/img/hub/vault-details-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-details-search.png -------------------------------------------------------------------------------- /static/img/hub/vault-details-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-details-user.png -------------------------------------------------------------------------------- /static/img/hub/vault-details-with-manage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-details-with-manage.png -------------------------------------------------------------------------------- /static/img/hub/vault-offlinerecovery-step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-offlinerecovery-step1.png -------------------------------------------------------------------------------- /static/img/hub/vault-offlinerecovery-step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-offlinerecovery-step2.png -------------------------------------------------------------------------------- /static/img/hub/vault-offlinerecovery-step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-offlinerecovery-step3.png -------------------------------------------------------------------------------- /static/img/hub/vault-offlinerecovery-step4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-offlinerecovery-step4.png -------------------------------------------------------------------------------- /static/img/hub/vault-offlinerecovery-step5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-offlinerecovery-step5.png -------------------------------------------------------------------------------- /static/img/hub/vault-onlinerecovery-step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-onlinerecovery-step1.png -------------------------------------------------------------------------------- /static/img/hub/vault-onlinerecovery-step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-onlinerecovery-step2.png -------------------------------------------------------------------------------- /static/img/hub/vault-onlinerecovery-step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vault-onlinerecovery-step3.png -------------------------------------------------------------------------------- /static/img/hub/vaultlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/vaultlist.png -------------------------------------------------------------------------------- /static/img/hub/wot-admin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/wot-admin.png -------------------------------------------------------------------------------- /static/img/hub/wot-audit-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/wot-audit-log.png -------------------------------------------------------------------------------- /static/img/hub/wot-carol-unverified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/wot-carol-unverified.png -------------------------------------------------------------------------------- /static/img/hub/wot-carol-verified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/wot-carol-verified.png -------------------------------------------------------------------------------- /static/img/hub/wot-carol-verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/hub/wot-carol-verify.png -------------------------------------------------------------------------------- /static/img/ios/enable-cryptomator-in-files-app-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/ios/enable-cryptomator-in-files-app-01.png -------------------------------------------------------------------------------- /static/img/ios/enable-cryptomator-in-files-app-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/ios/enable-cryptomator-in-files-app-02.png -------------------------------------------------------------------------------- /static/img/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/og-image.png -------------------------------------------------------------------------------- /static/img/security/file-content-encryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/file-content-encryption.png -------------------------------------------------------------------------------- /static/img/security/file-content-encryption@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/file-content-encryption@2x.png -------------------------------------------------------------------------------- /static/img/security/file-header-encryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/file-header-encryption.png -------------------------------------------------------------------------------- /static/img/security/file-header-encryption@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/file-header-encryption@2x.png -------------------------------------------------------------------------------- /static/img/security/filename-encryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/filename-encryption.png -------------------------------------------------------------------------------- /static/img/security/filename-encryption@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/filename-encryption@2x.png -------------------------------------------------------------------------------- /static/img/security/key-derivation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/key-derivation.png -------------------------------------------------------------------------------- /static/img/security/key-derivation@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/key-derivation@2x.png -------------------------------------------------------------------------------- /static/img/security/masterkey-decryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/masterkey-decryption.png -------------------------------------------------------------------------------- /static/img/security/masterkey-decryption@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/masterkey-decryption@2x.png -------------------------------------------------------------------------------- /static/img/security/verify-gpg-signature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/verify-gpg-signature.png -------------------------------------------------------------------------------- /static/img/security/verify-win-installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/verify-win-installer.png -------------------------------------------------------------------------------- /static/img/security/verify-win-installer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/img/security/verify-win-installer@2x.png -------------------------------------------------------------------------------- /static/vid/locate-encrypted-file.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptomator/docs/a5de6e3e9df0302f6cdefb301111bba2fb56a9b7/static/vid/locate-encrypted-file.mov -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // This file is not used in compilation. It is here just for a nice editor experience. 3 | "extends": "@docusaurus/tsconfig", 4 | "compilerOptions": { 5 | "baseUrl": "." 6 | }, 7 | "exclude": [".docusaurus", "build"] 8 | } 9 | --------------------------------------------------------------------------------