DocScoDoc/docs/GuideInstallDebian11.md
2021-08-24 19:51:54 +02:00

9.8 KiB

Installation de ScoDoc sur Debian 11 (Bullseye)

Ce document décrit la procédure d'installation et de configuration de ScoDoc. Cette procédure doit être effectué sur la machine serveur avec un accès administrateur (root).

XXX en cours de rédaction.

En attendant, voir https://scodoc.org/git/viennet/ScoDoc

ScoDoc est livré avec des scripts d'installation qui configurer presque automatiquement votre serveur (serveur web, base de données, etc): vous pouvez donc installer et configurer ScoDoc avec des connaissances réduites sur le système Linux.

Cette documentation est prévue pour installer ScoDoc sur un système Debian 11 (Bullseye, stable) s'exécutant sur une machine intel-like 64bits (architecture AMD64). Debian s'installe facilement en une quinzaine de minutes, sur une machine normale ou un serveur virtualisé. Il est vivement déconseillé de tenter l'installation sur une autre version.

Merci de signaler tout problème (emmanuel.viennet@gmail.com ou scodoc-devel ).

  • Note 1: l'image du CD d'installation de Debian (amd64) peut se trouver ici: https://www.debian.org/distrib/netinst, choisir la version "petits CD" pour amd64 (*Il est indispensable d'utiliser une version 64 bits ! *)

  • Note 2: une version Docker serait utile: avis aux volontaires.

/!\ Important: La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme VirtualBox ou VMWare). L'installation ci-dessous va en effet modifier de nombreux paramètres de votre système linux (serveur web, firewall, serveur SQL, messagerie, ...).

1) Préalable: configurer un serveur linux

Le serveur devrait être accessible depuis Internet.

Informations sur les flux réseau

Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.

  • le trafic entrant est sur le port 443 (le trafic http/80 est redirigé vers le https).

  • le serveur doit pouvoir envoyer du mail (serveur postfix en local, à configurer pour utiliser un relais smtp ou envoyer directement, selon votre politique);

  • Les serveurs de mise à jour de Debian doivent être accessibles (en http, voir /etc/apt/sources.list);

  • Les serveurs scodoc.org et scodoc.iutv.univ-paris13.fr doivent être accessibles (80 et 443).

Installation Linux Debian

Nous recommandons d'effectuer une installation standard de Debian par le réseau (netinst). Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout décocher sauf "Serveur SSH" et "Utilitaires standard du système". Le script d'installation de ScoDoc se chargera ensuite d'installer tous les éléments nécessaires (serveur web, messagerie, etc.).

InstallDebian6-1.png

Points à vérifier avant d'installer ScoDoc

Checklist minimale de votre système Linux Debian:

  1. Connexion à Internet: le réseau doit être accessible. En effet, le script d'installation va installer des paquetages du système Debian puis télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur Subversion).
  2. Vérifiez la connectivité, par exemple:
ping www.univ-paris13.fr
(quitter avec ctrl-c)
cd /tmp
wget --no-check-certificate https://www-lipn.univ-paris13.fr/projects/scodoc
# doit créer un fichier nomme "scodoc" contenant du code HTML
  1. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais dans ce cas le nom de votre serveur sera son adresse IP (eg 192.168.0.10) et il ne sera peut être pas accessible de l'extérieur.
  2. Vérifiez que votre serveur est accessible depuis une autre machine de votre réseau (voire d'Internet): par exemple "ping serveur.exemple.fr".
  3. Date et heure: vérifier que les dates et heure sont correctes, même après reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (aptitude install ntp), et éventuellement dpkg-reconfigure tzdata).
  4. Cette liste est incomplète... et n'oubliez pas: avant de passer en production, mettez en place des sauvegardes sérieuses !

Configuration si utilisation d'un proxy

Si votre accès à Internet passe par un proxy, l'indiquer au moment de l'installation Debian. Il est possible qu'il vous faille configurer d'autres éléments, voir par exemple https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy

2) Installation de ScoDoc sur Debian

2.1) Charger le logiciel

/!\ Les commandes ci-dessous sont à exécuter dans un terminal ouvert en tant que root sur le serveur. Vous pouvez utiliser su (ou sudo su) pour devenir root).

  • Ajouter le dépot scodoc: copier ce fichier scodoc.list dans /etc/apt/sources.list.d/

  • Installer la clé: en root sur le serveur, lancer

     apt-get install gnupg
     wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
    
  • Installer le logiciel:

    apt-get update apt-get install scodoc9

