Go to file
fyears c04876e0c5 A big commit Squashed commit of CORS:
commit 8cffa38ebae2a46b7c8e855c7b21a124e35adc89
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Thu Mar 10 23:52:56 2022 +0800

    bypass more cors for onedrive

commit 1b59ac1e58032099068aab55d22ef96c6396f203
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 23:58:28 2022 +0800

    change wordings for webdav cors

commit 73142eb18b59fff20839680e866f51cfcb0a6226
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 23:38:58 2022 +0800

    remove cors hint for webdav

commit 7dbb0b49d50e529b2b72e55ea2c8503ba7fa9268
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 23:31:54 2022 +0800

    fix webdav

commit c28c4e19720a56230d483acf306463d42e619fa4
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 23:31:35 2022 +0800

    remove more headers

commit 4eeae7043fa68d669a5c23c5549c14c1260ce638
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 23:18:32 2022 +0800

    polish cors hints for s3

commit d9e55a91a1c413e9419cd6b30a3a6e3b403d483b
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 22:40:37 2022 +0800

    fix format

commit b780a3eb4e37b05b8e8b92d6a2f9283b3459d738
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 22:37:02 2022 +0800

    finally correctly inject requestUrl into s3

commit 6a55a1a43d7653d65579ab88aa816e5d54cd276a
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 22:33:18 2022 +0800

    to arraybuffer from view

commit 2f2607b4f0a3d9db5943528ced57cb2fdb419607
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Wed Mar 9 13:31:22 2022 +0800

    add split ranges

commit ea24da24dea83fdb770e7e391cf8a2e4fea78d0d
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Sun Mar 6 22:57:50 2022 +0800

    add settings of bypassing for s3

commit 2f099dc8ca1e66ea137b28dd329be50968734ba6
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Sun Mar 6 22:38:07 2022 +0800

    use api ver var

commit 74c7ce2449a88cbe7c7f50cbb687b36ff3732c04
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Sun Mar 6 22:37:25 2022 +0800

    correct way to inject s3

commit f29945d73132d21b2c44472ec2cafc06b9d71e8f
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Tue Mar 1 00:09:57 2022 +0800

    add new http handler

commit d55104cb08e168cbcc243cf901cbd7f46f2e324b
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Mon Feb 28 22:59:55 2022 +0800

    add types for patch

commit 50b79ade7188ee7dfab9c1d03119585db358ba6f
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Mon Feb 28 08:25:19 2022 +0800

    remove verbose

commit 83f0e71aa15aa7586f6d4e105cd77c25c2e113ce
Author: fyears <1142836+fyears@users.noreply.github.com>
Date:   Mon Feb 28 08:25:04 2022 +0800

    patch webdav!
2022-03-10 23:54:35 +08:00
.github add tmpl for fr 2022-02-27 21:14:20 +08:00
assets/branding use loglevel everywhere 2022-01-05 00:23:49 +08:00
docs new sync algo, squashed commit of the following: 2022-02-27 17:54:31 +08:00
src A big commit Squashed commit of CORS: 2022-03-10 23:54:35 +08:00
tests A big commit Squashed commit of CORS: 2022-03-10 23:54:35 +08:00
.editorconfig force editors 2021-10-23 15:48:42 +08:00
.env.example.txt example .env 2022-01-08 01:51:28 +08:00
.gitattributes lfs track more imgs 2021-12-11 22:47:16 +08:00
.gitignore ignore more 2021-11-15 23:36:44 +08:00
.prettierignore ignore data.json 2022-01-16 13:38:00 +08:00
esbuild.config.mjs upgrad msal again 2022-02-12 12:28:47 +08:00
LICENSE add license 2021-10-21 09:53:20 +08:00
manifest.json 0.3.4 2022-03-06 23:16:34 +08:00
package.json A big commit Squashed commit of CORS: 2022-03-10 23:54:35 +08:00
README.md update link 2022-03-06 23:42:13 +08:00
styles.css basically working onedrive 2021-12-29 00:35:46 +08:00
tsconfig.json esbuild is way faster 2021-11-27 14:49:07 +08:00
versions.json 0.3.4 2022-03-06 23:16:34 +08:00
webpack.config.js upgrad msal again 2022-02-12 12:28:47 +08:00

Remotely Save

This is yet another unofficial sync plugin for Obsidian. If you like it or find it useful, please consider give it a star GitHub Repo stars on Github.

BuildCI

total downloads auto count

downloads of latest version

Disclaimer

!!!Caution!!!

As of Jan 2022, the plugin is considered in BETA stage. DO NOT USE IT for any serious vaults. ALWAYS, ALWAYS, backup your vault before using this plugin.

Features

  • Supports:
    • Amazon S3 or S3-compatible
    • Dropbox
    • OneDrive for personal
    • Webdav
    • A list of connectable / not-connectable / in-the-plan / never-possible services are noted down here.
  • Obsidian Mobile supported. Vaults can be synced across mobile and desktop devices with the cloud service as the "broker".
  • End-to-end encryption supported. Files would be encrypted using openssl format before being sent to the cloud if user specify a password.
  • Scheduled auto sync supported. You can also manually trigger the sync using sidebar ribbon, or using the command from the command palette (or even bind the hot key combination to the command then press the hot key combination).
  • Minimal Intrusive.
  • Fully open source under Apache-2.0 License.
  • Sync Algorithm open for discussion.

