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 cet 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 ‘swag’ (voir article installation de swag). La configuration sera identique avec un serveur ‘Nginx’.
L’installation a été effectuée sur le NAS ‘OMV’, mais la procédure sera la même dans un container LXC ou LXD.
Pour cette installation j’utilise l’image officielle qui est présente ici : github.com/ckulka/baikal-docker.
Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d’un utilisateur). 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.
mkdir baikal
Le fichier de configuration
Si vous souhaitez sécuriser le lancement de ‘baikal‘, je vous engage à parcourir l’article sécuriser Docker.
Il est important 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.
Le fichier yml en détails. Il faut remplacer pour votre configuration :
- volume/docker : le chemin vers le répertoire de votre application,
- PUID et PGID : celui de votre utilisateur Docker (omdocker chez moi),
- TZ : Votre zone de temps,
- networks : Il faudra relier votre container au réseau de ‘swag’ pour un accès extérieur.
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 # optionnel
mem_limit: 500m # optionnel
cpus: 0.5 # optionnel
cpu_shares: 512 # optionnel
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.sousdomaine.votrenomdedomaine (voir la configuration de 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 coté serveur
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 :
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’.
Nous pouvons maintenant nous connecter à ‘baikal’ depuis l’extérieur avec l’URL https://baikal.subdomain.domain.tld (Le domaine et le sous domaine est à adapter suivant le vôtre).