🐧 Guide Complet : Serveur Ubuntu + Docker

De zéro à héros, étape par étape

💻 Sur ton PC principal (Windows)

1. Télécharger les fichiers nécessaires

Avant de commencer, tu vas avoir besoin de :

2. Installer Rufus

  1. Ouvre le fichier rufus-x.x.exe téléchargé
  2. C'est un exécutable portable, pas besoin d'installation
  3. Si Windows te demande une autorisation, clique sur "Oui"

3. Créer la clé USB bootable avec Rufus

⚠️ ATTENTION : Toutes les données de la clé USB seront effacées !
  1. Insère ta clé USB
  2. Ouvre Rufus
  3. Périphérique : Sélectionne ta clé USB
    Vérifie bien que c'est la bonne clé !
  4. Type de démarrage : Clique sur "SÉLECTION" et choisis le fichier ISO d'Ubuntu téléchargé
  5. Schéma de partition : Laisse sur "GPT" (pour les PC récents en UEFI)
    Si ton PC serveur est très vieux, choisis "MBR"
  6. Système de fichiers : Laisse sur "FAT32" ou "Large FAT32"
  7. Clique sur "DÉMARRER"
  8. Si on te demande le mode, choisis "Écrire en mode Image ISO (Recommandé)"
  9. Confirme le formatage en cliquant sur "OK"
  10. Attends que ça se termine (5-15 minutes selon ta clé)
✅ Ta clé USB est prête ! Tu peux la retirer en toute sécurité.

🖥️ Sur ton PC serveur

4. Démarrer sur la clé USB

  1. Insère la clé USB dans le PC serveur
  2. Allume ou redémarre le PC
  3. Accède au menu de boot en appuyant sur une touche au démarrage :
    • F12 - Dell, Lenovo
    • F9 - HP
    • F2 ou Suppr - ASUS, Acer, MSI
    • Échap - Certains PC
    Spam la touche dès que tu allumes le PC !
  4. Sélectionne ta clé USB dans le menu de boot

5. Installer Ubuntu

  1. Sélectionne "Try or Install Ubuntu"
  2. Attends le chargement, puis choisis "Installer Ubuntu"
  3. Langue : Français
    Disposition du clavier : Français (ou Français AZERTY)
  4. Type d'installation : Installation normale
    • ✅ Coche "Télécharger les mises à jour pendant l'installation"
    • ✅ Coche "Installer les logiciels tiers" (pour les codecs et drivers)
  5. Type d'installation : "Effacer le disque et installer Ubuntu"
    ⚠️ Ça efface tout le disque ! Assure-toi qu'il n'y a rien d'important.
  6. Clique sur "Installer maintenant", puis confirme
  7. Fuseau horaire : Paris
  8. Crée ton compte :
    • Ton nom : Ton prénom
    • Nom de l'ordinateur : serveur (ou ce que tu veux)
    • Nom d'utilisateur : admin (ou ce que tu veux)
    • Mot de passe : Un truc solide !
  9. Attends la fin de l'installation (15-30 minutes)
  10. Redémarre quand demandé et retire la clé USB

6. Premier démarrage et mise à jour

Connecte-toi avec ton compte, puis ouvre un terminal :

Raccourci clavier : Ctrl + Alt + T

Mise à jour du système
# Mettre à jour la liste des paquets
sudo apt update

# Mettre à jour tous les paquets
sudo apt upgrade -y

7. Installer les outils essentiels

Installation des utilitaires
# Éditeur de texte nano (plus simple que vim)
sudo apt install nano -y

# Client SSH (pour accéder au serveur à distance)
sudo apt install openssh-server -y

# Outils réseau
sudo apt install net-tools curl wget htop -y

# Git (utile pour cloner des repos)
sudo apt install git -y
📝 Récap des outils installés :
  • nano - Éditeur de texte simple dans le terminal
  • openssh-server - Permet de se connecter au serveur à distance
  • net-tools - Commandes réseau comme ifconfig
  • curl / wget - Télécharger des fichiers
  • htop - Moniteur de ressources système
  • git - Gestionnaire de versions

8. Configurer une IP fixe

C'est super important pour que ton serveur ait toujours la même adresse sur ton réseau local.

Trouver ton interface réseau et ton IP actuelle
# Affiche tes interfaces réseau
ip a

Repère :

  • Le nom de ton interface (généralement enp0s3, eth0, ou eno1 pour ethernet)
  • Ton IP actuelle (du genre 192.168.1.XX)