Limitations

  • To support deltions sync, extra metadata will also be uploaded. See Minimal Intrusive.
  • No Conflict resolution. No content-diff-and-patch algorithm. All files and folders are compared using their local and remote "last modified time" and those with later "last modified time" wins.
  • Cloud services cost you money. Always be aware of the costs and pricing.
  • All files or folder starting with . (dot) or _ (underscore) are treated as hidden files, and would NOT be synced. It's useful if you have some files just staying locally. But this strategy also means that themes / other plugins / settings of this plugin would neither be synced.
  • Some limitations from the browser environment. More technical details are in the doc.

Questions, Suggestions, Or Bugs

You are greatly welcome to ask questions, post any suggestions, or report any bugs! The project is mainly maintained on GitHub:

Additionally, the plugin author may occasionally visit Obsidian official forum and official Discord server, and pay attention to this-plugin-related information there.

Download and Install

  • Option #1: Search in the official "community plugin list", or visit this: https://obsidian.md/plugins?id=remotely-save (which should redirect you into Obsidian app), then install the plugin.
  • Option #2: You can also use Obsidian42 - BRAT to install this plugin. Input fyears/remotely-save in the configuration of BRAT.
  • Option #3: GitHub release (latest by SemVer and asset including pre-releases) Manually download assets (main.js, manifest.json, styles.css) from the latest release.
  • Option #4: BuildCI Every artifacts are placed in the "Summary" under every successful builds. It's automatically generated by every commit, may break something.

Usage

S3

  • Prepare your S3 (-compatible) service information: endpoint, region, access key id, secret access key, bucket name. The bucket should be empty and solely for syncing a vault.
  • Configure (enable) CORS for requests from app://obsidian.md and capacitor://localhost and http://localhost. Full example is here. It's unfortunately required, because the plugin sends requests from a browser-like envirement. And those addresses are tested and found on desktop and ios and android.
  • Download and enable this plugin.
  • Enter your information to the settings of this plugin.
  • If you want to enable end-to-end encryption, also set a password in settings. If you do not specify a password, the files and folders are synced in plain, original content to the cloud.
  • Click the new "circle arrow" icon on the ribbon (the left sidebar), every time you want to sync your vault between local and remote. (Or, you could configure auto sync in the settings panel (See next chapter).) While syncing, the icon becomes "two half-circle arrows". Besides clicking the icon on the sidebar ribbon, you can also activate the corresponding command in the command palette.
  • Be patient while syncing. Especially in the first-time sync.

Dropbox

  • This plugin's function for Dropbox is not as mature as functions for S3.
  • This plugin is NOT an official Dropbox product. The plugin just uses Dropbox's public API.
  • After the authorization, the plugin can read your name and email (which cannot be unselected on Dropbox api), and read and write files in your Dropbox's /Apps/remotely-save folder.
  • If you decide to authorize this plugin to connect to Dropbox, please go to plugin's settings, and choose Dropbox then follow the instructions.
  • Password-based end-to-end encryption is also supported. But please be aware that the vault name itself is not encrypted.

OneDrive for personal

  • This plugin's function for OneDrive is not as mature as functions for S3.
  • This plugin is NOT an official Microsoft / OneDrive product. The plugin just uses Microsoft's OneDrive's public API.
  • This plugin only works for "OneDrive for personal", and not works for "OneDrive for Business" (yet). See #11 to further details.
  • After the authorization, the plugin can read your name and email, and read and write files in your OneDrive's /Apps/remotely-save folder.
  • If you decide to authorize this plugin to connect to OneDrive, please go to plugin's settings, and choose OneDrive then follow the instructions.
  • Password-based end-to-end encryption is also supported. But please be aware that the vault name itself is not encrypted.

webdav

  • webdav support is considered experimental.
  • Currently only supports BASIC authorization method.
  • Currently webdav server has to be enabled CORS for requests from app://obsidian.md and capacitor://localhost and http://localhost, AND all webdav HTTP methods, AND all webdav headers. These are required, because Obsidian mobile works like a browser and mobile plugins are limited by CORS policies.
    • Popular software NextCloud, OwnCloud, rclone serve webdav do NOT enable CORS by default. If you are using any of them, you should evaluate the risk, and find a way to enable CORS, before using this plugin.
    • The plugin is tested successfully under python package wsgidav (version 4.0). See this issue for some details.
  • Your data would be synced to a ${vaultName} sub folder on your webdav server.
  • Password-based end-to-end encryption is also supported. But please be aware that the vault name itself is not encrypted.

Scheduled Auto Sync

  • You can configure auto syncing every N minutes in settings.
  • In auto sync mode, if any error occurs, the plugin would fail silently.
  • Auto sync only works when Obsidian is being opened. It's technically impossible to auto sync while Obsidian is in background, because the plugin just works in the browser environment provided by Obsidian.

Bonus: Import And Export Not-Oauth2 Plugin Settings By QR Code

See here for more details.