- Introduction
- Crédits
- Prérequis
- Installation
- Configuration
- Utilisation
- Sauvegarde de la base de données
- Restauration
- Mise à jour de Baïkal
- Sécurité
- Questions et contributions
Ce guide permet l'installation et la configuration de votre propre serveur de calendrier (CalDAV) et de contacts (CardDAV) avec Baïkal.
Baïkal permet d'accéder de manière transparente à vos contacts et calendriers depuis n'importe quel appareil. Il est compatible avec iOS, Mac OS X, DAVx5 sur Android, Mozilla Thunderbird et toute autre application compatible CalDAV et CardDAV.
Protégez votre vie privée en hébergeant vous-même vos calendriers et vos contacts.
Ce guide a été écrit à partir des sources suivantes :
- sabre.io/baikal, merci à Jérôme Schneider et fruux
- Guide en allemand pour une installation sur Raspberry Pi, merci à @JsBergbau
- Kinamo pour la sauvegarde de la base de données
- ChrisTitus
Pour suivre ce guide vous aurez besoin
- D'un serveur basé sur Debian avec accès root
- D'un nom de domaine avec un enregistrement DNS A configuré vers l'IP de votre serveur.
Dans la suite du guide, il est considéré que le nom de domaine est
domaine.fret le sous-domaine avec l'enregistrement pointant vers votre machine estcal.domaine.fr
Devenir root
sudo -iMise à jour du cache d'APT et du système
apt update && apt upgrade -yInstallation de MariaDB
apt install mariadb-server -yInstallation d'Apache2
apt install apache2 -yRendons nous sur http://cal.domaine.fr/, vous devriez voir la page par défault d'apache.
Pour activer HTTPS sur votre site Web, vous devez obtenir un certificat SSL/TLS auprès d'une autorité de certification (CA). Nous utiliserons dans ce guide Let's Encrypt comme autorité de certification car cela est gratuit et simple d'utilisation. Afin d'obtenir un certificat pour votre domaine auprès de Let's Encrypt, vous devez démontrer que vous possèdez le domaine.
Certbot est un outil permettant la gestion de certificats Let's Encrypt, automatisant la génération d'un certificat et réalisant la preuve de votre possession du serveur web.
apt install certbot -ycertbot certonly --standalonecertbot renew --dry-runLe certificat devra être renouvellé tous les 3 mois, pour cela saississez la commande
certbot renew
Rendons nous sur https://cal.domaine.fr/, vous devriez voir une icone de cadenas dans la barre URL.
Aide : Certbot ou Let's Encrypt
Installer PHP et les modules PHP
apt install php php-mysql php-dom -yNous installerons le serveur dans le dossier /srv
Source : The Linux Documentation Project
cd /srvAller à github.com/sabre-io/Baikal/releases/latest et télécharger la dernière version de l'archive ZIP.
wget https://github.com/sabre-io/Baikal/releases/download/0.10.1/baikal-0.10.1.zipInstaller unzip pour décompresser l'archive
apt install unzip -yunzip baikal-0.10.1.zip
rm baikal-0.10.1.zipchown -R www-data:www-data /srv/baikalPoint d'attention sécurité
Lancer le script de configuration initiale
mysql_secure_installationPoint d'attention sécurité
ATTENTION : Choisissez un bon mot de passe
Aide : mysql_secure_installation
Connection au serveur mysql
mysql -u root -pCréer une base de donnée baikal et un utilisateur baikal
CREATE DATABASE baikal;
CREATE USER 'baikal'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON baikal.* TO 'baikal'@'localhost';
FLUSH PRIVILEGES;ATTENTION : Choisissez un bon mot de passe
CTRL+D pour quitter
nano /etc/apache2/sites-available/baikal.confExemple de configuration :
<VirtualHost *:80>
ServerName cal.domaine.fr
Redirect permanent / https://cal.domaine.fr/
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/baikal/html
ServerName cal.domaine.fr
RewriteEngine on
# Generally already set by global Apache configuration
# RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule /.well-known/carddav /dav.php [R=308,L]
RewriteRule /.well-known/caldav /dav.php [R=308,L]
<Directory "/srv/baikal/html">
Options None
# If you install cloning git repository, you may need the following
# Options +FollowSymlinks
AllowOverride None
# Configuration for apache-2.4:
Require all granted
# Configuration for apache-2.2:
# Order allow,deny
# Allow from all
</Directory>
<IfModule mod_expires.c>
ExpiresActive Off
</IfModule>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cal.domaine.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cal.domaine.fr/privkey.pem
</VirtualHost>
Vous trouverez ce fichier de configuration ici => conf/baikal.conf
Il ne vous reste plus qu'a remplacer (CTRL+H) les 4 occurences de cal.domaine.fr par votre sous-domaine.
a2enmod alias
a2enmod expires
a2enmod rewrite
a2enmod ssla2dissite *
a2ensite baikal.confsystemctl restart apache2Si vous n'avez pas correctement installé de certificat SSL, une erreur peut survenir, référez vous à cette partie du guide.
Il est maintenant temps de se connecter à votre domaine, ici https://cal.domaine.fr/, avec un navigateur web pour réaliser la configuration initiale.
Saisie d'un mot de passe d'administration
ATTENTION : Choisissez un bon mot de passe
Connection à la base de donnée avec l'utilisateur baikal
On utilise ici l'identifiant et le mot de passe de l'utilisateur mysql
baikalsaisis dans cette partie.
On peut maintenant se connecter avec le compte admin sur la page d'administration https://cal.domaine.fr/admin ou en cliquant sur le bouton Login
On utilise ici l'identifiant et le mot de passe d'administration saisis dans cette partie.
Panneau de contôle
Accès à la liste des utilisateurs
Création d'un utilisateur
ATTENTION : Choisissez un bon mot de passe
Point de vigilance sécurité, attention à la méthode de hashage utilisée par Baïkal
Liste des utilisateurs
Paramètres des carnets d'adresses (Nom affiché du carnet et description)
Paramètres des calendriers (Nom affiché du calendrier, couleur, description et options)
On utilise ici l'identifiant et le mot de passe d'un utilisateur créé dans cette partie.
Passage en root
sudo -iArrêt du serveur web
systemctl stop apache2.serviceSauvegarde de la base baikal dans le dossier courant
mysqldump baikal | gzip > baikal.sql.gzCompression avec gzip
Démarrage du serveur web
systemctl start apache2.servicePassage en root
sudo -iDécompression du fichier de backup
gunzip baikal.sql.gzSupposé dans le dossier courant
Création de la base de données baikal, puis restauration des données dans la base
mysql -e "CREATE DATABASE baikal";
mysql baikal < baikal.sqlSe référer à sabre.io/baikal/upgrade
ATTENTION : Faire une sauvegarde de la base de données
Passage en root
sudo -iArrêt du serveur web
systemctl stop apache2.serviceDéplacement dans le dossier /srv
cd /srvDéplacement (sauvegarde) du dossier baikal initial
rm -r /backup
mkdir -p /backup
mv baikal /backup/baikal.bakTéléchargement de la nouvelle version
wget https://github.com/sabre-io/Baikal/releases/download/0.10.1/baikal-0.10.1.zipDécompression de l'archive
unzip baikal-0.10.1.zipSuppression des dossiers config et Specific de la nouvelle version
rm -rf baikal/config baikal/SpecificRestauration des dossiers config et Specific à partir de la sauvegarde
cp -r /backup/baikal.bak/config baikal/
cp -r /backup/baikal.bak/Specific baikal/Modification des droits
chown -R www-data:www-data baikal/Redémarrage du serveur web
systemctl start apache2.serviceIl ne reste plus qu'à retourner sur la page d'administration https://cal.domaine.fr/admin
Comme nous avons déjà fait une sauvegarde, il suffit de cliquer sur Start Upgrade.
On supprime l'archive
rm -r /srv/baikal-0.10.1.zipAprès avoir vérifié que la synchronisation est toujours en cours et que les entrées sont toujours là, on peut supprimer la sauvegarde du dossier
rm -r /backup/baikal.bak/La mise à jour est terminé !
La sécurité informatique est de votre responsabilité, les quelques notes ci-dessous vous donnent des outils pour améliorer la sécurité de votre serveur, il vous appartient cependant de vous renseigner si vous souhaitez aller plus loin.
Installation de ufw et fail2ban
apt install ufw fail2ban -yPolitique UFW
ufw allow 80/tcp
ufw allow 443/tcp
ufw default deny incoming
ufw default allow outgoing
ufw enableAttention à SSH, ne coupez pas la branche sur laquelle vous êtes 🍃
Exemple pour le port 22 :
ufw limit 22/tcp
Activer fail2ban
systemctl enable fail2ban
systemctl start fail2banEdition de /etc/sysctl.conf
Prévenir l'usurpation d'adresse IP
cat <<EOF > /etc/host.conf
order bind,hosts
multi on
EOFAfficher la liste des ports en écoute
netstat -tunlpN'hésitez pas à poser vos questions en soumettant une issue !
Toute contribution est également la bienvenue en réalisant une pull request.
Enjoy !




















