Outils pour utilisateurs

Outils du site


commun:migration_baikal_nextcloud_calendriers_contacts

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
commun:migration_baikal_nextcloud_calendriers_contacts [2026/08/18 08:50] – créée francoiscommun:migration_baikal_nextcloud_calendriers_contacts [2026/08/18 09:24] (Version actuelle) – francois
Ligne 2: Ligne 2:
  
 Migration d'un serveur Baïkal (CalDAV/CardDAV) vers une instance Nextcloud existante, avec reconfiguration des clients Android via DAVx⁵. 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'') 
-  * Script ''baikal-export-user.sh'' (voir ci-dessous) 
  
 ===== 1. Export depuis Baïkal ===== ===== 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 exporte le calendrier et le carnet d'adresses ''default''.
  
-Lancer le script **une fois par utilisateur** :+==== Le script ==== 
 + 
 +Copier le contenu ci-dessous dans un fichier ''baikal-export-user.sh'' : 
 + 
 +<code bash 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 
 +</code> 
 + 
 +==== Exécution ==== 
 + 
 +Lancer le script :
  
 <code bash> <code bash>
Ligne 20: Ligne 67:
 </code> </code>
  
-Le script demande le nom d'utilisateur puis le mot de passe (saisie masquée). Sortie :+Le script demande le nom d'utilisateur puis le mot de passe (baikal). 
 + 
 +Les fichiers calendrier et carnet sont créés :
  
 <code> <code>
Ligne 27: Ligne 76:
 </code> </code>
  
-Le script affiche le nombre d'événements et de contacts récupérés. **Noter ces chiffres** pour vérification après import.+Le script affiche le nombre d'événements et de contacts récupérés.
  
-<note important>+<note>
 Si la sortie affiche ''[!]'', l'export a échoué (mot de passe erroné en général). Ne pas continuer avec un fichier invalide. Si la sortie affiche ''[!]'', l'export a échoué (mot de passe erroné en général). Ne pas continuer avec un fichier invalide.
 </note> </note>
Ligne 35: Ligne 84:
 ===== 2. Import dans Nextcloud ===== ===== 2. Import dans Nextcloud =====
  
-Pour chaque utilisateur, connecté avec **son** compte Nextcloud :+Pour l'utilisateur, connecté avec **son** compte Nextcloud :
  
   - **Calendrier** : application //Calendar// → ''Paramètres'' (en bas à gauche) → ''Importer un calendrier'' → sélectionner ''cal-default.ics'' → cible : calendrier « Personnel » ou un nouveau calendrier   - **Calendrier** : application //Calendar// → ''Paramètres'' (en bas à gauche) → ''Importer un calendrier'' → sélectionner ''cal-default.ics'' → cible : calendrier « Personnel » ou un nouveau calendrier
Ligne 41: Ligne 90:
  
 Vérifier que les compteurs correspondent aux chiffres notés à l'export. 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é) : 
- 
-  - Exporter ce compte avec le script comme un utilisateur normal 
-  - Importer son ''.ics'' chez **un seul** utilisateur, dans un **nouveau calendrier** (ex: « Famille ») 
-  - 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⁵) ===== ===== 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 : 
- 
-  - Nextcloud (web) → ''Paramètres'' → ''Sécurité'' → section « Appareils & sessions » 
-  - Saisir un nom (ex: « DAVx5 téléphone francois ») → ''Créer un mot de passe d'application'' 
-  - 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 ==== ==== Suppression de l'ancien compte Baïkal ====
  
 <note warning> <note warning>
-Supprimer l'ancien compte **avant** d'ajouter le nouveau, sinon doublons d'événements et de contacts sur le téléphone.+Supprimer l'ancien compte avant d'ajouter le nouveau, sinon doublons d'événements et de contacts sur le téléphone.
 </note> </note>
  
Ligne 74: Ligne 105:
 ==== Ajout du compte Nextcloud ==== ==== Ajout du compte Nextcloud ====
  
-  - DAVx⁵ → ''+'' → ''Connexion avec une URL et un nom d'utilisateur'' +  - DAVx⁵ → ''+'' → ''Connexion avec Nextcloud'' 
-  - URL : ''https://NEXTCLOUD'' (le ''well-known'' fait la découverte) +  - URL : ''https://nuage.beafrancois.fr/nextcloud'' 
-  - Identifiant : le login Nextcloud +  - suit une étape d'authentification qu'il suffit de compléter 
-  - Mot de passe : le mot de passe d'application (ou celui du compte si pas de 2FA) +  - Sélectionner les calendriers (détectés automatiquement) et le carnet d'adresses à synchroniser
-  - Sélectionner les calendriers (y compris les calendriers partagés, détectés automatiquement) et le carnet d'adresses à synchroniser+
   - Lancer une synchronisation manuelle et vérifier dans les applis Agenda et Contacts du téléphone   - Lancer une synchronisation manuelle et vérifier dans les applis Agenda et Contacts du téléphone
  
-===== 4. Bascule finale ===== 
  
-  - Laisser tourner quelques jours en vérifiant la synchro sur tous les appareils 
-  - Sauvegarde finale de Baïkal : <code bash>tar czf baikal-final-backup.tar.gz /chemin/vers/baikal/Specific/</code> (''Specific/'' contient la base et la config) 
-  - Conserver aussi les exports ''.ics''/''.vcf'' 
-  - 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.1787043018.txt.gz · Dernière modification : de francois

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki