Skip to content

Latest commit

 

History

History
105 lines (76 loc) · 3.72 KB

File metadata and controls

105 lines (76 loc) · 3.72 KB

dotnet-fsharp-pg.sh

Bash Script Ubuntu 24.04 Debian 13 .NET LTS PostgreSQL 17 Idempotent Secure

Script Bash d’installation automatisée d’un environnement F#/ASP.NET Core + Giraffe + PostgreSQL sur Ubuntu 24.04 et Debian 13 (Trixie).


⚠️⚠️⚠️ Nota bene :

Ce script tente d'imposer des invariants (idempotence, nettoyage, sécurité) sur un système d'exploitation par nature instable et global (les paquets .deb, les chemins apt). C'est une bataille contre la mutation d'état.

Nix est l'étape logique après ce type de script, pas Docker.

Le problème de l'impératif : Si le script échoue à la ligne 150, le système est dans un état intermédiaire incertain. Il n'y a pas de garantie transactionnelle.

La solution fonctionnelle (Nix) : Nix est déclaratif et pur. Il n'installe rien globalement. Il lit un graphe de dépendances (votre flake.nix), calcule un hash cryptographique pour l'ensemble du graphe, et place le résultat dans /nix/store/. Il n'y a pas de mutation d'état du système hôte, donc l'idempotence n'a pas à être codée, elle est garantie mathématiquement par le modèle.

ADR : Nix sera désormais notre choix par défaut.


Fonctionnalités

  • Installation du SDK .NET (dernière version LTS)
  • Templates et outils F# (FSAutoComplete, Fantomas, FSharp.Analyzers)
  • Framework web Giraffe (version LTS)
  • PostgreSQL 17 avec configuration sécurisée (mots de passe forts, pg_hba.conf restrictif)
  • Configuration nginx pour reverse proxy
  • Optimisations système pour ASP.NET Core (sysctl, limites)
  • Script idempotent et sécurisé
  • Nettoyage automatique et gestion d’erreurs robuste

Usage

  1. Rendez le script exécutable :

    chmod +x dotnet-fsharp-pg.sh
  2. Lancez le script :

    ./dotnet-fsharp-pg.sh
    • Mode production :
      ./dotnet-fsharp-pg.sh --production
    • Utiliser les dépôts Microsoft pour .NET (méthode recommandée : mise à jour via apt, intégration système, désinstallation propre) :
      ./dotnet-fsharp-pg.sh --repo-method
    • Afficher l’aide :
      ./dotnet-fsharp-pg.sh --help
  3. Après installation :
    Pour appliquer les variables d’environnement immédiatement :

    source ~/.bashrc

Informations de connexion

  • Les mots de passe PostgreSQL sont générés et stockés dans : ~/.fsharp-aspnet-credentials
  • Fichier .pgpass créé pour la connexion automatique avec psql.

Exemples de commandes

  • Lancer le projet de test :
    cd ~/fsharp-aspnet-test/GiraffeTestApp
    dotnet run
  • Créer un nouveau projet Giraffe :
    dotnet new giraffe -n MonProjetGiraffe
    cd MonProjetGiraffe
    dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL

Prérequis

  • Ubuntu 24.04 ou Debian 13 (Trixie)
  • Accès sudo

Sécurité

  • Ne pas lancer le script en tant que root.
  • Les accès PostgreSQL sont restreints et les mots de passe forts.

Auteur : Olivier Chavarin