# 🏴‍☠️ Exemple d'utilisation - Installation Skull Pi

Ce document montre comment utiliser le nouveau système d'installation avec gestion automatique de l'utilisateur.

## Scénario d'installation

### 1. Clonage du projet

```bash
# Sur le Raspberry Pi, avec n'importe quel utilisateur
cd /home/skull
git clone https://github.com/votre-org/skull-pi.git
cd skull-pi
```

### 2. Installation avec l'utilisateur 'skull'

```bash
# L'utilisateur 'skull' lance l'installation
sudo bash install.sh
```

**Ce qui se passe automatiquement :**

- ✅ Le script détecte que l'utilisateur réel est `skull` (pas `root`)
- ✅ Copie tous les fichiers de `/home/skull/skull-pi/` vers `/opt/Skull/`
- ✅ Configure tous les services pour l'utilisateur `skull`
- ✅ Crée le venv Python appartenant à `skull`
- ✅ Configure sudoers pour permettre à `skull` de contrôler les services
- ✅ Met les bonnes permissions sur tous les fichiers

### 3. Résultat final

```
/opt/Skull/                    # Répertoire d'installation
├── apps/                      # Code source (copié depuis /home/skull/skull-pi/apps/)
├── bin/                       # Scripts wrapper
├── config/                    # Configuration (propriétaire: skull)
├── logs/                      # Logs (propriétaire: skull)
├── venv/                      # Python venv (propriétaire: skull)
└── requirements.txt

/etc/systemd/system/           # Services systemd
├── skull.target
├── skull-orchestrator.service # User=skull, Group=skull
├── skull-motion.service       # User=skull, Group=skull
└── ...

/etc/sudoers.d/skull          # Permissions pour l'utilisateur 'skull'
```

## Exemple avec utilisateur 'pi'

```bash
# Sur un Raspberry Pi classique avec utilisateur 'pi'
sudo -u pi git clone https://github.com/votre-org/skull-pi.git /home/pi/skull-pi
cd /home/pi/skull-pi
sudo bash install.sh
```

**Résultat :**

- Services configurés pour `User=pi, Group=pi`
- Sudoers configuré pour l'utilisateur `pi`
- Tous les fichiers appartiennent à `pi:pi`

## Vérification

```bash
# Après installation et redémarrage
bash post_install_check.sh
```

**Sortie exemple :**

```
🏴‍☠️ Vérification post-installation Skull Pi
=============================================
Utilisateur configuré: skull

📊 Informations système:
  OS: Debian GNU/Linux 12 (bookworm)
  Kernel: 6.12.25+rpt-rpi-v8
  Architecture: aarch64
  Hostname: skull

⚙️ Statut des services Skull Pi:
  ✅ skull.target: ACTIF
  ✅ skull-orchestrator: ACTIF
  ...

🐍 Environnement Python:
  ✅ Venv: CRÉÉ
  📁 Propriétaire: skull
  ✅ Dépendances: INSTALLÉES

⚙️ Configuration:
  ✅ .env: PRÉSENT (skull)
  ✅ servos.json: PRÉSENT (skull)
  ...

🔐 Permissions sudoers:
  ✅ Sudoers: CONFIGURÉ pour skull
```

## Commandes pour l'utilisateur

Une fois installé, l'utilisateur `skull` peut :

```bash
# Contrôler les services (sans sudo)
sudo systemctl restart skull.target
sudo systemctl status skull-orchestrator

# Voir les logs
sudo journalctl -f -u skull-orchestrator

# Modifier la configuration
nano /opt/Skull/config/.env
nano /opt/Skull/config/servos.json

# Tester MQTT
mosquitto_sub -h 127.0.0.1 -t '#' -v

# Redémarrer le système
sudo reboot
```

## Avantages

### ✅ **Flexibilité utilisateur**

- Fonctionne avec n'importe quel utilisateur
- Pas besoin de créer un utilisateur `pi` spécifique
- Adaptation automatique selon l'environnement

### ✅ **Sécurité**

- Chaque installation utilise l'utilisateur approprié
- Permissions minimales dans sudoers
- Isolation des fichiers par utilisateur

### ✅ **Simplicité**

- Une seule commande : `sudo bash install.sh`
- Détection automatique de l'environnement
- Copie intelligente des fichiers source

### ✅ **Robustesse**

- Vérification des fichiers source avant installation
- Sauvegarde automatique des installations existantes
- Messages d'erreur clairs et informatifs

## Structure finale des permissions

```bash
# Vérification des permissions
ls -la /opt/Skull/
# drwxr-xr-x skull skull apps/
# drwxr-xr-x skull skull bin/
# drwxr-xr-x skull skull config/
# drwxr-xr-x skull skull logs/
# drwxr-xr-x skull skull venv/

# Vérification des services
systemctl cat skull-orchestrator.service | grep User
# User=skull
# Group=skull

# Vérification sudoers
cat /etc/sudoers.d/skull | head -1
# skull ALL=NOPASSWD: /bin/systemctl start skull-*.service
```

Cette approche garantit une installation propre, sécurisée et adaptée à chaque environnement ! 🎯
