--- title: Préparer l'hôte Docker description: Installer Docker proprement et organiser le serveur pour les déploiements. --- Une fois le système sécurisé, prépare un hôte minimal. Le serveur doit exécuter des images déjà construites : il n'a pas besoin du code source, de Node.js ni des outils de compilation. ## Installer Docker depuis le dépôt officiel Utilise le [dépôt APT officiel de Docker](https://docs.docker.com/engine/install/ubuntu/) plutôt qu'un script d'installation téléchargé à la volée. Installe Docker Engine, le plugin Buildx et Docker Compose, puis vérifie l'installation : ```bash sudo systemctl enable --now docker sudo docker run --rm hello-world sudo docker compose version ``` ## Choisir le bon niveau d'accès Ajouter un utilisateur au groupe `docker` permet d'éviter `sudo`, mais ce groupe donne des privilèges équivalents à `root`. Trois options existent : | Option | Usage | | --- | --- | | `sudo docker ...` | simple pour l'administration manuelle | | Docker rootless | bon isolement lorsque la stack le permet | | script de déploiement restreint | adapté à une CI qui doit lancer une seule opération | Évite de donner un accès Docker complet à tous les comptes. La [documentation post-installation de Docker](https://docs.docker.com/engine/install/linux-postinstall/) détaille le risque du groupe `docker` et le mode rootless. ## Organiser les fichiers de production ```text /srv/mon-app/ ├── docker-compose.prod.yml ├── .env.prod ├── .env.release └── backups/ ``` - `docker-compose.prod.yml` décrit les services ; - `.env.prod` contient la configuration et les secrets du serveur ; - `.env.release` contient uniquement le tag d'image déployé ; - `backups/` reçoit les sauvegardes chiffrées avant leur copie hors du serveur. Protège les fichiers sensibles : ```bash sudo install -d -o root -g deploy -m 0750 /srv/mon-app sudo install -o root -g deploy -m 0640 .env.prod /srv/mon-app/.env.prod ``` Les secrets ne doivent apparaître ni dans l'image, ni dans Git, ni dans les journaux de la CI. ## Préparer le réseau et le TLS 1. fais pointer le DNS vers l'adresse publique du serveur ; 2. expose uniquement le reverse proxy en `80` et `443` ; 3. garde la base de données et les services internes sur le réseau Docker ; 4. configure un certificat TLS avec renouvellement automatique ; 5. vérifie l'URL de santé depuis l'extérieur. ## Prévoir l'exploitation Avant le premier déploiement, décide : - où sont stockés les volumes persistants ; - à quelle fréquence ils sont sauvegardés ; - comment restaurer une sauvegarde sur une machine vierge ; - combien de temps conserver les journaux Docker ; - qui reçoit les alertes de disponibilité et d'espace disque ; - comment accéder au serveur si SSH ne répond plus. Copie les sauvegardes hors du serveur et vérifie régulièrement qu'une restauration complète fonctionne. Un volume Docker persistant ne remplace pas une sauvegarde. ## Prêt pour le déploiement ? - [ ] Docker et Compose proviennent du dépôt officiel ; - [ ] l'accès Docker est limité et documenté ; - [ ] le répertoire `/srv/mon-app` est protégé ; - [ ] les secrets sont présents uniquement sur le serveur ou dans un coffre ; - [ ] DNS et TLS fonctionnent ; - [ ] les volumes, sauvegardes et journaux ont une politique claire ; - [ ] une URL de santé est disponible.