Notez que l'installation du paquet scodoc9 va créer automatiquement un utilisateur scodoc qui sera utilisé par le serveur.

2.2) Configuration des logiciels annexes

  1. Activer le firewall (optionnel, recommandé)

    ufw default deny incoming ufw default allow outgoing ufw allow ssh ufw allow https yes | ufw enable

  2. ScoDoc utilise le serveur Web nginx. Installer les certificats SSL nécessaires pour https. C'est indispensable sur un serveur en production. Sur un serveur de test, pour faire des essais, vous pouvez utiliser des certificats auto-signés. Procéder ainsi:

    su scodoc # utilisateur scodoc cd /opt/scodoc-data mkdir -p certs && openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -keyout certs/key.pem -out certs/cert.pem

Sinon, éditer le fichier /etc/nginx/sites-available/scodoc9.nginx pour indiquer vos certificats.

  1. Démarrer nginx: systemctl restart nginx

  2. Démarrer redis systemctl start redis

2.3) Création des bases de données

ScoDoc 9 utilise une base de données unique, regroupant tous les départements et les utilisateurs. Elle est nommée SCODOC (et SCODOC_DEV en mode développement, ou SCODOC_TESTpour les tests unitaires). Cette base est créée via sqlalchemy (l'ORM habituel de Flask).

Pour créer la base de données, lancer le script:

su scodoc # au besoin (pas root !)
cd /opt/scodoc
./tools/create_database.sh SCODOC
./tools/create_database.sh SCODOC_DEV # pour la base "developement"
./tools/create_database.sh SCODOC_TEST # pour les tests unitaires

Les bases créées appartiennent à l'utilisateur (rôle) postgres scodoc (qui a été créé par le script d'installation précédent).

2.4) Variables d'environnement

Le serveur utilise des variables d'environnement donnant la configuration de base. Le plus simple est de les grouper dans un fichier .env (dans /opt/scodoc/.env) qui sera lu automatiquement au démarrage:

# .env for ScoDoc _development_

FLASK_APP=scodoc.py
FLASK_ENV=development # ou production

MAIL_SERVER=votre.serveur.de.mail.net # ou vide si pas de mail
MAIL_PORT=25

SCODOC_ADMIN_MAIL="adresse.admin@toto.fr" # important: le mail de admin
SECRET_KEY="CGGAJAKlh6789JJK?KNAb=" # une chaine aléatoire

Le fichier /opt/scodoc/.env-exempleest donné à titre... d'exemple. Vous pouvez faire:

# en tant qu'utilisateur scodoc
cd /opt/scodoc/
cp .env-exemple .env
nano .env # édition

Il est nécessaire de modifier MAIL_SERVER, SCODOC_ADMIN_MAIL et SECRET_KEY. Cette dernière variable doit contenir une chaîne aléatoire qui servira de clé pour sécuriser les formulaires. Vous pouvez utiliser la commande suivante pour afficher une chaine de ce genre (choisie au hasard), que vous copierez dans votre fichier .env:

python3 -c "import uuid; print(uuid.uuid4().hex)"

Nota: dans le futuir, on va intégrer cela dans le fichier d'install.

2.5) Initialisation de la base et de l'utilisateur admin

En tant qu'utilisateur scodoc:

su scodoc # si besoin
cd /opt/scodoc
source venv/bin/activate

Puis initialisation de l'appli:

flask db-init

Et saisie du mot de passe admin:

flask user-password admin

Optionnel: On peut ensuite à tout moment créer des utilisateurs la commande:

flask user-create toto Ens DEPT

Ens indique le rôle (ici enseignant) et DEPT l'acronyme du département.

Pour créer un utilisateur "super admin", c'est à dire admin dans tous les départements:

flask user-create admin1 SuperAdmin @all

xxx XXX xxx

  1. Lancer ScoDoc:
    systemctl restart scodoc

et voila !

Visiter https://votre.site.fr/ pour achever la configuration et utiliser le logiciel: voir la page GuideConfig

En cas de problème

Ne pas hésiter à me contacter ou à écrire sur la liste notes (voir Listes de diffusion).

  • Problèmes d'envoi de courrier électronique (mail): voir ProblemesMail

Nota: sur certains réseaux, l'autoconfiguration IPv6 pose problème (par exemple: bloquage des envois de mails). Au besoin, il est possible de désactiver IPv6 (voir par exemple ici).

Ensuite...