Téléverser les fichiers vers "/"

This commit is contained in:
2026-05-29 02:51:28 +02:00
commit c11c094d25

261
FMD-doc.md Normal file
View File

@ -0,0 +1,261 @@
# FindMyDevice (FMD) — Documentation
Alternative open source et auto-hébergeable à Google Find My Device, conçue pour fonctionner **sans Google Play Services**. Idéale pour GrapheneOS.
- **Licence** : GPLv3
- **Source** : [gitlab.com/fmd-foss/fmd-android](https://gitlab.com/fmd-foss/fmd-android)
- **Serveur** : [gitlab.com/fmd-foss/fmd-server](https://gitlab.com/fmd-foss/fmd-server)
- **F-Droid** : [de.nulide.findmydevice](https://f-droid.org/packages/de.nulide.findmydevice/)
---
## Fonctionnalités
| Fonction | Description |
|---|---|
| Localisation | GPS, cellules, ou dernière position connue |
| Sonnerie | Faire sonner le téléphone à distance |
| Verrouillage | Verrouiller l'écran avec un message personnalisé |
| Photos | Capturer une photo avec la caméra avant ou arrière |
| Audio | Enregistrer un son ambiant |
| Réseau | Voir les Wi-Fi visibles, infos cellules |
| Effacement | Réinitialisation usine à distance |
| GPS/BT/DND | Activer/désactiver le GPS, Bluetooth, Ne pas déranger |
---
## Canaux de communication
### 1. SMS (fonctionne sans internet)
Envoyer un SMS au téléphone avec une commande :
```
fmd locate
fmd ring
fmd camera front
```
**Modes d'authentification :**
- **Contacts de confiance** : numéros whitelistés, pas besoin de PIN
- **PIN** : pour les numéros inconnus, inclure le PIN : `fmd 1234 locate`
- Le PIN accorde une fenêtre de 10 minutes après utilisation
### 2. Applications de messagerie (Telegram, WhatsApp)
Via le service d'écoute des notifications. Le PIN est obligatoire pour chaque commande :
```
fmd 1234 locate
fmd 1234 ring
```
### 3. FMD Server (interface web auto-hébergée)
- Carte avec position en temps réel
- Visualisation des photos capturées
- Envoi de commandes à distance
- Notifications push via ntfy/UnifiedPush
---
## Commandes SMS complètes
| Commande | Action |
|---|---|
| `fmd locate` | Position GPS + cellules |
| `fmd locate last` | Dernière position connue |
| `fmd locate gps` | Position GPS uniquement |
| `fmd locate cell` | Position par cellules uniquement |
| `fmd ring` | Sonner pendant 15 secondes |
| `fmd ring long` | Sonner pendant 3 minutes |
| `fmd lock` | Verrouiller l'écran |
| `fmd lock ton message` | Verrouiller avec un message |
| `fmd camera front` | Photo avec la caméra avant |
| `fmd camera back` | Photo avec la caméra arrière |
| `fmd stats` | Infos réseau et Wi-Fi visibles |
| `fmd bluetooth` | Activer/désactiver le Bluetooth |
| `fmd gps` | Activer/désactiver le GPS |
| `fmd nodisturb` | Activer/désactiver Ne pas déranger |
| `fmd delete` | Réinitialisation usine (PIN requis + activation manuelle dans les paramètres) |
| `fmd help` | Afficher la liste des commandes |
Le préfixe `fmd` est personnalisable dans les paramètres de l'application.
---
## Installation sur GrapheneOS
### 1. Installer depuis F-Droid
L'application est disponible directement dans F-Droid. Rechercher « Find My Device ».
### 2. Accorder les permissions via ADB
Certaines permissions ne peuvent pas être accordées depuis l'interface Android et nécessitent ADB :
```bash
# Permissions critiques
adb shell pm grant de.nulide.findmydevice android.permission.READ_SMS
adb shell pm grant de.nulide.findmydevice android.permission.RECEIVE_SMS
adb shell pm grant de.nulide.findmydevice android.permission.SEND_SMS
adb shell pm grant de.nulide.findmydevice android.permission.ACCESS_BACKGROUND_LOCATION
adb shell pm grant de.nulide.findmydevice android.permission.RECORD_AUDIO
adb shell pm grant de.nulide.findmydevice android.permission.READ_PHONE_STATE
# Permet à FMD d'activer le GPS à distance même s'il est désactivé
adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS
```
### 3. Configurer dans l'application
- Définir un **PIN** dans les paramètres FMD
- Ajouter les **contacts de confiance** (numéros autorisés sans PIN)
- Activer **l'optimisation batterie ignorée** pour FMD
- Activer **l'accès aux notifications** (pour les commandes via Telegram/WhatsApp)
- Configurer le **serveur FMD** si vous utilisez l'interface web
### 4. Désactiver l'optimisation batterie
```bash
adb shell dumpsys deviceidle whitelist +de.nulide.findmydevice
```
---
## Installation du serveur FMD
### Docker (recommandé)
```bash
docker run -d \
--name fmd-server \
-p 8080:8080 \
-v fmd-data:/data \
registry.gitlab.com/fmd-foss/fmd-server:0.15.0
```
### Docker Compose
```yaml
version: "3"
services:
fmd-server:
image: registry.gitlab.com/fmd-foss/fmd-server:0.15.0
ports:
- "8080:8080"
volumes:
- fmd-data:/data
restart: unless-stopped
volumes:
fmd-data:
```
### Construction depuis les sources
```bash
# Compiler le frontend React
cd web && npm install && npm run build
# Compiler et lancer le serveur Go
go run . serve
```
---
## Sécurité
| Mécanisme | Description |
|---|---|
| Chiffrement E2E | RSA-2048 + AES-256-GCM entre le téléphone et le serveur |
| PIN | Obligatoire pour les numéros non whitelistés |
| Whitelist | Contacts de confiance sans besoin de PIN |
| Préfixe personnalisable | Remplacer `fmd` par un mot de votre choix pour masquer les commandes |
| Effacement distant | `fmd delete` nécessite un PIN ET une activation manuelle dans les paramètres |
---
## Flux de commande typique
```
Téléphone perdu
Envoyer SMS : "fmd 1234 locate"
FMD reçoit le SMS ──► Vérifie PIN/whitelist
Active le GPS (WRITE_SECURE_SETTINGS)
Récupère la position
Répond par SMS avec les coordonnées
(optionnel) Envoie aussi au serveur FMD
```
---
## Dépannage
### Les commandes SMS ne fonctionnent pas
- Vérifier que `RECEIVE_SMS` et `SEND_SMS` sont accordées
- Vérifier que l'appli est exemptée de l'optimisation batterie
- Vérifier que les notifications sont activées pour FMD
### La localisation ne fonctionne pas
```bash
# Vérifier les permissions
adb shell dumpsys package de.nulide.findmydevice | grep -E "LOCATION|WRITE_SECURE"
# Accorder si nécessaire
adb shell pm grant de.nulide.findmydevice android.permission.ACCESS_BACKGROUND_LOCATION
adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS
```
### Les photos ne se prennent pas
- Vérifier que `CAMERA` est accordée
- Sur GrapheneOS, vérifier que l'appli a accès aux capteurs : Paramètres → Apps → Find My Device → Capteurs
### Le GPS ne s'active pas à distance
La permission `WRITE_SECURE_SETTINGS` est obligatoire. Sans elle, FMD ne peut pas activer le GPS quand il est éteint :
```bash
adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS
```
---
## Comparaison avec Google Find My Device
| Critère | Google FMD | FMD (open source) |
|---|---|---|
| Dépendance Google | Oui | Non |
| Fonctionne sur GrapheneOS | Non (Play Integrity requis) | Oui |
| Localisation SMS | Non | Oui |
| Photos à distance | Non | Oui |
| Serveur auto-hébergé | Non | Oui |
| Chiffrement E2E | Non documenté | Oui (RSA-256 + AES-256) |
| Effacement à distance | Oui | Oui |
| Code source | Fermé | Ouvert (GPLv3) |
| Coût | Gratuit (avec compte Google) | Gratuit |
---
## Références
- [FMD Android — GitLab](https://gitlab.com/fmd-foss/fmd-android)
- [FMD Server — GitLab](https://gitlab.com/fmd-foss/fmd-server)
- [FMD sur F-Droid](https://f-droid.org/packages/de.nulide.findmydevice/)
- [Documentation FMD — rigacci.org](https://rigacci.org/wiki/doku.php/doc/appunti/android/android_findmydevice_fdroid)
- [Serveur FMD — Installation](https://fmd-foss.org/docs/fmd-server/installation/overview)