Configuration de l'IP fixe via Netplan
# Éditer la configuration Netplan
sudo nano /etc/netplan/01-network-manager-all.yaml

Remplace le contenu par (adapte avec ton interface et l'IP que tu veux) :

📄 /etc/netplan/01-network-manager-all.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:  # ⚠️ Remplace par ton interface !
      dhcp4: no
      addresses:
        - 192.168.1.100/24  # ⚠️ Choisis une IP libre sur ton réseau
      routes:
        - to: default
          via: 192.168.1.254  # IP de ta Freebox
      nameservers:
        addresses:
          - 212.27.40.240  # DNS Free
          - 212.27.40.241  # DNS Free backup
          - 8.8.8.8        # DNS Google (backup)
⚠️ Important :
  • Choisis une IP entre 192.168.1.100 et 192.168.1.200 pour éviter les conflits avec le DHCP de ta Freebox
  • L'IP de la Freebox est généralement 192.168.1.254
Appliquer la configuration
# Appliquer les changements
sudo netplan apply

# Vérifier que ça marche
ip a

# Tester la connexion internet
ping -c 3 google.com

🐳 Installation de Docker

9. Installer Docker

Installation de Docker via le script officiel
# Télécharger et exécuter le script d'installation Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Ajouter ton utilisateur au groupe docker (pour ne plus avoir besoin de sudo)
sudo usermod -aG docker $USER

# IMPORTANT : Déconnecte-toi et reconnecte-toi pour que ça prenne effet
# Ou simplement redémarre :
sudo reboot
Vérifier l'installation
# Après reconnexion, vérifie que Docker fonctionne
docker --version
docker compose version

# Teste avec un conteneur hello-world
docker run hello-world
✅ Si tu vois un message de bienvenue de Docker, c'est bon !

10. Créer le réseau Docker pour Traefik

Création du réseau proxy
# Créer un réseau Docker qui sera partagé entre tous tes conteneurs
docker network create proxy

Ce réseau permettra à Traefik de communiquer avec tous tes conteneurs.

11. Créer la structure de dossiers

Organisation des dossiers
# Créer le dossier principal pour Docker
mkdir -p ~/docker

# Créer les dossiers pour chaque service
mkdir -p ~/docker/traefik
mkdir -p ~/docker/portainer

# Se déplacer dans le dossier docker
cd ~/docker

🔀 Configuration de Traefik

12. Créer le docker-compose de Traefik

Création du fichier
# Aller dans le dossier traefik
cd ~/docker/traefik

# Créer le fichier docker-compose.yml
nano docker-compose.yml

Copie-colle ce contenu :

📄 ~/docker/traefik/docker-compose.yml
services:
  traefik:
    image: traefik:v3.1
    container_name: traefik
    restart: unless-stopped
    command:
      # Dashboard
      - "--api.dashboard=true"
      - "--api.insecure=true"  # Permet d'accéder au dashboard sans HTTPS en local
      - "--log.level=INFO"
      - "--accesslog=true"

      # Providers
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.endpoint=unix:///var/run/docker.sock"

      # Entrypoints
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"

    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"  # Dashboard Traefik

    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

    networks:
      - proxy

    labels:
      - "traefik.enable=true"

networks:
  proxy:
    external: true
💡 Explication :

Cette configuration est simplifiée car tu n'as pas de nom de domaine. Le dashboard sera accessible sur http://IP-DU-SERVEUR:8080

Lancer Traefik
# Lancer Traefik en arrière-plan
docker compose up -d

# Vérifier que ça tourne
docker compose ps

# Voir les logs en cas de problème
docker compose logs -f
✅ Traefik devrait être accessible sur http://IP-DU-SERVEUR:8080

📦 Installation de Portainer

13. Créer le docker-compose de Portainer

Portainer est une interface web pour gérer tes conteneurs Docker facilement.

Création du fichier
# Aller dans le dossier portainer
cd ~/docker/portainer

# Créer le fichier docker-compose.yml
nano docker-compose.yml
📄 ~/docker/portainer/docker-compose.yml
services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    ports:
      - "9443:9443"  # Interface HTTPS
      - "9000:9000"  # Interface HTTP
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.portainer.rule=PathPrefix(`/portainer`)"
      - "traefik.http.routers.portainer.entrypoints=web"
      - "traefik.http.services.portainer.loadbalancer.server.port=9000"

volumes:
  portainer_data:

networks:
  proxy:
    external: true
Lancer Portainer
# Lancer Portainer
docker compose up -d

# Vérifier
docker compose ps
✅ Portainer est accessible sur :
  • https://IP-DU-SERVEUR:9443 (HTTPS)
  • http://IP-DU-SERVEUR:9000 (HTTP)
⚠️ Première connexion : Tu devras créer un compte admin lors de la première visite. Fais-le rapidement car le délai expire après quelques minutes !

📡 Configuration de la Freebox

14. Accéder à l'interface Freebox

  1. Ouvre un navigateur sur n'importe quel PC du réseau
  2. Va sur http://mafreebox.freebox.fr
  3. Connecte-toi avec le mot de passe de ta Freebox

15. Rediriger les ports (Port Forwarding)

Pour que ton serveur soit accessible depuis Internet, tu dois rediriger les ports.

  1. Dans l'interface Freebox, va dans "Paramètres de la Freebox"
  2. Puis "Gestion des ports" ou "Redirection de ports"
  3. Ajoute ces redirections :
Port externe Port interne IP destination Protocole Usage
80 80 192.168.1.100 TCP HTTP
443 443 192.168.1.100 TCP HTTPS
⚠️ Remplace 192.168.1.100 par l'IP fixe que tu as configurée pour ton serveur !

16. Trouver ton IP publique

Ton IP publique Free, c'est celle qui te permet d'accéder à ton serveur depuis Internet.

Trouver ton IP publique
# Depuis ton serveur
curl ifconfig.me

Ou va simplement sur monippublique.com

💡 Astuce Free :

Chez Free, ton IP publique est généralement fixe (elle ne change pas). C'est un gros avantage ! Tu peux y accéder via http://TON-IP-PUBLIQUE

17. (Optionnel) Utiliser le nom de domaine gratuit Free

Free propose un nom de domaine gratuit du type xxx.hd.free.fr !

  1. Va sur http://mafreebox.freebox.fr
  2. Paramètres de la FreeboxNom de domaine
  3. Active le service et choisis ton sous-domaine
✅ Tu pourras alors accéder à ton serveur via http://ton-nom.hd.free.fr

🔐 Connexion SSH depuis ton PC principal

18. Se connecter au serveur en SSH

Tu peux maintenant contrôler ton serveur depuis ton PC principal !

Depuis Windows (PowerShell ou Terminal)
# Connexion SSH (remplace par ton IP et ton utilisateur)
ssh admin@192.168.1.100

# Si c'est la première connexion, tape "yes" pour accepter la clé
💡 Astuce :

Depuis Windows 10/11, SSH est intégré ! Tu peux l'utiliser directement dans PowerShell ou Windows Terminal.

📝 Commandes utiles à retenir

Docker

# Voir tous les conteneurs (même arrêtés)
docker ps -a

# Voir les logs d'un conteneur
docker logs nom-du-conteneur

# Redémarrer un conteneur
docker restart nom-du-conteneur

# Arrêter tous les conteneurs
docker stop $(docker ps -q)

# Supprimer les conteneurs/images/volumes inutilisés
docker system prune -a

Docker Compose

# Lancer les services (depuis le dossier avec docker-compose.yml)
docker compose up -d

# Arrêter les services
docker compose down

# Voir les logs
docker compose logs -f

# Reconstruire et relancer
docker compose up -d --build

# Mettre à jour les images
docker compose pull && docker compose up -d

Système

# Mettre à jour le système
sudo apt update && sudo apt upgrade -y

# Voir l'espace disque
df -h

# Voir l'utilisation mémoire/CPU
htop

# Redémarrer le serveur
sudo reboot

# Éteindre le serveur
sudo shutdown now

🔧 Dépannage

Problèmes courants

❌ "Permission denied" avec Docker

Tu n'as pas ajouté ton user au groupe docker ou tu ne t'es pas reconnecté.

sudo usermod -aG docker $USER
# Puis déconnecte-toi et reconnecte-toi

❌ "Network proxy not found"

Tu n'as pas créé le réseau Docker.

docker network create proxy

❌ Impossible d'accéder au serveur depuis Internet

  • Vérifie que les ports sont bien redirigés dans la Freebox
  • Vérifie que l'IP dans les redirections est bien l'IP fixe de ton serveur
  • Vérifie que Traefik tourne : docker ps

❌ Plus d'accès Internet sur le serveur

Problème de configuration Netplan. Vérifie ton fichier :

sudo nano /etc/netplan/01-network-manager-all.yaml
# Vérifie l'indentation (espaces, pas de tabulations !)
sudo netplan apply