# Installation

SkyView est distribué sous forme d'une image Docker unique, et une seule commande suffit pour démarrer le service. Ce chapitre couvre les prérequis système, le choix d'une variante, la commande d'installation, le mappage des ports/volumes, les mises à jour et la désinstallation.

## Prérequis système

| Élément | Minimum | Recommandé |
| --- | --- | --- |
| Système d'exploitation | Noyau Linux ≥ 5.x (Ubuntu 22.04+ / Debian 12+) | Ubuntu 24.04 LTS |
| CPU | 4 cœurs x86_64 (ou RK3588 ARM64) | 8 cœurs ou plus |
| Mémoire | 4 Go | 8 à 16 Go (flux multiples + détection IA) |
| Disque | 64 Go (enregistrement seul) | 1 To+ HDD (à dimensionner selon la durée de rétention) |
| Docker | 20.10+ | Dernière version stable |
| GPU (optionnel) | Aucun | iGPU Intel 11e génération+ / NVIDIA série 30+ |

> **ℹ️ Architectures prises en charge : x86_64 et RK3588**
>
> SkyView distribue principalement des images x86_64 ; sur ARM, il prend actuellement en charge le **Rockchip RK3588** (la variante rknn accélérée par NPU, voir [Déploiement RK3588](/docs/install-rk3588)). Les autres appareils ARM (Raspberry Pi / modèles Orange Pi non RK3588 / Apple Silicon, etc.) ne sont pas pris en charge pour le moment.

## Choisir une variante d'image

L'accélération matérielle pour la détection IA se décline en 4 variantes selon le matériel. Choisir la mauvaise variante ne fait que ralentir ou désactiver la détection ; tout le reste (enregistrement, lecture, audio bidirectionnel) n'est pas affecté. Le script d'installation en une ligne détecte automatiquement votre matériel et choisit la bonne variante pour vous — le tableau ci-dessous n'est qu'une référence pour ceux qui souhaitent choisir manuellement.

| Tag d'image | Matériel adapté | Remarques |
| --- | --- | --- |
| `cpu` | CPU uniquement | Solution universelle de repli, performances moyennes, convient pour 2 à 4 flux à 5 im/s |
| `openvino` | CPU / iGPU / NPU Intel | 11e génération Core et plus, meilleur rapport qualité/prix |
| `cuda` | GPU NVIDIA | Nécessite nvidia-container-toolkit, série GTX 16 et plus |
| `trt` | GPU NVIDIA + ≥ 8 Go de VRAM (le plus rapide) | Plus rapide que cuda, mais **le démarrage échoue avec moins de 8 Go de VRAM** ; le premier lancement effectue une optimisation ponctuelle du modèle d'environ 3 minutes |

## Choisir un palier selon le matériel (référence détaillée)

Lors de l'achat d'une nouvelle machine ou de l'évaluation d'une machine existante, utilisez les 5 paliers ci-dessous, regroupés selon la puissance du CPU. Chacun indique l'image recommandée, le nombre de caméras qu'il peut gérer de façon fiable, et les fonctionnalités de détection IA qu'il peut exécuter sans à-coups (vous les activez toujours manuellement dans la console web).

| Palier | Exemple de matériel | Caméras | Image recommandée | Positionnement en une phrase |
| --- | --- | --- | --- | --- |
| **Entrée de gamme** | Celeron J4125 / J4105 / J4025 (ancien Atom) | 1 flux | `cpu` | Matériel ancien / de récupération à petit prix — juste assez pour fonctionner |
| **Débutant à la maison** | N100 / N97 / N95 (Alder Lake-N 4 cœurs) | 1 à 2 flux | `openvino` | Usage domestique courant, palier d'entrée avantageux |
| **Aide aux aînés** | N150 / N250 / N305 | 1 à 3 flux | `openvino` | Le minimum requis pour activer la détection de chute |
| **Multi-caméras** | i5 / i7 11e-13e génération + iGPU Iris Xe (80EU+) | 2 à 4 flux | `openvino` | Un plafond raisonnable pour de nombreuses caméras + détection sur toute la maison |
| **Fonctionnalités complètes / usage commercial** | GPU dédié NVIDIA GTX 1060 / RTX 2060 ou supérieur | 4+ flux | `cuda` (avec ≥ 8 Go de VRAM, vous pouvez passer à `trt` pour un gain de vitesse d'environ 2×) | Peut tout activer — gestes, pleurs de bébé, et plus encore |

### Fonctionnalités de détection que chaque palier peut exécuter sans à-coups

Les paliers supérieurs peuvent activer davantage de fonctionnalités de façon fiable. Sur un palier bas, activer trop de fonctionnalités fait prendre du retard à l'inférence par rapport à la fréquence d'images de la caméra et fait manquer des événements. Le tableau ci-dessous indique les capacités de détection **recommandées** pour chaque palier — ✅ signifie recommandé, ❌ signifie déconseillé sur ce matériel. Une installation neuve n'active par défaut que la détection d'objets ; tout le reste doit être activé manuellement dans la console web → Paramètres → Détection, selon les besoins.

| Fonctionnalité de détection | Entrée de gamme J4125 | Domestique N100 | Aînés N150 | Multi-caméras Iris Xe | Complet NVIDIA |
| --- | --- | --- | --- | --- | --- |
| Détection de mouvement | ✅ | ✅ | ✅ | ✅ | ✅ |
| Reconnaissance faciale | ✅ | ✅ | ✅ | ✅ | ✅ |
| Détection d'objets (personne/véhicule/animal/etc.) | ❌ | ✅ | ✅ | ✅ | ✅ |
| Détection de chute | ❌ | ❌ | ✅ | ✅ | ✅ |
| Reconnaissance de plaques d'immatriculation | ❌ | ❌ | ❌ | ✅ | ✅ |
| Reconnaissance de gestes | ❌ | ❌ | ❌ | ❌ | ✅ |
| Détection de pleurs de bébé | ❌ | ❌ | ❌ | ❌ | ✅ |

> **💡 Configurez au moins un flux secondaire**
>
> Exécuter la détection IA sur un flux secondaire (640x360 / 480p) consomme 5 à 10 fois moins de CPU que le flux principal (1080p). Presque toutes les caméras ONVIF proposent un flux secondaire. Voir [Ajout de caméras](/docs/cameras).

> **ℹ️ Avec de nombreuses caméras, désactivez la détection sur celles qui ne sont pas critiques**
>
> Sur 5 caméras, seules 2 sont peut-être critiques (porte d'entrée / salon) ; laissez les 3 autres enregistrer sans détection. Ainsi, même un N100 fonctionne confortablement — concentrez la puissance de calcul sur les caméras qui comptent vraiment.

## Déploiement en une ligne (recommandé)

Exécutez une seule commande et le script détecte automatiquement votre matériel, choisit la variante d'image la mieux adaptée, télécharge l'image et démarre le conteneur — 5 à 15 minutes de bout en bout selon votre connexion.

```bash
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash
```

> **💡 Vous voulez examiner le script avant de l'exécuter**
>
> Rediriger un script vers bash via un pipe est une pratique courante, mais pas la plus sûre. Pour l'auditer d'abord : `curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh -o install.sh`, puis `cat install.sh` pour le lire, puis `bash install.sh`. Vous pouvez aussi ajouter `--detect-only` pour que le script se contente de sonder le matériel et de recommander une variante sans réellement déployer.

Ce que fait le script :

- Vérifie que le système est Linux x86_64 avec Docker installé
- Vérifie que les ports tels que `23406 / 23880 / 24214 / 24215 / 23515` sont libres
- Sonde le matériel : GPU NVIDIA (y compris la VRAM) / iGPU Intel / NPU Intel
- Choisit automatiquement la variante d'image la mieux adaptée parmi cpu / openvino / cuda / trt
- Télécharge l'image (depuis Aliyun par défaut) + écrit un fichier docker-compose + génère automatiquement un secret aléatoire fort
- Démarre le conteneur et attend que le contrôle de santé passe (environ 60 secondes)
- Affiche l'URL du navigateur (par exemple `http://192.168.1.10:23406/`)

> **ℹ️ Le script ne touchera pas à votre système**
>
> Il n'installera pour vous ni Docker, ni le pilote NVIDIA, ni nvidia-container-toolkit. Si l'un de ces prérequis manque, le script s'arrête et vous indique les commandes d'installation pour votre distribution ; exécutez-les vous-même, puis relancez le script.

### Options courantes

| Option | Utilité |
| --- | --- |
| `--variant cpu/openvino/cuda/trt` | Forcer une variante d'image précise au lieu de la sélection automatique |
| `--detect-only` | Se contenter de détecter le matériel + recommander une variante, sans déployer réellement |
| `--offline image.tar.gz` | Déploiement hors ligne par paquet (sans accès internet) |
| `--data-dir /path` | Répertoire d'état personnalisé (base de données / cookies / journaux, par défaut `~/skyview/data`) |
| `--recordings-dir /path` | Diriger les enregistrements vers un disque volumineux / NAS séparément (par défaut `~/skyview/recordings`, à côté de data ; les enregistrements peuvent atteindre l'échelle du To) |
| `--registry <url>` | Utiliser un registre d'images privé |
| `--version 0.6.0` | Télécharger une version précise (par défaut la dernière) |
| `-y` ou `--yes` | Mode non interactif |

```bash
# Afficher uniquement la variante recommandée, sans déployer
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash -s -- --detect-only

# Forcer la variante trt et ignorer les invites
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash -s -- --variant trt -y

# Déploiement hors ligne (copiez d'abord l'archive tar.gz de l'image sur la machine via scp)
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh -o install.sh
bash install.sh --offline /path/to/skyview-image.tar.gz
```

*Quelques exemples courants*

> **💡 Besoin d'un accès via un domaine public**
>
> Si vous placez Caddy / Nginx devant pour la terminaison HTTPS + un domaine personnalisé, le script vous **demandera de manière interactive** votre domaine et le protocole (http/https) et écrira automatiquement la configuration. Pour un déploiement purement en réseau local, choisissez simplement N et accédez-y via `http://<IP du serveur>:23406` dans le navigateur.

## Déploiement par plateforme (choisissez votre appareil)

Le script en une ligne est le plus simple sur un environnement Linux + Docker générique, mais les NAS, HA OS, PVE et plateformes similaires ont chacun leur propre interface de gestion de conteneurs, leur mode réseau, leur méthode de passthrough iGPU et leurs pièges connus. Voici des guides dédiés pour les plateformes cibles courantes, incluant le fichier compose spécifique à chaque plateforme, le chemin de déploiement via l'interface, la configuration du pare-feu et les questions fréquentes :

- [Synology DSM 7.2+](/docs/install-synology) — Container Manager + modèles à iGPU Intel (DS920+ / DS423+ / DS224+, etc.)
- [Unraid 6.12+](/docs/install-unraid) — Compose Manager + plugin Intel GPU TOP / NVIDIA Driver
- [fnOS](/docs/install-fnos) — base Debian 12 + iGPU intégré sur N100/N305
- [UGREEN UGOS Pro](/docs/install-ugos) — modèles x86 (DXP2800/DXP4800/DXP6800, etc.)
- [TrueNAS Scale 24.10+](/docs/install-truenas) — YAML d'application personnalisée + persistance de dataset ZFS
- [Ubuntu / Debian](/docs/install-ubuntu-debian) — apt + docker compose v2, le chemin de déploiement le plus simple
- [Fedora 39+](/docs/install-fedora) — dnf docker-ce + étiquettes de volume SELinux + règles firewalld
- [Proxmox VE LXC](/docs/install-pve-lxc) — LXC privilégié + passthrough iGPU Intel (choix numéro un pour les utilisateurs PVE N100 / N305 à domicile)
- [Module complémentaire Home Assistant OS](/docs/install-ha-addon) — ajoutez le dépôt SkyView et installez en un clic le module yunkan / yunkan-openvino
- [Carte RK3588](/docs/install-rk3588) — un mini boîtier ARM basse consommation avec accélération NPU Rockchip (Orange Pi 5 / Radxa Rock 5, etc.) ; carte 4 Go recommandée, 8 Go+ expérimental

> **💡 Vous ne trouvez pas votre plateforme ?**
>
> Le guide Ubuntu / Debian couvre en réalité 99 % des distributions Linux (CentOS Stream / Rocky / Arch / openSUSE, etc. — il suffit de remplacer `apt install` par le gestionnaire de paquets approprié). Pour les systèmes basés sur SELinux (CentOS / Rocky / Alma), suivez la gestion des étiquettes de volume `:Z` du guide Fedora.

## Déploiement manuel (avancé)

Si vous souhaitez contrôler le processus étape par étape, suivez les 4 étapes ci-dessous. Le script en une ligne n'est essentiellement que ces commandes automatisées.

1. **Télécharger l'image**

   Choisissez l'une des quatre variantes ci-dessus :

   ```bash
   docker pull registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-cpu:latest
   ```

2. **Créer les répertoires data / recordings**

   Les petites données d'état (base de données / cookies / journaux) résident dans `data/` ; les enregistrements (pouvant atteindre l'échelle du To) vont dans un répertoire `recordings/` voisin, afin que vous puissiez les diriger séparément vers un disque volumineux / NAS.

   ```bash
   mkdir -p ~/skyview/data ~/skyview/recordings && cd ~/skyview
   ```

3. **Démarrer le conteneur**

   Utilisez le mode réseau hôte pour que les caméras atteignent directement les ports de l'hôte, évitant que le NAT ne dégrade la qualité vidéo. La liaison de licence nécessite de monter `/etc/machine-id` et `product_uuid` — ne les omettez pas.

   ```bash
   docker run -d --name yunkan --restart=always \
     --network host \
     -v $(pwd)/data:/app/data \
     -v $(pwd)/recordings:/app/data/recordings \
     -v /etc/machine-id:/etc/machine-id:ro \
     -v /sys/class/dmi/id/product_uuid:/sys/class/dmi/id/product_uuid:ro \
     registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-cpu:latest
   ```

4. **Ouvrir le navigateur**

   La première visite mène à l'assistant `/setup` ; poursuivez avec le chapitre [Premier lancement](/docs/quickstart).

   ```
   http://<IP du serveur>:23406
   ```

> **⚠️ Les informations matérielles doivent être montées**
>
> La licence est liée au matériel de cette machine. Si vous ne montez que data et non ces deux fichiers, l'empreinte matérielle change à la prochaine reconstruction du conteneur et la licence devient invalide.

## Ports et mappage des volumes

SkyView fonctionne en mode réseau hôte, donc tous les ports sont liés directement sur l'hôte. Les ports de production utilisent un décalage inhabituel dans la plage 2xxxx pour éviter les conflits avec un nginx existant sur 80/443, redis sur 6379, ou d'autres services sur 8080/8554/8888.

| Port | Utilité | Requis ? |
| --- | --- | --- |
| **23406** / TCP | Console web + API de l'application | **Requis** (peut aussi être placé derrière un proxy inverse pour le HTTPS) |
| **23880** / TCP | Sortie RTSP directe (pour VLC / NVR tiers) | Optionnel |
| **24214** / TCP | Lecture + vue en direct de secours | **Recommandé** |
| **24215** / TCP | Vue en direct (signalisation du canal à faible latence) | **Recommandé** |
| **23515** / UDP | Vue en direct (audio/vidéo du canal à faible latence) | **Recommandé** ; sans lui, le flux repasse automatiquement sur 24214 (la latence passe à 2-4 s) |

| Chemin dans le conteneur | Utilité | Recommandation |
| --- | --- | --- |
| `/app/data` | Petites données d'état : base de données / configuration / cookies / journaux | **À monter obligatoirement**, persiste entre les conteneurs |
| `/app/data/recordings` | Enregistrements (échelle du To, imbriqué sous `/app/data`) | **À monter obligatoirement**, peut pointer vers un disque volumineux / NAS ; les modèles sont intégrés à l'image, aucun montage nécessaire |
| `/etc/machine-id` | Empreinte matérielle 1/2 | **À monter obligatoirement** en lecture seule |
| `/sys/class/dmi/id/product_uuid` | Empreinte matérielle 2/2 | **À monter obligatoirement** en lecture seule |

## Mise à niveau

**Le plus simple : mise à niveau en un clic depuis la console web.** Ouvrez Console web → Paramètres → Système → Rechercher les mises à jour, puis cliquez sur « Mettre à niveau » lorsqu'une nouvelle version apparaît : le système télécharge la nouvelle image et recrée le conteneur automatiquement (la base de données est sauvegardée au préalable, et si la nouvelle version ne démarre pas, un retour arrière automatique est effectué). La page se reconnecte à la nouvelle version en quelques minutes.

Vous pouvez aussi mettre à niveau manuellement via SSH :

```bash
cd ~/skyview
docker compose -f compose.yml pull
docker compose -f compose.yml up -d
```

Ou relancez le script en une ligne (avec `-y` pour ignorer les invites) :

```bash
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash -s -- -y
```

> **💡 Les données migrent automatiquement**
>
> Les mises à niveau du schéma de base de données s'exécutent automatiquement au démarrage du conteneur — aucune étape manuelle. Nous recommandons de faire d'abord une sauvegarde avec `tar -czf data-backup-$(date +%F).tar.gz data/`.

## Désinstallation

```bash
cd ~/skyview
docker compose -f compose.yml down
docker rmi registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-cpu:latest
# Les enregistrements / la base de données sont conservés ; pour un nettoyage complet :
rm -rf ~/skyview
```

> **🛑 La suppression du répertoire de données est irréversible**
>
> Il contient la base de données, la bibliothèque de visages, les enregistrements et les informations de connexion 115. Avant de supprimer, assurez-vous que chaque enregistrement dont vous avez besoin a été téléchargé ou envoyé dans le cloud.

---

来源:https://yun-kan.com/fr/docs/install
