Synchroniser Obsidian via CouchDB
Rédigé par Alexandre le 2024-10-07
Comme j'ai pu le dire dans un précédent article, je n'aime pas docker mais trouve en podman une alternative acceptable. Aussi dans cet article, je vais utiliser podman pour créer un conteneur CouchDB, permettant la synchronisation d'Obsidian via le plugin Self-hosted LiveSync.
Je fais cet article avant tout parce que la procédure d'installation fourni par le développeur n'est pas clair pour quiconque ne souhaite pas passer par fly.io.
CouchDB
Créer un utilisateur dédié :
$ sudo adduser podman-couchdb
Se connecter en tant que cet utilisateur :
$ sudo machinectl shell --uid podman-couchdb
Créer le stockage persistant des données :
$ mkdir -p /srv/couchdb/{data,etc/local.d}
$ chown -R podman-couchdb: /srv/couchdb
Ouvrir le fichier de définition du conteneur :
$ mkdir -p ~/.config/containers/systemd/
$ vim ~/.config/containers/systemd/couchdb.container
Insérer les lignes suivantes en remplacer les éléments :
<utilisateur>
: le compte d'administration de CouchDB<mot_de_passe>
: le mot de passe du compte d'administration de CouchDB
[Container]
ContainerName=couchdb
Environment=COUCHDB_USER=<utilisateur>
Environment=COUCHDB_PASSWORD=<mot_de_passe>
HostName=obsidian.gaia.ykn.fr
Image=docker.io/couchdb:latest
PublishPort=5984:5984/tcp
Volume=/srv/couchdb/data:/opt/couchdb/data
Volume=/srv/couchdb/etc:/opt/couchdb/etc/local.d
AutoUpdate=registry
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
Démarrer le conteneur :
$ systemctl --user start couchdb.service
Se déconnecter du compte utilisateur (exit
ou les touches CTRL
+ d
).
Initialiser CouchDB
Définir quelque variables :
<utilisateur>
: le compte d'administration de CouchDB<mot_de_passe>
: le mot de passe du compte d'administration de CouchDB
$ export hostname=localhost:5984; \
export username=<utilisateur>; \
export password=<mot_de_passe>
Utiliser le script créé par l'auteur du plugin :
$ curl -s https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/couchdb/couchdb-init.sh | sudo bash
La sortie doit ressembler à ceci :
-- Configuring CouchDB by REST APIs... -->
{"ok":true}
""
""
""
""
""
""
""
""
""
<-- Configuring CouchDB by REST APIs Done!
Exposer CouchDB sur internet
Ici je ne détail pas les différentes étapes étant donné qu'il y a plusieurs façon de faire. Pour ma part, j'utilise haproxy.
Une information importante donnée par le plugin et la documentation officielle, il faut accéder à votre CouchDB via https pour que le plugin fonctionne correctement sur iOS/Android.
Créer un vault
Le vault est l'élément chiffré de bout-en-bout qui héberge les données qu'Obsidian envoie. Résumé très grossièrement, il peut-être vu comme un espace utilisateur.
La configuration du vault se fait automatiquement à l'aide d'un script réalisé par l'auteur du plugin de synchronisation. L'utilisation du script passe par l'utilitaire deno que j'ai choisi de lancer depuis un conteneur podman (c'est jetable) sur mon poste de travail (Fedora embarque podman).
Télécharger, lancer et ouvrir un terminal dans le coteneur :
podman run -it denoland/deno:latest bash
Définir quelque variables :
<utilisateur>
: le compte d'administration de CouchDB<mot_de_passe>
: le mot de passe du compte d'administration de CouchDB<couchdb_url>
: URL d'accès à CouchDB (exemple :https://couchdb.ykn.local
)<nom_du_vault>
: nom du vault (exemple :alexandre
)<phrase_de_passe>
: permet de (dé)chiffrer le vault
$ export username=<utilisateur>; \
export password=<mot_de_passe>; \
export hostname=<couchdb_url>; \
export database=<nom_du_vault>; \
export passphrase=<phrase_de_passe>
Utiliser le script de l'auteur du plugin pour créer le vault sur CouchDB et obtenir les informations de configuration du plugin :
deno run -A https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/flyio/generate_setupuri.ts
Le retour du script ressemble à quelque chose comme ci-après qu'il faut impérativement sauvegarder dans un gestionnaire de mot de passe pour pouvoir vous connecter :
obsidian://setuplivesync?settings=%253bef03...pjQnS8g%3D%3D
Your passphrase of Setup-URI is: dry-shadow
This passphrase is never shown again, so please note it in a safe place.
Ajouter le plugin
Ouvrir Obsidian :
- Accéder aux paramètres
- Cliquer sur
Modules complémentaires
- Appuyer sur
Parcourir
- Dans la barre de recherche, saisir
Self-hosted LiveSync
- Cliquer sur le plugin
- Appuyer sur le bouton
Installer
- Une fois installé, cliquer sur
Activer
- Une fenêtre s'ouvre pour la configuration, choisir
Use the copied setup URI
- Dans le champ qui apparaît, insérer l'URI de configuration obtenue à l'étape précédente (exemple :
obsidian://setuplivesync?settings=%253bef03...pjQnS8g%3D%3D
) - Saisir la phrase de passe de configuration (exemple:
dry-shadow
) - Choisir
Yes
à la première question posée - Cliquer sur
Set it up...
- Sur la fenêtre qui s'ouvre, choisir
Keep them disabled
- Enfin, fermer l'application et la réouvrir sans sauvegarder
Ces étapes sont présentes dans la vidéo de l'auteur du plugin.
Références
- Documentation officielle (en anglais)