Outils pour utilisateurs

Outils du site


commun:migration_baikal_nextcloud_calendriers_contacts

Ceci est une ancienne révision du document !


Migration Baïkal → Nextcloud (calendriers & contacts)

Migration d'un serveur Baïkal (CalDAV/CardDAV) vers une instance Nextcloud existante, avec reconfiguration des clients Android via DAVx⁵.

Prérequis :

  • Comptes utilisateurs déjà créés sur Nextcloud (mêmes logins que Baïkal)
  • Nextcloud accessible en HTTPS
  • Redirections well-known fonctionnelles (test : curl -s -o /dev/null -w “%{http_code}\n” https://NEXTCLOUD/.well-known/caldav doit renvoyer 301)

1. Export depuis Baïkal

Le script exporte le calendrier default (via l'endpoint ?export de sabre/dav) et le carnet d'adresses default (téléchargement des vCards une par une, l'export global n'existant pas pour CardDAV sur les vieilles versions de Baïkal). Authentification Digest.

Le script

Copier le contenu ci-dessous dans un fichier baikal-export-user.sh (sur n'importe quelle machine Linux/macOS disposant de curl et d'un accès HTTPS au serveur Baïkal) :

baikal-export-user.sh
#!/usr/bin/env bash
# Export Baïkal (calendrier + contacts) pour UN utilisateur.
# Usage : ./baikal-export-user.sh
# Sortie : ./baikal-export/<user>/cal-default.ics et contacts-default.vcf
 
set -u
BASE="https://dav.beafrancois.fr/dav/html"   # <-- adapter au serveur Baïkal
OUT="./baikal-export"
 
read -r -p "Nom d'utilisateur Baïkal : " USER
read -r -s -p "Mot de passe pour $USER : " PASS; echo
 
DIR="$OUT/$USER"; mkdir -p "$DIR"
AUTH=(--digest -u "$USER:$PASS")
 
## --- CALENDRIER (default) ---
F="$DIR/cal-default.ics"
curl -s "${AUTH[@]}" "$BASE/cal.php/calendars/$USER/default/?export" -o "$F"
if head -1 "$F" | grep -q BEGIN:VCALENDAR; then
  N=$(grep -c BEGIN:VEVENT "$F")
  echo "[OK] Calendrier : $N événements -> $F"
else
  echo "[!] Calendrier : export invalide (mauvais mot de passe ?) -> $F"
fi
 
## --- CONTACTS (default) ---
F="$DIR/contacts-default.vcf"
: > "$F"
EXPECTED=0
while read -r P; do
  [ -z "$P" ] && continue
  EXPECTED=$((EXPECTED+1))
  curl -s "${AUTH[@]}" "https://dav.beafrancois.fr$P" >> "$F"
  echo "" >> "$F"
done < <(curl -s "${AUTH[@]}" -X PROPFIND -H "Depth: 1" \
  "$BASE/card.php/addressbooks/$USER/default" \
  | tr -d '\r' \
  | grep -o "/dav/html/card.php/addressbooks/$USER/default/[^<]*vcf")
GOT=$(grep -c BEGIN:VCARD "$F")
if [ "$GOT" -eq "$EXPECTED" ] && [ "$GOT" -gt 0 ]; then
  echo "[OK] Contacts : $GOT/$EXPECTED -> $F"
else
  echo "[!] Contacts : $GOT récupérés sur $EXPECTED listés -> $F"
fi
Adapter la variable BASE (et le domaine dans la boucle contacts) à l'URL du serveur Baïkal. Le chemin /dav/html/cal.php et card.php correspond à une installation Baïkal ancienne (0.9.x) ; les versions récentes utilisent /dav.php.

Exécution

Lancer le script une fois par utilisateur :

chmod +x baikal-export-user.sh
./baikal-export-user.sh

Le script demande le nom d'utilisateur puis le mot de passe (saisie masquée). Sortie :

baikal-export/<utilisateur>/cal-default.ics
baikal-export/<utilisateur>/contacts-default.vcf

Le script affiche le nombre d'événements et de contacts récupérés. Noter ces chiffres pour vérification après import.

Si la sortie affiche [!], l'export a échoué (mot de passe erroné en général). Ne pas continuer avec un fichier invalide.

2. Import dans Nextcloud

Pour chaque utilisateur, connecté avec son compte Nextcloud :

  1. Calendrier : application Calendar → Paramètres (en bas à gauche) → Importer un calendrier → sélectionner cal-default.ics → cible : calendrier « Personnel » ou un nouveau calendrier
  2. Contacts : application Contacts → Paramètres → Importer des contacts → sélectionner contacts-default.vcf

Vérifier que les compteurs correspondent aux chiffres notés à l'export.

Calendrier commun

Si un calendrier était partagé entre utilisateurs sur Baïkal (compte dédié) :

  1. Exporter ce compte avec le script comme un utilisateur normal
  2. Importer son .ics chez un seul utilisateur, dans un nouveau calendrier (ex: « Famille »)
  3. Le partager : icône de partage à côté du calendrier → ajouter les autres utilisateurs → cocher « peut modifier »

Ne pas importer le fichier chez plusieurs utilisateurs : doublons garantis.

3. Configuration Android (DAVx⁵)

Mot de passe d'application (si 2FA)

Si la double authentification est active sur Nextcloud, le mot de passe du compte ne fonctionne pas pour DAVx⁵. Créer un mot de passe d'application :

  1. Nextcloud (web) → Paramètres → Sécurité → section « Appareils & sessions »
  2. Saisir un nom (ex: « DAVx5 téléphone francois ») → Créer un mot de passe d'application
  3. Noter le mot de passe affiché (visible une seule fois)

Un mot de passe d'application couvre calendriers et contacts. Un par appareil (révocation ciblée possible).

Suppression de l'ancien compte Baïkal

Supprimer l'ancien compte avant d'ajouter le nouveau, sinon doublons d'événements et de contacts sur le téléphone.

Dans DAVx⁵ → ouvrir le compte Baïkal → menu ⋮ → Supprimer le compte.

Ajout du compte Nextcloud

  1. DAVx⁵ → + → Connexion avec une URL et un nom d'utilisateur
  2. URL : https://NEXTCLOUD (le well-known fait la découverte)
  3. Identifiant : le login Nextcloud
  4. Mot de passe : le mot de passe d'application (ou celui du compte si pas de 2FA)
  5. Sélectionner les calendriers (y compris les calendriers partagés, détectés automatiquement) et le carnet d'adresses à synchroniser
  6. Lancer une synchronisation manuelle et vérifier dans les applis Agenda et Contacts du téléphone

4. Bascule finale

  1. Laisser tourner quelques jours en vérifiant la synchro sur tous les appareils
  2. Sauvegarde finale de Baïkal :
    tar czf baikal-final-backup.tar.gz /chemin/vers/baikal/Specific/

    (Specific/ contient la base et la config)

  3. Conserver aussi les exports .ics/.vcf
  4. Arrêter le service Baïkal

Dépannage

Symptôme Cause probable Solution
NotAuthenticated / erreur XML à l'export Baïkal en auth Digest, client en Basic Le script utilise déjà –digest ; vérifier le mot de passe
Contacts : X récupérés sur Y listés vCards avec href sans . avant vcf Le script gère ce cas (pattern large) ; sinon comparer les listes
DAVx⁵ ne trouve pas les services well-known absent Ajouter les redirections /.well-known/caldav et carddav vers /remote.php/dav/ dans le serveur web
Connexion DAVx⁵ refusée avec le bon mot de passe 2FA active Utiliser un mot de passe d'application
Doublons sur le téléphone Ancien compte Baïkal pas supprimé Supprimer les deux comptes, resynchroniser depuis Nextcloud seul
commun/migration_baikal_nextcloud_calendriers_contacts.1787043202.txt.gz · Dernière modification : de francois

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki