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 :
Limitez SSH aux clés et interdisez la connexion directe de
root. Le fichier est lu avant50-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 sshOuvrez 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 enableCré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/fstabVérifiez que les mises à jour de sécurité automatiques sont actives :
systemctl is-enabled unattended-upgradesVé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#
- 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 paquetsdocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin. 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/readDéconnectez-vous puis reconnectez-vous pour que l'appartenance au groupe
dockerprenne 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.
Copiez le contenu de
deploy/.env.exampledans/opt/read/.envet protégez le fichier :chmod 600 /opt/read/.envGénérez un mot de passe différent pour
POSTGRES_PASSWORD,POSTGRES_APP_PASSWORDetADMIN_MOT_DE_PASSE, par exemple :openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32; echoLe mot de passe de l'administrateur doit compter au moins 8 caractères dont un chiffre.
Réglez au minimum :
Variable Valeur SITE_ADDRESSread.example.org(le nom de domaine, sanshttps://)URL_PUBLIQUEhttps://read.example.orgADMIN_EMAILAdresse de la personne qui administrera la plateforme ASPNETCORE_ENVIRONMENTProductionDEMO_AFFICHER,DEMO_DONNEESfalseEMAIL_*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.logLe détail du déploiement est au chapitre Déploiement et mises à jour.
Vérifications#
Les conteneurs sont en place :
app« healthy »,migrations« Exited (0) ».cd /opt/read/code && docker compose ps -a- Le site répond en HTTPS sur
https://read.example.org, ethttp://read.example.orgredirige vers HTTPS. - L'état de santé n'est pas public :
https://read.example.org/healthrépond 404. - L'administrateur se connecte avec
ADMIN_EMAILetADMIN_MOT_DE_PASSE; la plateforme lui demande aussitôt de choisir un nouveau mot de passe. - Videz ensuite
ADMIN_MOT_DE_PASSEdans/opt/read/.env: il ne sert qu'à la création du premier administrateur. - 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).