Khal pour un agenda synchronisé avec nextcloud

Dans le but d'utiliser de moins en moins thunderbird qui me permettait d'ouvrir plusieurs boites mails ainsi que consulter mon agenda synchronisé avec mon instance nextcloud faisant office de cloud personnel. En ce qui concerne les mails, j'utilise maintenant le client irssi et pour mon agenda, nous allons dans ce tutoriel expliquer la mise en place de khal qui permet de récupérer les agenda (Caldav) entre autre celle créer par mon cloud.

Installation

D'abord, nous installons les dépendances de python 3 :

apt install python3 python3-pip

Et on installe depuis le dépôt Debian les logiciels que nous aurons essentiellement besoin (khal et vdirsyncer) :

apt install khal

Ou sinon : Sinon pour avoir la dernière version, voici la procédure à suivre.

pip3 install git+git://github.com/pimutils/khal.git
pip3 install --user --ignore-installed vdirsyncer

Configuration

Vdirsyncer

Nous allons d'abord commencé par vdirsyncer qui va permettre de récupérer les évènements créer dans l'agenda sous forme de fichier .ics.

mkdir -p /.config/vdirsyncer/data
mkdir -p /.config/vdirsyncer/local
nano /.config/vdirsyncer/config
config
[general]
status_path = "~/.config/vdirsyncer/data/"
 
[pair personal]
a = "personal_local"
b = "personal_remote"
collections = ["from a", "from b"]
conflict_resolution = "b wins"
metadata = ["displayname", "color"]
 
[storage personal_local]
type = "filesystem"
path = "~/.config/vdirsyncer/local/"
fileext = ".ics"
 
[storage personal_remote]
type = "caldav"
url = "https://mon-site.com/remote.php/dav/calendars/utilisateur/personal/"
verify_fingerprint = "93:1B:C4:77:8C:27:7C:7B:AA:AA:E0:8E:7B:05:0A:1B:D5:7D:AE:7B"
verify = false
username = "utilisateur"
password = "mot2pass"

Dans le premier bloc, on définit l'emplacement des données qu'il va récupérer. C'est en quelque sorte son dossier “/tmp/”. Dans le second bloc, on déclare les espace de stockage et la méthode qui va être utilisé en cas de conflit lors d'une synchronisation. Dans le troisième bloc, on déclare l'espace de stockage locale qui va ensuite être lut par khal. Dans le quatrième bloc, on donne les identifiants et le chemin d'accès au caldav. Si la connexion au serveur se fait via HTTPS, alors il faudra récupérer le fingerprint du certificat SSL avec la commande ci-dessous :

openssl s_client -connect mon-site.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin

Ceci fait, il faudra alors lancer la synchronisation avec :

vdirsyncer discover personal && vdirsyncer sync personal

Ces commandes ont le même principe de git. Dans un premier temps on fetch pour prendre conscience de ce qu'il y a sur le serveur puis on pull pour récupérer les changements. Le dernier argument personal est utilisé lors de la déclaration du pair [pair personal] dans le fichier de configuration.

Pour que la synchronisation se lance régulièrement et de manière automatique, il faudra utiliser crontab.

Khal

Passons maintenant à la configuration de Khal :

mkdir -p ~/.config/khal/
khal.conf
[calendars]
[[personal]]
path = ~/.config/vdirsyncer/local/personal/
color = dark green
 
[sqlite]
path = ~/.config/khal/khal.db
 
[locale]
timeformat = %H:%M
dateformat = %d-%m-%Y
longdateformat = %d-%m-%Y
datetimeformat = %d-%m-%Y %H:%M
longdatetimeformat = %d-%m-%Y %H:%M
 
firstweekday = 0
 
[default]
default_command = calendar
default_calendar = "personal"
highlight_event_days = True

Dans la premier bloc, nous spécifions l'emplacement des .ics précédemment téléchargé. Dans le second bloc, la base de donnée. Dans le troisième bloc, le format des dates. Dans le quatrième bloc, le calendrier par défaut chargé lors de l'appel de la commande khal.

Liste des commandes disponible