Featured image of post Installation Baikal avec Docker

Installation Baikal avec Docker

Installation du WebUI de Baikal avec Docker

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.

cd /volume/docker
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‘.

La pile ‘baikal’
La pile ‘baikal’

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é :

Le container ‘baikal‘ est installé et est en fonctionnement.
Le container ‘baikal‘ est installé et est en fonctionnement.

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 :

Configuration de ‘baikal’
Configuration de ‘baikal’

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 !!

Choix de la base de données
Choix de la base de données

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

Tableau de bord de ‘baikal’
Tableau de bord de ‘baikal’

Configuration coté serveur

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

Ajout d’un utilisateur
Ajout d’un utilisateur

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

Ajout d’un calendrier
Ajout d’un calendrier

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’ :

Ajout d’un agenda coté client
Ajout d’un agenda coté client

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 :

Information de connexion de l’agenda
Information 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 :

Propriétés de l’agenda cote client
Propriétés de l’agenda cote client

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’.

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).

Généré avec Hugo
Thème Stack conçu par Jimmy