Dnote est un outil de gestion de notes bien différent des autres. Il est composé d’un serveur (en Go) qui propose une interface web, ainsi qu’un client en ligne de commande. Les deux outils permettent la saisie et la recherche de notes, le serveur les enregistre dans une base postgresql et le client dans une base locale sqlite. Un simple dnote sync
permet de synchroniser les 2 bases.
L’intérêt de la ligne de commande est de limiter le context switching ; quand on code / admin on est le plus souvent dans un terminal dans lequel on pourra rechercher rapidement une information via le cli dnote. Voici une démontration issue du github :
L’interface web permet quand à elle de consulter ses notes depuis l’exterieur ou de les publier.
A savoir qu’il est possible de sélectionner son éditeur favori lors de l’édition en ligne de commande :
cat ~/.dnote/dnoterc
editor: emacs
apiEndpoint: https://dnote.fredix.xyz/api
La dernière ligne force le client dnote à utiliser son instance plutôt que celle du développeur. Une section de la documentation est dédiée au self hosting et reprend en détails les éléments ci-dessus.
Le développeur de Dnote a publié une image docker amd64 que j’utilise ici via ce docker compose : dnote-amd64.yml
version: "3.3"
services:
dnote:
image: dnote/dnote:0.3.2
env_file: .env.server.scaleway-postgresql
networks:
- traefik-net
ports:
- 3000
deploy:
placement:
constraints:
# - node.labels.location == cloud-arm64
- node.hostname == nuc
labels:
- "traefik.port=3000"
- "traefik.docker.network=traefik-net"
- "traefik.frontend.rule=Host:dnote.fredix.xyz"
- "traefik.frontend.entryPoints=http,https"
- "traefik.frontend.redirect.entryPoint=https"
- "traefik.frontend.redirect.permanent=true"
networks:
traefik-net:
external: true
le env_file pointe vers un fichier de variables d’environnement pour l’accès à postgresql, il est de cette forme :
GO_ENV=PRODUCTION
DBHost=IP
DBPort=PORT
DBName=dbname
DBUser=dbuser
DBPassword=PASS
WebURL=https://dnote.fredix.xyz
Dnote a été libéré depuis peu (Open Sourcing Dnote), aussi il fonctionne sur le même modèle que miniflux c’est à dire qu’une instance payante vous permettra d’éviter de gérer la partie serveur : https://www.getdnote.com/pricing/