DocScoDoc/docs/GuideInstallDebian11.md

223 lines
9.8 KiB
Markdown
Raw Normal View History

2021-08-22 08:14:55 +02:00
# 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
2021-08-24 19:51:54 +02:00
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](http://www.debian.org) 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](https://listes.univ-paris13.fr/mailman/listinfo/scodoc-devel) ).
- Note 1: l'image du CD d'installation de Debian (amd64) peut se trouver ici: [https://www.debian.org/distrib/netinst](https://www.debian.org/distrib/netinst.md), 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.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> 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](screens/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).
1. 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
```
3. 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.
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre réseau (voire d'Internet): par exemple "ping serveur.exemple.fr".
1. 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`).
1. 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
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> 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 <a href="/attachments/scodoc.list" download>scodoc.list</a> 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.
3. Démarrer nginx: `systemctl restart nginx`
4. 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_TEST`pour 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-exemple`est 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
2021-08-22 08:14:55 +02:00
7. **Lancer ScoDoc**:
```
systemctl restart scodoc
```
et voila !
Visiter `https://votre.site.fr/` pour achever la configuration et utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md)
## En cas de problème
Ne pas hésiter à me contacter ou à écrire sur la liste notes (voir [Listes de diffusion](ListesDeDiffusion.md)).
* Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.md)
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](https://wiki.debian-fr.xyz/D%C3%A9sactiver_l%27IPv6)).
## Ensuite...
* Appliquez fréquemment les [mises à jour](MisesAJour.md)
* Mettez en place des [sauvegardes](SauvegardesBases.md)
* Abonnez vous au moins à la liste d'annonces: voir [Listes de diffusion](ListesDeDiffusion.md)