# NG-Info Proxmox Tiny Deploy

Script de déploiement automatisé pour Proxmox VE sur tiny PC Lenovo M920q.

## Architecture déployée

```
┌─────────────────────────────────────────────────────────────┐
│  Proxmox VE  (PVE)                              .10         │
│  ├─ CT 101 : Netbird (routing peer)             .11         │
│  ├─ VM 100 : Linux Mint XFCE (jump host)        .12         │
│  └─ CT 102 : Dockhand (Docker management)       .13         │
└─────────────────────────────────────────────────────────────┘
```

## Prérequis

- Tiny Lenovo M920q (ou compatible)
- Proxmox VE 8.x fresh installé
- Accès SSH root au PVE
- Connectivité internet sur le réseau de déploiement
- Setup key Netbird généré côté management

## Hébergement des fichiers

Tous les fichiers doivent être accessibles sur :

```
https://files.ng-info.com/proxmox/
├── setup.sh                              # Script principal
├── lib/
│   ├── 01-pve-config.sh
│   ├── 02-netbird-ct.sh
│   ├── 03-dockhand-ct.sh
│   ├── 04-mint-vm.sh
│   └── 05-finalize.sh
└── templates/
    └── mint-xfce-v1.vma.zst              # Template Mint préparé en atelier
```

## Utilisation

Sur le PVE fraîchement installé, lance :

```bash
bash <(curl -s https://files.ng-info.com/proxmox/setup.sh)
```

Le script demandera :
- Nom du client
- Nom du site
- Préfixe réseau (ex: `192.168.50`)
- URL du management Netbird
- Setup key Netbird
- Mot de passe root pour les CT/VM

## Schéma d'adressage

Le script utilise un schéma fixe :

| Composant       | Dernier octet |
|-----------------|---------------|
| Routeur client  | `.1`          |
| Proxmox PVE     | `.10`         |
| CT Netbird      | `.11`         |
| VM Mint         | `.12`         |
| CT Dockhand     | `.13`         |

## Post-déploiement

Après l'exécution du script :

1. **Reboot le PVE** pour appliquer la nouvelle IP
2. **Vérifie le peer Netbird** dans le dashboard
3. **Configure ScreenConnect** dans la console (déplacer la VM
   du group "onboarding" vers le bon group client)
4. **Optionnel** : faire un snapshot/backup de l'état initial

## Préparation du template Mint (one-time)

Le template Mint XFCE doit être préparé une fois en atelier :

1. Créer une VM Proxmox avec ces specs :
   - ID 9000 (template), nom `mint-template`
   - q35, OVMF UEFI, 2 cores `host`, 4 GB RAM, 60 GB disk
   - VirtIO net, pas de firewall
2. Installer Mint XFCE complet
3. Configurer : openssh-server, qemu-guest-agent, cloud-init, xrdp
4. Installer les outils techniciens : Chrome, Wireshark, VS Code, etc.
5. Configurer le service auto-install ScreenConnect
6. Nettoyer (machine-id, SSH keys, logs, cloud-init clean, zero-fill)
7. `vzdump 9000 --compress zstd --mode stop --dumpdir /var/lib/vz/dump`
8. Uploader le `.vma.zst` sur `files.ng-info.com/proxmox/templates/mint-xfce-v1.vma.zst`
9. `qm template 9000` pour convertir en template Proxmox

## Versioning des templates

Pour faire évoluer le template Mint sans casser les déploiements existants :
- Garder `mint-xfce-v1.vma.zst` accessible
- Créer `mint-xfce-v2.vma.zst` pour la nouvelle version
- Mettre à jour `TEMPLATE_URL` dans `lib/04-mint-vm.sh` quand on veut basculer

## Troubleshooting

### Le CT Netbird ne joint pas le management

```bash
pct enter 101
netbird status
journalctl -u netbird -n 50
```

### Le container Dockhand ne démarre pas

```bash
pct enter 102
docker logs dockhand
docker ps -a
```

### Cloud-init n'applique pas l'IP de la VM Mint

```bash
# Sur le PVE
qm guest cmd 100 network-get-interfaces

# Dans la VM (via console noVNC)
sudo cloud-init status
sudo cat /var/log/cloud-init.log | tail -50
```

### Logs du déploiement

Tous les déploiements génèrent un log dans `/var/log/ng-deploy-YYYYMMDD-HHMMSS.log`.

## Workflow client clé-en-main

1. **Atelier** : PVE installé, range client configuré sur pfSense atelier
2. **Atelier** : `bash <(curl ...)` → tout déployé et testé
3. **Atelier** : ScreenConnect configuré dans le bon group
4. **Boîte → Client** : il branche le tiny sur son routeur
5. **Bureau** : tu te connectes via Netbird, tout fonctionne
