diff --git a/README.md b/README.md index 696d4e34..4772e8a6 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Choose **CouchDB** or **Object Storage** for central storage, or use **WebRTC Pe | **CouchDB (Self-hosted)**
*(Own VPS, NAS, Docker, or Raspberry Pi)* | ✅ Full | ✅ Yes | ⚠️ Requires HTTPS (public or private endpoint)[^private-https] | High (manage OS, Docker, and backups) | Free (on existing hardware) | Users with home servers or private infrastructure | | **CouchDB (Fly.io)**
*(Cloud container PaaS)* | ✅ Full | ✅ Yes | ✅ Out of the box (HTTPS included) | Low (scripted setup via notebook) | ~USD 2.34 / mo in Ashburn[^fly-pricing]
*(see [cost details](docs/setup_flyio.md#costs-before-deployment))* | Users wanting real-time sync without managing hardware | | **Object Storage (S3 / R2)**
*(Cloudflare R2, AWS S3, or MinIO)* | ❌ Periodic or on-save only | ✅ Yes | Managed services: HTTPS included
Self-hosted: configure HTTPS | Managed services: bucket configuration
Self-hosted: manage the server and backups | USD 0.00 within R2 free allowances[^r2-pricing]
*(see [cost guide](docs/setup_object_storage_costs.md))* | Users who prefer Object Storage without server maintenance | -| **WebRTC Peer-to-Peer**
*(Direct device-to-device)* | ✅ Full *(while connected)* | ❌ Both devices must be online | ⚠️ Limited by OS background tasks | None (free public signalling relay) | Completely Free | Users who prefer no central storage server | +| **WebRTC Peer-to-Peer**
*(Direct device-to-device)* | ✅ Full *(while connected)* | ❌ Both devices must be online | ⚠️ Limited by OS background tasks | None (free public signalling relay) | Free (no server required) | Users who prefer no central storage server | > [!NOTE] > **How Object Storage request counts affect costs**: diff --git a/docs/glossary.md b/docs/glossary.md index a498ce5e..d1b87686 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -102,6 +102,12 @@ recovery guidance, or diagnostics intended for users. CouchDB or Object Storage remote, with the current device first. Records describe participation, not current online activity. **Forget device** removes an obsolete device record; it does not delete Vault files or revoke credentials. +- **Journal / Journal Sync:** The synchronisation mechanism used with + S3-compatible Object Storage and non-database remotes. Rather than + transferring individual files directly, Self-hosted LiveSync groups database + changes (Metadata documents and content Chunks) into compressed, time-stamped + journal packages. Devices track their synchronisation sequence using markers + and exchange only missing packages. - **JWT Authentication:** An experimental CouchDB authentication option which uses a JSON Web Token instead of standard credentials. It requires a private key or secret, algorithm, expiry duration, subject, and key ID. diff --git a/docs/setup_object_storage.md b/docs/setup_object_storage.md index 8a8b5728..9e07e571 100644 --- a/docs/setup_object_storage.md +++ b/docs/setup_object_storage.md @@ -14,7 +14,7 @@ Prepare the following: - an access key and secret key with access to the selected bucket; - a bucket name and region; - a unique bucket prefix when the bucket is shared or reserved for this Vault; -- CORS configuration permitting Obsidian's web origins (`app://obsidian.md`, `capacitor://localhost`, `http://localhost`) with `ETag` exposed; and +- CORS configuration permitting Obsidian's web origins (`app://obsidian.md`, `capacitor://localhost`, `http://localhost`) with `ETag` exposed (or enable `Use internal API` during setup to bypass CORS restrictions); and - separate passphrases for Vault encryption and Setup URI encryption. Back up every Vault involved, and do not use Obsidian Sync, iCloud synchronisation, or another synchronisation service on the same Vault. @@ -32,9 +32,13 @@ Match your storage service credentials to the plug-in setup fields: | Region specified by the provider (e.g., `auto` for R2) | `Region` | `region` | | Folder prefix reserved for this Vault, such as `my-vault/` | `Folder Prefix` | `bucket_prefix` | | Path-style addressing (required by some servers like MinIO) | `Use Path-Style Access` | `force_path_style` | +| Bypass CORS via Obsidian's native request API | `Use internal API` | `use_custom_request_handler` | ## Generate the initial Setup URI +> [!TIP] +> If you prefer to configure settings directly in Obsidian rather than using the command-line Setup URI generator, see [Configure the first device manually](#configure-the-first-device-manually). + The public generator applies the Object Storage preset and records the connection as the selected remote profile. Run it from a trusted terminal: ```sh @@ -131,7 +135,7 @@ If you prefer to configure settings directly in Obsidian rather than using the D 3. Configure `End-to-End Encryption` and enter a strong Vault encryption passphrase. Save this passphrase securely. 4. Select the S3-compatible Object Storage option and proceed to `S3/MinIO/R2 Configuration`. 5. Enter your bucket settings using the [Setting fields reference](#setting-fields-reference) table above. -6. Select `Test Settings and Continue`. If the connection test fails, verify the API endpoint, credentials, bucket permissions, region, and CORS configuration. +6. Select `Test Settings and Continue`. If the connection test fails, verify the API endpoint, credentials, bucket permissions, and region. If CORS blocks the request or cannot be configured on your bucket, enable `Use internal API` to route requests through Obsidian's native HTTP handler. 7. Proceed to `Restart and Initialise Server`, then complete the confirmation steps as described in [Set up the first device](#set-up-the-first-device). 8. Once your test note synchronises, follow [Generate the second-device Setup URI](#generate-the-second-device-setup-uri) to connect subsequent devices easily.