Installation d'e-Atal V6 sous Linux
La version recommandée pour e-Atal V6 est Ubuntu 22.04.
Installation sur Ubuntu 22.04
Installation du runtime .NET
Installez le runtime ASP.NET Core :
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y aspnetcore-runtime-8.0
Vous pouvez vérifier la version installée grâce à la commande dotnet --list-runtimes
.
En cas d'utilisation de l'interface LDAP ou Active Directory, créez le lien symbolique suivant (cf problème 69456) :
sudo ln -s /usr/lib/x86_64-linux-gnu/libldap-2.5.so.0 /usr/lib/x86_64-linux-gnu/libldap-2.4.so.2
Installation de NGINX
Nous documentons ici l'installation et la configuration du proxy inverse NGINX mais vous pouvez utiliser votre propre proxy inverse (Apache ou autre).
Si vous utilisez votre propre proxy inverse, nous conseillons de désactiver les anciennes versions des protocoles SSL et TLS (ne garder que TLS 1.2 ou supérieur),
et d'effectuer une redirection du http
vers https
afin de toujours avoir une connexion sécurisée. Veuillez activer également l'entête Strict-Transport-Security
dans les réponses HTTP.
Pour installer NGINX, exécutez la commande suivante :
sudo apt-get install -y nginx
Éditez ensuite le fichier default
dans le dossier /etc/nginx/sites-available/
:
cd /etc/nginx/sites-available/
sudo nano default
et remplacez le contenu du fichier par les lignes suivantes en précisant le nom de votre serveur à la place de atalv6.mondomaine.fr
:
server_tokens off;
map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}
server {
listen 80;
server_name atalv6.mondomaine.fr;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name atalv6.mondomaine.fr;
add_header Strict-Transport-Security "max-age=2592000" always;
ssl_protocols TLSv1.2 TLSv1.3;
root /var/www/e-atalv6;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Appuyez sur CTRL+X pour quitter et sauvegarder le fichier.
Les lignes concernant les entêtes Upgrade
et Connection
sont utiles pour le support des websockets utilisés dans l'application e-AtalV6.
Le port par défaut de l'application est 5000
. Vous pouvez modifier ce port mais il faudra ensuite l'indiquer lors du lancement de l'application via l'option --urls
.
Installation de Certbot
Pour la gestion de l'https, vous pouvez par exemple utiliser Certbot afin de générer des certificats Let's Encrypt.
Installez Cerbot grâce aux lignes de commande suivantes :
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx
Suivez les instructions donnés par Certbot
pour créer votre certificat, puis rechargez la configuration NGINX :
sudo nginx -s reload
Installation de e-Atal V6
Créez un dossier e-atalv6
dans le dossier /var/www/
:
sudo mkdir /var/www/e-atalv6
Copiez le .zip d'installation vers le dossier /var/www/e-atalv6/.
Pour transférer des fichiers de Windows vers la machine Linux, vous pouvez par exemple utiliser la commande SCP via PowerShell.
Décompressez ensuite le fichier .zip :
cd /var/www/e-atalv6/
sudo apt-get install -y unzip
sudo unzip AtalV6.zip
sudo rm AtalV6.zip
Nous allons maintenant générer un certificat dans le sous-dossier Settings
pour la protection de données (cela sert notamment à encrypter le jeton anti-CSRF) :
sudo openssl req -x509 -newkey rsa:4096 -keyout Settings/data_protection_key.pem -out Settings/data_protection_cert.pem
Suivez les instructions fournies par openssl
. L'important est d'indiquer un mot de passe long, le reste est facultatif (vous pouvez appuyer sur Entrée à chaque ligne si vous ne souhaitez pas renseigner ces informations).
Créez un sous-dossier DataProtection-Keys
et donnez les droits de lecture/écriture/exécution sur ce dossier à l'utilisateur www-data
qui exécutera le service, ainsi que les droits de lecture sur le fichier data_protection_key.pem
:
sudo mkdir Settings/DataProtection-Keys
sudo setfacl -m u:www-data:rwx Settings/DataProtection-Keys/
sudo setfacl -m u:www-data:r-- Settings/data_protection_key.pem
Copiez ensuite le fichier appsettings.json
du sous-dossier SampleSettings
vers le sous-dossier Settings
, puis éditez ce fichier :
sudo cp SampleSettings/appsettings.json Settings
sudo nano Settings/appsettings.json
Indiquez la chaîne de connexion à votre base de données, puis décommentez les sections ForwardedHeadersOptions
, DataProtectionSettings
et la ligne https_port
.
Dans la section DataProtectionSettings
, indiquez le mot de passe renseigné lors de la génération du certificat.
Quittez avec CTRL+X et enregistrez le fichier.
Enregistrement de l'application en tant que service
Exécutez la commande suivante pour créer un fichier de définition de service :
sudo nano /etc/systemd/system/e-atalv6.service
Collez le contenu suivant :
[Unit]
Description=e-Atal V6
[Service]
WorkingDirectory=/var/www/e-atalv6/
ExecStart=/usr/bin/dotnet /var/www/e-atalv6/Atal.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=e-atalv6
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Indiquez le port à utiliser via l'option --urls
si vous ne souhaitez pas garder celui par défaut (5000
) :
ExecStart=/usr/bin/dotnet /var/www/e-atalv6/Atal.dll --urls "http://localhost:5678"
Puis enregistrez le fichier en quittant l'éditeur de texte via CTRL+X.
Activez le service :
sudo systemctl enable e-atalv6.service
Démarrez le service et vérifiez qu’il s’exécute :
sudo systemctl start e-atalv6.service
sudo systemctl status e-atalv6.service
Si vous souhaitez afficher les journaux d'activité, vous pouvez utiliser la commande :
sudo journalctl -fu e-atalv6.service
Pour un filtrage approfondi, les options d’heure telles que --since today
, --until 1 hour ago
ou une combinaison de ces options peuvent réduire le nombre d’entrées retournées.
Installation sur d'autres distributions Linux
Si la dernière version de .NET n’est pas fournie par les référentiels de votre distribution Linux, ajoutez le référentiel Microsoft correspondant (https://packages.microsoft.com/config/<Distribution>/<Version>/prod.(repo|list)
),
puis réinstallez les packages .NET à partir du référentiel Microsoft.
Pour Fedora, CentOS 8+, RHEL 8+, utilisez les commandes bash suivantes :
echo 'priority=50' | sudo tee -a /etc/yum.repos.d/microsoft-prod.repo
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'
sudo dnf install aspnetcore-runtime-6.0
Configuration de l'interface LDAP
L'interface LDAP devra être configurée dans Atal V5. Pour une interface Active Directory, renseignez au minimum l'adresse du serveur, le domaine et le DN de départ pour la recherche des utilisateurs :