Introduction
Baikal est un serveur web très léger auto hébergé qui permet de gérer ses propres agendas CalDAV et ses contacts cardDAV. Le serveur fait passerelle pour synchroniser tous vos périphériques et clients compatibles avec ces protocoles. Il permet donc de s’affranchir des solutions propriétaires comme la plateforme Google ou des solutions plus lourdes comme NextCloud. Dans cette article, nous allons l’installer avec docker compose et portainer, puis nous verrons la configuration coté client (exemple avec ThunderBird) pour mettre en place la synchronisastion.
Pour pouvoir accéder à notre serveur ‘Baikal’ de l’extérieur, nous utiliserons le Reverse Proxy (voir l’article d’installation de swag). La configuration sera identique avec un serveur ‘Nginx’.
Pour cette installation j’utilise l’image officielle qui est présente ici : https://github.com/ckulka/baikal-docker.
Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d ‘un utilisateur Docker pour le détail). J’ai créé aussi un répertoire qui contiendra toutes mes installations docker. dans ce blog, j’utiliserais pour exemple le chemin /volume/docker. |
Nous allons créer aussi le répertoire ‘baikal’ en ligne de commande sur le NAS (connexion en SSH) dans notre répertoire docker : /volume/docker. Cette étape est facultative, le containeur créera le répertoire automatiquement lors du déploiement si celui ci n’existe pas.
$ cd /volume/docker
$ mkdir baikal
Le fichier de configuration
Si vous souhaitez sécuriser le lancement de ‘baikal‘, je vous engage à parcourir l’article securiser docker.
Il est importent de bien respecter l’indentation des fichiers de configurations : pas de tabulation. Attention aussi à la version du fichier, il y a des légères évolutions de syntaxe d’une version à l’autre.
Voici le fichier yml en détails dont il faut remplacer pour votre configuration (les lignes en gras sont facultatives) :
- TZ : Votre zone de temps,
- UID et PGID : celui de votre utilisateur Docker (omdocker pour ce blog),
- volume/docker : Le chemin vers le répertoire de votre application,
- networks : Il faut relier baikal à votre réseau ‘swag‘ (ou équivalent) si vous souhaiter pourvoir accéder à l’application depuis l’extérieur. Voir en bas de l’article.
version: "2"
services:
baikal:
image: ckulka/baikal:nginx
container_name: baikal
environment:
- PUID=1003
- PGID=100
- TZ=Europe/Paris
networks:
- swag_default
restart: always
volumes:
- data:/var/www/baikal/Specific
- config:/var/www/baikal/config
pids_limit: 100
mem_limit: 500m
cpus: 0.5
cpu_shares: 512
networks:
swag_default:
external: true
volumes:
config:
driver: local
driver_opts:
type: none
o: bind
device: /volume/docker/config/baikal
data:
driver: local
driver_opts:
type: none
o: bind
device: /volume/docker/config/baikal/data
Vous copiez le contenu de ce fichier dans votre interface de gestion Portainer en allant dans ‘Stacks‘ et ‘Add stack‘.

Donnez un nom à votre pile, par exemple ‘baikal‘, puis déployer cotre containeur en cliquant en bas sur « Deploy the stack‘.
Après une phase de téléchargement de l’image, puis d’installation de l’application, vous devriez arriver sur cet écran si tout s’est bien passé :

Nous pouvons maintenant nous connectez à ‘baikal‘ avec l’URL : https://baikal.votrenomdedomaine (voir la configuration Swag plus bas).
Si tout s’est bien passé, vous devriez arriver sur ce premier écran :

Vous devez choisir un mot de passe pour l’administrateur, puis vous pouvez passer à l’écran suivant et sélectionner une base de données ‘sql lite’ :
Remarque : Il est important de garder le chemin comme ci dessous; sinon cela ne fonctionnera pas !!

Une fois la configuration initiale terminée, vous arrivez sur le tableau de bord de l’application :

Configuration
La 1ere chose à faire est d’ajouter un premier utilisateur . On clique sur l’icone ‘Add user’ :

On ajoute pour cet utilisateur un ou des calendriers et un carnet d’adresse :

Configuration coté client
Nous allons prendre comme exemple, le client de messagerie ‘ThunderBird’, mais la configuration devrait être identique pour un autre client de messagerie :
On commence par ajouter un agenda et on choisi l’option ‘sur le réseau’ :

On indique par la suite l’identifiant et l’URL de l’agenda. Il vous demandera ensuite le mot de passe de l’utilisateur ‘baikal’. On retourne sur ‘baikal’ pour avoir les informations de connexion de l’agenda :

Une fois l’agenda lié localement avec votre client, vous pouvez consulter ses propriétés et les modifier si nécessaire :

Configuration sur votre téléphone
Sur votre téléphone, vous devrez utiliser un outil de synchronisation comme CalDAV Sync Adapter à télécharger sur F-DRoid ou le store Google.
Configuration de swag
La configuration d’un containeur avec ‘swag‘ est la plupart du temps très simple. ‘swag‘ propose par défaut des fichiers de configurations prédéfinis pour de nombreux services.
Ces fichiers se trouvent dans le répertoire d’installation de swag : /volume/docker/swag/nginx/proxy-confs/. Il n’y a pas de fichier pré-configurer pour ‘baikal’; il faut donc en créer un. On tape la commande suivante :
$ cd /volume/docker/swag/nginx/proxy-confs/
$ sudo nano baikal.subdomain.conf
Puis on colle le code ci dessous dans le fichier :
# baikal config
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name baikal.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
location / {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app baikal;
set $upstream_port 80;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
proxy_max_temp_file_size 2048m;
}
}
Nous relançons le containeur swag soit via Portainer, soit en ligne de commande ‘sudo docker restart swag‘ pour qu’il prenne en charge la redirection du containeur ‘baikal‘.