migrate
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
---
|
||||
tags:
|
||||
- Documentation
|
||||
- Bookstack
|
||||
- Notes
|
||||
---
|
||||
# Obsidian
|
||||
|
||||
# Setup
|
||||
|
||||
Here is a clean, professional, and well-structured Markdown guide for your Obsidian Self-Hosted LiveSync documentation.
|
||||
|
||||
I have organized the configuration into logical, step-by-step technical phases, cleaned up syntax formatting (such as fixing case sensitivity in commands like `docker exec`), and added visual callouts for important warnings and credentials.
|
||||
|
||||
# Obsidian Self-Hosted LiveSync Configuration Guide
|
||||
|
||||
This guide details the deployment of a self-hosted CouchDB instance using Docker Compose and the generation of configuration URIs to enable cross-device synchronization for Obsidian.
|
||||
|
||||
## 1. Prerequisites
|
||||
|
||||
- A reverse proxy (e.g., Nginx Proxy Manager, Cloudflare Tunnels, or Caddy) configured to route external traffic to your container.
|
||||
- SSL/TLS certificate configured for your sync domain: `https://obsidian.mikemcfetridge.com`
|
||||
|
||||
## 2. Database Deployment (Docker Compose)
|
||||
|
||||
Deploy the specialized CouchDB image tailored for Obsidian LiveSync. Create a `docker-compose.yml` file in your directory and add the service definition below:
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-88 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-yaml"><div class="formatted-code-block-internal-container ng-tns-c1605810258-88"><div class="animated-opacity ng-tns-c1605810258-88"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-88 ng-star-inserted"><span class="ng-tns-c1605810258-88">YAML</span><div class="buttons ng-tns-c1605810258-88 ng-star-inserted"></div></div></div></div></div>```
|
||||
services:
|
||||
couchdb-obsidian-livesync:
|
||||
image: 'docker.io/oleduc/docker-obsidian-livesync-couchdb:master'
|
||||
container_name: couchdb-obsidian-livesync
|
||||
restart: always
|
||||
ports:
|
||||
- '5984:5984'
|
||||
environment:
|
||||
- COUCHDB_DATABASE=obsidian
|
||||
- COUCHDB_USER=miker
|
||||
- COUCHDB_PASSWORD=tw9222dvO91ZHb
|
||||
- SERVER_DOMAIN=https://obsidian.mikemcfetridge.com
|
||||
volumes:
|
||||
- ./data:/opt/couchdb/data
|
||||
|
||||
```
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-88 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--1"><div class="formatted-code-block-internal-container ng-tns-c1605810258-88"><div class="animated-opacity ng-tns-c1605810258-88"></div></div></div>### Deployment Verification
|
||||
|
||||
1. Launch the container stack in detached mode:
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-89 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c1605810258-89"><div class="animated-opacity ng-tns-c1605810258-89"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-89 ng-star-inserted"><span class="ng-tns-c1605810258-89">Bash</span><div class="buttons ng-tns-c1605810258-89 ng-star-inserted"></div></div></div></div></div>```
|
||||
docker compose up -d
|
||||
|
||||
```
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-89 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c1605810258-89"><div class="animated-opacity ng-tns-c1605810258-89"></div></div></div>
|
||||
2. Validate that the CouchDB instance is active and accessible via the web administration console by navigating to: `https://obsidian.mikemcfetridge.com/_utils`
|
||||
|
||||
## 3. Generate the Client Setup URI
|
||||
|
||||
To easily provision your desktop and mobile clients, log into the running container environment to generate an encrypted initialization URI using Deno.
|
||||
|
||||
### Step 1: Open an Interactive Terminal in the Container
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-90 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash"><div class="formatted-code-block-internal-container ng-tns-c1605810258-90"><div class="animated-opacity ng-tns-c1605810258-90"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-90 ng-star-inserted"><span class="ng-tns-c1605810258-90">Bash</span><div class="buttons ng-tns-c1605810258-90 ng-star-inserted"></div></div></div></div></div>```
|
||||
docker exec -it couchdb-obsidian-livesync /bin/bash
|
||||
|
||||
```
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-90 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--4"><div class="formatted-code-block-internal-container ng-tns-c1605810258-90"><div class="animated-opacity ng-tns-c1605810258-90"></div></div></div>### Step 2: Configure Environment Variables & Run the Generator Script
|
||||
|
||||
Paste the following block into the container terminal to set up the runtime environment and execute the configuration tool:
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-91 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash-1"><div class="formatted-code-block-internal-container ng-tns-c1605810258-91"><div class="animated-opacity ng-tns-c1605810258-91"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-91 ng-star-inserted"><span class="ng-tns-c1605810258-91">Bash</span><div class="buttons ng-tns-c1605810258-91 ng-star-inserted"></div></div></div></div></div>```
|
||||
export hostname=https://obsidian.mikemcfetridge.com
|
||||
export database=obsidian
|
||||
export username=miker
|
||||
export password=tw9222dvO91ZHb
|
||||
export passphrase=7ixpCPi5OEDF6J
|
||||
|
||||
# Execute the setup URI generator script
|
||||
deno run -A https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/flyio/generate_setupuri.ts
|
||||
|
||||
```
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-91 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--7"><div class="formatted-code-block-internal-container ng-tns-c1605810258-91"><div class="animated-opacity ng-tns-c1605810258-91"></div></div></div>### Step 3: Capture the Output
|
||||
|
||||
The script will output your specific **Setup-URI Passphrase** and the **Obsidian configuration string**.
|
||||
|
||||
> ⚠️ **Important:** The text passphrase generated by the script will **never** be shown again. Save it immediately in a secure location.
|
||||
|
||||
*Example Output:*
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-92 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-plaintext"><div class="formatted-code-block-internal-container ng-tns-c1605810258-92"><div class="animated-opacity ng-tns-c1605810258-92"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-92 ng-star-inserted"><span class="ng-tns-c1605810258-92">Plaintext</span><div class="buttons ng-tns-c1605810258-92 ng-star-inserted"></div></div></div></div></div>```
|
||||
Your passphrase of Setup-URI is: little-shadow
|
||||
|
||||
obsidian://setuplivesync?settings=%25dcc45454e4eda1f3feb43f050100000041732c3c957c9bac41a96df3040ab6b5uEIf1EWiXa%2BgGabAhHBCF9wkHfvj%2BwSfHlZOctmyUYdDfqwkIfbibE4yge9uNaARqtixj4OZH9XZs3S4cjRclUNvpZiqsq46SOniGB9X2Svk58HFcwfNaW67mNQLQn2cSWRwvN9SudeqVWiLjWKczz6DWBcYGwwsyO%2BLxnw86txKZBC6yE2AaY%2B2dz%2F0qWQBZaxh%2FCJWjxPyRGewUhfUbZnuLQmtu0RY%2FfYgVQQZ%2FNvzmmUpSrpFeJq%2BYP%2F3V1w9PmVNSiDo62a9rnWjjBpk0ffQGxuNEb36Tu9i%2BrRKROnz4T3nsOX6IWZJd4WhuljboUsz9dKHwcNSsDFyNDFx3XMPcjaFO1%2BcMulxP8zJh%2BS3p%2BNrvg5kdsM0%2BGsg%2F29mMUnbFXXETdIAX62Jb%2FhuuRaOy0Cwjccpg02tpXc6HGj7tZCXh1fh4EPNUK09QmkzDOtIcb33yva%2FMNCzY9cVr0TCLr2MVLlnRR9P1sQkGCDTqI0NJvG1B0FvGE3XASBQpCKQH1XnED0z5IFsTH4m8gjHbR2XtDaTbFqNA%2BL9cGjztPXKa0g8xD0mruF5uH1zCp0sELD%2Fghw%2FsXUYcCPt7gmVryU9ioFzjRVt7UTexFpr50ZPOfOfVwfy3FCHk4lCNDREeHdstj2EI19lyBL4NyVuIt5%2FqE%2FaOib04ZefjsTETB%2F7rdbblwebgD1Il%2FWPjtL3uKyxiM11W6pUQtXiT7CvoXfu3rf9K5%2FihFjiomY08xYb60Q1LyIjhG1SIB%2BsvS7Vc9qzyGFW1JdQUEWz3IFpX7QVuk1ZX2uovJiAqwD4eTp0xIUXPNLmeTbQ0rFeKd8yYR6DpMLejkWedW9x%2FxL0q62yvlXsOuAKhQLOgPRQ3A%3D%3D
|
||||
|
||||
```
|
||||
|
||||
<div class="code-block ng-tns-c1605810258-92 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--10"><div class="formatted-code-block-internal-container ng-tns-c1605810258-92"><div class="animated-opacity ng-tns-c1605810258-92"></div></div></div>## 4. Client Plugin Provisioning
|
||||
|
||||
Repeat these final configuration steps across each device (Desktop, Mobile, or Tablet) you intend to synchronize.
|
||||
|
||||
1. **Install Plugin:** Ensure the community plugin **Self-hosted LiveSync** is installed and enabled inside your Obsidian client.
|
||||
2. **Import Settings:** Open the Obsidian Command Palette (`Ctrl+P` or `Cmd+P`), choose **Self-hosted LiveSync: Use the copied setup URI**, and paste your full `obsidian://setuplivesync?settings=...` string.
|
||||
3. **Authenticate:** Provide the setup-uri text passphrase generated in Section 3 when prompted.
|
||||
4. **Initialize:** Click **Yes** when prompted to initiate the storage sync configuration sequence. Select **Keep them disabled** during the initial sync dialogue if you wish to configure sync intervals manually later.
|
||||
5. **Finalize:** Reload the Obsidian application to apply and activate the synchronization backend.
|
||||
Reference in New Issue
Block a user