Aller au contenu
Documentation Plateforme READ Ouvrir la plateforme

Chapitre 3

Installation

Préparer un serveur Ubuntu, créer le fichier de réglages et réaliser le premier déploiement.

Concerne :Équipe techniqueHébergeur

Ce chapitre installe la plateforme sur un serveur neuf. Comptez une heure, dont une dizaine de minutes pour la première construction de l'image.

Système#

Connectez-vous au serveur avec le compte d'exploitation (ici ubuntu), puis :

  1. Limitez SSH aux clés et interdisez la connexion directe de root. Le fichier est lu avant 50-cloud-init.conf : la première valeur rencontrée l'emporte.

    sudo tee /etc/ssh/sshd_config.d/10-read.conf <<'EOF'
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin no
    EOF
    sudo sshd -t && sudo systemctl reload ssh
  2. Ouvrez le pare-feu pour SSH, HTTP et HTTPS (HTTP/3 compris) :

    sudo ufw allow OpenSSH && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw allow 443/udp
    sudo ufw --force enable
  3. Créez un espace d'échange de 2 Go :

    sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  4. Vérifiez que les mises à jour de sécurité automatiques sont actives :

    systemctl is-enabled unattended-upgrades
  5. Vérifiez que l'horloge est synchronisée (System clock synchronized: yes) :

    timedatectl

Attention

Gardez une session SSH ouverte pendant que vous modifiez SSH et le pare-feu, et testez une nouvelle connexion avant de la fermer : une erreur pourrait vous enfermer dehors.

Remarque

Docker publie ses ports en contournant ufw. Seuls les ports 80 et 443 de Caddy sont publiés : la base et l'application ne sont pas joignables de l'extérieur.

Docker#

  1. Installez Docker Engine depuis le dépôt officiel (https://download.docker.com/linux/ubuntu), en suivant la procédure de docs.docker.com, avec les paquets docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin.
  2. Autorisez le compte d'exploitation à utiliser Docker et créez les dossiers de la plateforme :

    sudo usermod -aG docker ubuntu
    sudo mkdir -p /opt/read && sudo chown ubuntu:ubuntu /opt/read
    sudo mkdir -p /var/backups/read && sudo chmod 700 /var/backups/read
  3. Déconnectez-vous puis reconnectez-vous pour que l'appartenance au groupe docker prenne effet, et vérifiez :

    docker version && docker compose version

Fichier de réglages#

Le fichier /opt/read/.env porte tous les réglages et secrets du serveur. Il est créé une fois, à partir du modèle deploy/.env.example du dépôt ; chaque variable est décrite au chapitre Configuration.

  1. Copiez le contenu de deploy/.env.example dans /opt/read/.env et protégez le fichier :

    chmod 600 /opt/read/.env
  2. Générez un mot de passe différent pour POSTGRES_PASSWORD, POSTGRES_APP_PASSWORD et ADMIN_MOT_DE_PASSE, par exemple :

    openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32; echo

    Le mot de passe de l'administrateur doit compter au moins 8 caractères dont un chiffre.

  3. Réglez au minimum :

    VariableValeur
    SITE_ADDRESSread.example.org (le nom de domaine, sans https://)
    URL_PUBLIQUEhttps://read.example.org
    ADMIN_EMAILAdresse de la personne qui administrera la plateforme
    ASPNETCORE_ENVIRONMENTProduction
    DEMO_AFFICHER, DEMO_DONNEESfalse
    EMAIL_*Le serveur SMTP

Danger

Sur une plateforme réelle, DEMO_DONNEES doit valoir false : à true, des données entièrement fictives seraient chargées dans une base vide et mêlées ensuite aux vraies.

Premier déploiement#

Depuis le poste de l'équipe technique, à la racine du dépôt, sur le commit à déployer :

deploy/deployer.sh <alias-ssh>

Sous Windows (Git Bash), passez par le client OpenSSH du système, qui voit l'agent de clés :

SSH=/c/Windows/System32/OpenSSH/ssh.exe deploy/deployer.sh <alias-ssh>

Le script envoie le code du commit courant dans /opt/read/code, lie /opt/read/.env, puis lance la construction et le démarrage en arrière-plan. La première construction télécharge le SDK .NET et les paquets NuGet (une dizaine de minutes). Suivez-la sur le serveur :

tail -f /opt/read/deploiement.log

Le détail du déploiement est au chapitre Déploiement et mises à jour.

Vérifications#

  1. Les conteneurs sont en place : app « healthy », migrations « Exited (0) ».

    cd /opt/read/code && docker compose ps -a
  2. Le site répond en HTTPS sur https://read.example.org, et http://read.example.org redirige vers HTTPS.
  3. L'état de santé n'est pas public : https://read.example.org/health répond 404.
  4. L'administrateur se connecte avec ADMIN_EMAIL et ADMIN_MOT_DE_PASSE ; la plateforme lui demande aussitôt de choisir un nouveau mot de passe.
  5. Videz ensuite ADMIN_MOT_DE_PASSE dans /opt/read/.env : il ne sert qu'à la création du premier administrateur.
  6. Essayez l'envoi d'un e-mail : « Mot de passe oublié » sur la page de connexion, pour le compte administrateur.

Après l'installation#

  • Activez la sauvegarde quotidienne et la copie hors serveur (Sauvegarde et restauration), puis faites une restauration d'essai.
  • Mettez en place une surveillance de disponibilité (Supervision).
  • Confiez la suite à l'administrateur fonctionnel : paramètres, logo, comptes, référentiels (Guide de l'administrateur).

Plateforme READ — Édition 1.0 — octobre 2026. Documentation générée à partir des sources du projet ; les captures montrent des données de démonstration entièrement fictives.