DevOps
Syncing your Obsidian
Luiz Carlos Martins Filho DEV Community
3 views
There are several ways to sync Obsidian, but I decided to document the method I chose, both so I don't forget the details in the future and to help anyone else looking for their own sync solution.
For this project, we'll use the Obsidian LiveSync plugin:
vrtmrz/obsidian-livesync
Creating a VPS on MagaluCloud
For the server, I'll create a VPS on MagaluCloud. I'll do the whole process manually, through the console, but it's possible to do everything using the mgc (MagaluCloud cli).
Open the console. To create a new virtual machine, click on Virtual Machines:
On the Virtual Machines page, click Create Instance:
Select the desired Availability Zone (in this example, I chose br-se1-a) and also the Operating System. Here I'll go with Debian 13 LTS:
For the server, we can go with the cheapest option! I chose the instance with 1 vCPU and 1 GB of RAM (BV1-1-20). The only detail is storage; for safety, I chose a 20 GB local disk.
Don't forget to leave the option checked to assign a public IPv4 address to the instance. To access the machine, select an existing SSH key (if you already have one). Otherwise, add a new public key. If you don't have one yet, the documentation can help. Keep the generated keys safe, because losing them will prevent access to the machine! Finally, give the instance a descriptive name and click Create instance.
Configuring the server
Access the newly created server with ssh:
ssh debian@your-ip-here.com
For this project, we'll need Docker installed. The installation steps were taken from the project's documentation. Run each command below individually to add Docker's repository to your server:
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
After adding Docker's official repository with the commands above, install the necessary tools:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
With Docker installed, create a directory to separate your data and configuration:
mkdir -p ~/obsidian-livesync/{couchdb-data,config}
cd ~/obsidian-livesync
Create the file ~/obsidian-livesync/config/local.ini and add the following configuration:
[couchdb]
single_node=true
max_document_size = 50000000 ; 50MB (Adjust based on your note size needs)
[chttpd]
require_valid_user = true
max_http_request_size = 4294967296 ; 4GB (Necessary for large sync batches)
enable_cors = true
[chttpd_auth]
require_valid_user = true
authentication_redirect = /_utils/session.html
[httpd]
WWW-Authenticate = Basic realm="administrator"
enable_cors = true
[cors]
origins = app://obsidian.md,capacitor://localhost,http://localhost
credentials = true
headers = accept, authorization, content-type, origin, referer
methods = GET, PUT, POST, HEAD, DELETE
max_age = 3600
To install CouchDB, we'll use a docker compose:
version: '3.8'
services:
couchdb:
image: couchdb:latest
container_name: livesync-couchdb
restart: always
environment:
- COUCHDB_USER=admin
- COUCHDB_PASSWORD=YOUR_STRONG_PASSWORD_HERE
volumes:
- ./couchdb-data:/opt/couchdb/data
- ./config/local.ini:/opt/couchdb/etc/local.d/local.ini
ports:
- "127.0.0.1:5984:5984" # Expose only to localhost, Caddy handles external traffic
caddy:
image: caddy:latest
container_name: livesync-caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
depends_on:
- couchdb
volumes:
caddy_data:
caddy_config:
Don't forget to change your database password in the file above. Choose a strong password!
To handle the reverse proxy and digital certificate, we'll use Caddy. Create the file ~/obsidian-livesync/Caddyfile and add the following configuration, adjusting the domain:
obsidian.yourdomain.com {
reverse_proxy couchdb:5984
}
Bring the stack up with:
docker compose up -d
Now let's create a database called obsidian. You're free to use any name here:
curl -X PUT -u admin http://127.0.0.1:5984/obsidian
Enter the username and password defined in the file ~/obsidian-livesync/config/local.ini.
Configuring the client
Install the Self-hosted LiveSync Plugin after enabling Community Plugins.
Setup Wizard:
Open the Plugin Settings
Select Remote Database Configuration
Configure the following fields:
URI: https://obsidian.yourdomain.com
Username: admin
Password: YOUR_STRONG_PASSWORD_HERE
Database Name: obsidian
End-to-End Encryption: Enabled (Recommended! A new password will be used for encryption!)
Test: Click "Test Connection". If successful, apply the settings.
Read original: https://dev.to/lcmartinsfilho/syncing-your-obsidian-2o2
← Previous
How to Bulk Download Images: From URL Lists to a ZIP File
Next →
I banned Claude from saying 'looks reasonable' and it started finding my blind spots
Related
Mastering Advanced Server-Side Caching Patterns in Next.js 14
DevOps
5
Dev.to (EN Zone)
Moving Off PaaS: Deploying Production Laravel Stacks with Kamal 2
DevOps
3
Dev.to (EN Zone)
Digitale Souveränität: Europas Weg zur Infra-Unabhängigkeit
DevOps
4
Dev.to (EN Zone)
Running a nested Proxmox homelab and Docker development on the same Windows machine
DevOps
6
DEV Community
Comments0
No comments yet — be the first