Synchroniser Obsidian avec Webdav
- Écrit le
- 19 janvier 2025
- ·
- 7 minutes de lecture
Obsidian est un outil que j'affectionne tout particulièrement. D'aucun diront qu'il est un peu lourdingue pour une « simple » application de prise de notes, mais ce serait sans compter sur l'incroyable spectre de possibilités qu'il offre et sur le remarquable travail des développeur pour l'optimiser et nous faire oublier que l'on est en présence de HTML, JavaScript et CSS.
Obsidian c'est quoi ?
Vos notes sont vôtres
Pour commencer, c'est une philosophie. Celle du offline first.
En parcourant le site d'Obsidian, on tombe dès la page d'accueil sur des phrases un peu pompeuses du genre Your thoughts are yours ou Your knowledge should last. Passée la méfiance naturelle qui peut naître face à ce type de phrases souvent exagérées et présentes uniquement pour séduire d'éventuels futur clients, on s'aperçoit qu'il ne s'agit pas d'un artifice.
Avec Obsidian, toutes vos notes restent stockées localement, sur votre appareil, au formal Markdown, qui est un format texte. Ça signifie que même si Obsidian venait à disparaître, l'intégralité de vos notes resteraient accessibles et lisibles. Et vous pourriez alors très facilement migrer vers un autre outil qui gère le Markdown, il y en a des centaines.
Simple mais puissant
Passé ce constat, Obsidian c'est surtout un éditeur Markdown simple mais qui sait en faire beaucoup. Vous pouvez tout à fait l'utiliser pour éditer vos notes, mais vous pouvez aussi vous en servir pour — pourquoi pas — créer votre propre site web.
Ce qui me plaît c'est ce côté accueillant et KISS une fois installé, tout en sachant qu'il est possible de plier l'outil à nos usages les plus avancés.
En outre, l'application Android est très bien faite et permet d'écrire très simplement lorsqu'on est en déplacement.
Obsidian Sync
Lorsqu'on commence à intégrer une application de prise de note à notre quotidien, la question de la synchronisation d'un appareil à l'autre se pose assez rapidement. Obsidian Sync répond à cette problématique moyennant 4 dollars par mois. C'est le prix de la tranquillité.
Il a été revu à la baisse depuis les premiers abonnements qui comportaient d'autres options en plus de la synchronisation mais culminaient entre 8 et 10 euros par mois, ce qui commence à ne pas être négligeable, surtout lorsque la concurrence propose souvent la même chose gratuitement (Google Keep par exemple), même si bien souvent c'est sans chiffrement de bout en bout.
La communauté à la rescousse
L'une des grande force d'Obsidian, ce sont ses plugins et la quasi totale liberté qu'ils offrent pour doper l'expérience. La communauté étant généralement créative, il semblait inenvisageable que personne ne s’attelle à fournir une option de synchronisation gratuite en alternative à Obsidian Sync.
Cette option, c'est Remotely Save.
Comme il s'agit d'un simple plugin, il n'est pas fourni avec un serveur pour stocker vos notes, il se contente d'agir en local. Il faut donc choisir où stocker ses notes parmi les options gratuites :
- Amazon S3 (ou tout autre service compatible avec S3)
- Dropbox
- Webdav
- OneDrive
- Webdis (une interface pour Redis)
Une version payante du plugin est apparue il y a quelques mois et permet d'étendre la liste des services supportés.
Mon choix s'est tourné vers Webdav, parce qu'il est très simple d'installer un serveur Webdav soi-même et que ça permet une fois de plus de garder le contrôle sur ses données. J'y viens justement.
Webdav
Je le connaissais de nom, mais j'ai réellement découvert le protocole Webdav lors de la mise en place de ce système de synchro. Pour résumer, il s'agit d'une extension du protocole HTTP qui permet de simplifier l'échange de fichier avec un serveur distant. Parfait pour mon cas d'usage.
Se pose donc la question d'héberger un serveur Webdav. Comme je dispose de mon propre VPS (serveur privé), j'avais l'embarras du choix, mais il me fallait quelque chose qui remplisse ces conditions:
- Maintenu
- Open source
- Suffisamment sécurisé
- Simple et léger
J'ai trouvé mon bonheur avec KaraDAV.
Installation de KaraDAV
Comme j'utilise Docker sur mon VPS, il a été très facile de créer un container pour le faire tourner. Je n'ai cependant pas trouvé d'image officielle, j'ai donc construit la mienne en m'inspirant du guide d'installation officiel.
Dans un premier temps, il faut cloner le repository Git du projet:
git clone https://github.com/kd2org/karadav.git
cd karadav
Il faut ensuite ajuster la configuration :
cp config.dist.php config.local.php
Dans le fichier config.local.php
, modifiez la variable WWW_URL
pour indiquer le nom de domaine à utiliser.
Créez ensuite le fichier Dockerfile
:
FROM alpine:edge
RUN apk --no-cache add php82 php82-curl php82-ctype php82-opcache php82-simplexml php82-session php82-sqlite3 php82-fileinfo
ENV PHP_CLI_SERVER_WORKERS=4
RUN ln -s /usr/bin/php82 /usr/bin/php
RUN mkdir -p /var/karadav
RUN mkdir /var/karadav/data
RUN mkdir /var/karadav/lib
RUN mkdir /var/karadav/www
WORKDIR /var/karadav/
COPY lib /var/karadav/lib/
COPY www /var/karadav/www/
COPY schema.sql /var/karadav/
EXPOSE 8080
COPY ./config.local.php /var/karadav/config.local.php
ENV PHP_CLI_SERVER_WORKERS=3
CMD ["php", "-S", "0.0.0.0:8080", "-t", "www", "www/_router.php"]
Puis le fichier de configuration pour Docker Compose (optionnel si vous préférez la ligne de commande pour démarrer vos containers), compose.yaml
:
services:
karadav:
image: karadav:0.6.1
container_name: karadav
restart: unless-stopped
environment:
- TZ=Europe/Paris
volumes:
- /data/karadav:/var/karadav/data
networks:
- nginx
networks:
nginx:
name: nginx
external: true
Dans mon cas, j'utilise Nginx comme reverse-proxy sur mon VPS, pour ne pas exposer KaraDAV directement et pour centraliser la gestion des certificats SSL. Adaptez donc à votre infrastructure.
Dernières étapes, construire l'image et lancer le container :
docker build -t karadav:0.6.1 .
docker compose up -d
Vous devriez maintenant pouvoir accéder à KaraDAV en navigant vers l'URL configurée.
Dans KaraDAV, je vous suggère de créer 2 utilisateurs :
- 1 compte admin que vous utiliserez pour gérer le serveur.
- 1 compte obsidian que vous utiliserez uniquement dans Obsidian.
Les deux doivent bien entendu avoir un mot de passe suffisamment fort.
Configuration de Remotely Save
Remotely Save offre énormément d'options de configuration. Il est facile de s'y perdre mais finalement, les réglages par défaut peuvent être conservés pratiquement partout.
Je vais m'attarder à détailler la partie qui nous intéresse, la connexion à votre serveur Webdav fraîchement installé.
- Choose a remote device = Webdav.
- Server Address = l'adresse publique du serveur Webdav configuré à l'étape précédente.
- Username = le nom de l'utilisateur obsidian créé plus haut.
- Password = le mot de passe correspondant à l'utilisateur.
- Auth Type = basic.
À ce stade, cliquez sur le bouton Check un peu plus bas pour vérifier si tout est ok. Si oui, continuez, sinon, c'est qu'il y a un souci quelque part et qu'il vous faut investiguer.
- Encryption Password = très important, il s'agit du mot de passe qui servira à chiffrer vos notes dans Obsidian avant qu'elles ne soient envoyées à votre serveur. C'est essentiel dans le cas où votre serveur est compromis, pour éviter que vos notes ne soient visibles en clair. Ne perdez pas ce mot de passe, sans quoi vous ne pourrez pas configurer d'autres appareils avec lesquels synchroniser vos notes.
- Encryption Method = RClone crypt - j'utilise encore OpenSSL enc mais elle est marquée comme legacy donc à éviter.
- Schedule For Auto Run = every 10 minutes - mais ajustez à votre convenance.
- Run Once On Start Up Automatically = sync once after 1 second of start up - très utile pour vous assurer de récupérer la dernière version de vos notes lorsque vous lancez l'application, ça limite les risques de conflits.
Et vous voilà parés !
La même configuration peut être appliquée sur les applications Android et iOS.