Export vers Android¶
Le service lmelp-export permet d'exporter automatiquement la base de données MongoDB vers un téléphone Android via ADB. Cette fonctionnalité facilite la synchronisation des données avec l'application mobile LMELP.
Prérequis¶
Sur le laptop/PC¶
- ADB (Android Debug Bridge) installé
- Téléphone Android branché en USB avec le débogage USB activé
- Docker et docker compose fonctionnels
Sur le téléphone Android¶
- Application LMELP Mobile installée
- Débogage USB activé (Paramètres → Options développeur)
- Câble USB connecté au laptop
Installation d'ADB¶
Télécharger Platform Tools et ajouter au PATH.
Configuration¶
Variables d'environnement¶
Le service utilise les variables suivantes dans le fichier .env:
# Configuration Calibre (optionnel - partagée avec le backend)
CALIBRE_HOST_PATH=/volume1/books/Calibre Library
CALIBRE_VIRTUAL_LIBRARY_TAG=guillaume
# Configuration ADB (optionnel - valeurs par défaut)
ADB_HOST=host-gateway
ADB_PORT=5037
Valeurs par défaut:
ADB_HOST=host-gateway: Permet au container d'atteindre le daemon ADB du laptopADB_PORT=5037: Port standard du daemon ADB
Ces valeurs conviennent dans la plupart des cas. Modifiez-les uniquement si vous avez une configuration ADB personnalisée.
Démarrage du service¶
Le service lmelp-export démarre automatiquement avec la stack Docker:
Pour vérifier que le service est actif:
Vous devriez voir:
Utilisation¶
Processus d'export complet¶
-
Démarrer le daemon ADB sur le laptop (avec flag
-apour écoute réseau):Le flag
-aest obligatoire pour que ADB écoute sur toutes les interfaces (0.0.0.0), permettant au container Docker d'y accéder. -
Vérifier la connexion du téléphone:
Vous devriez voir votre téléphone listé:
-
Lancer l'export depuis Docker:
Cette commande: - Exporte MongoDB vers SQLite (avec données Calibre si configuré) - Vérifie l'intégrité de la base exportée - Transfert via
adb pushvers le téléphone - Redémarre l'application Android pour charger les nouvelles données
Fonctionnement technique¶
Le container lmelp-export:
- Reste actif en permanence (daemon) mais ne consomme presque aucune ressource
- Attend des commandes via
docker exec - Se connecte à MongoDB via le réseau Docker (
mongo:27017) - Monte Calibre en lecture seule (même configuration que le backend)
- Communique avec ADB du laptop via
host-gateway
┌─────────────────┐
│ Laptop/PC │
│ │
│ ADB Server │ ←─────┐
│ (port 5037) │ │
└─────────────────┘ │
↑ │
│ USB │ host-gateway
↓ │
┌─────────────────┐ │
│ Téléphone │ │
│ Android │ │
└─────────────────┘ │
│
┌──────────────────────────┼────────────────┐
│ Docker Network │ │
│ │ │
│ ┌───────────┐ ┌──────▼──────┐ │
│ │ MongoDB │◄───│ lmelp-export│ │
│ └───────────┘ └─────────────┘ │
│ ▲ │
│ │ :ro │
│ ┌──────┴──────┐ │
│ │ Calibre │ │
│ │ Library │ │
│ └─────────────┘ │
└───────────────────────────────────────────┘
Dépannage¶
Le service ne démarre pas¶
Vérifier les logs:
Erreur courante: MongoDB non accessible
Solution: Vérifier que MongoDB est healthy:
ADB ne trouve pas le téléphone¶
Depuis le container:
Si vide, vérifier:
-
ADB server démarré avec
-a: -
Débogage USB activé sur le téléphone
-
Autorisation accordée sur le téléphone (popup "Autoriser le débogage USB?")
Le push échoue¶
Vérifier les permissions sur le téléphone:
L'application LMELP Mobile doit avoir les permissions de stockage.
Vérifier l'espace disque:
Configuration Calibre non détectée¶
Si CALIBRE_HOST_PATH n'est pas défini ou pointe vers un chemin invalide:
- Le service fonctionne quand même
- L'export se fait sans les données Calibre
- Volume monté sur
/dev/null(pas d'erreur)
Vérifier le montage:
Devrait montrer le contenu de votre bibliothèque Calibre, notamment metadata.db.
Erreur "host-gateway not found"¶
Sur certains systèmes Linux anciens, host-gateway n'est pas supporté.
Solution: Configurer l'IP de l'hôte manuellement dans .env:
# Trouver l'IP de l'interface docker0
ip addr show docker0
# Configurer dans .env
ADB_HOST=172.17.0.1 # Remplacer par votre IP docker0
Sécurité¶
Lecture seule sur Calibre¶
Le volume Calibre est monté en lecture seule (:ro):
Cela garantit que:
- La bibliothèque Calibre ne peut jamais être modifiée par le container
- Protection contre les bugs ou erreurs de code
- Cohérence avec le pattern utilisé par le backend
Exposition ADB¶
Le daemon ADB du laptop est accessible au container via host-gateway. Cela ne pose pas de risque car:
- ADB écoute sur localhost ou réseau privé
- Le container est sur le même réseau bridge Docker (isolé)
- Aucune exposition sur Internet
Désactivation du service¶
Pour désactiver temporairement le service sans le supprimer:
Pour le supprimer complètement du déploiement, commenter ou retirer la section lmelp-export dans docker-compose.yml.
Limitations connues¶
- Un seul téléphone à la fois: ADB ne peut pusher que vers un seul appareil connecté
- Connexion USB requise: Le transfert WiFi ADB n'est pas supporté (nécessite configuration complexe)
- Permissions téléphone: L'utilisateur doit accepter le débogage USB manuellement
Voir aussi¶
- Installation - Configuration initiale de la stack
- Configuration - Détails des variables d'environnement
- Calibre Setup - Intégration Calibre
- lmelp-mobile#81 - Issue originale