forked from ScoDoc/DocScoDoc
223 lines
9.8 KiB
Markdown
223 lines
9.8 KiB
Markdown
|
|
# 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](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
|
|
|
|
où `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
|
|
|
|
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)
|