122 lines
4.0 KiB
Markdown
122 lines
4.0 KiB
Markdown
# Configuration manuelle de ScoDoc sur Debian 11 (Bullseye)
|
|
|
|
Instructions pour utilisateurs ne souhaitant pas utiliser le script
|
|
|
|
/opt/scodoc/tools/configure-scodoc9.sh
|
|
|
|
Toutes les opérations décrites sur cette page sont effectuées par ce script.
|
|
Cette page est donc destinée aux curieux et futurs développeurs. Se référer au
|
|
script lui même pour les détails.
|
|
|
|
## Activation du firewall
|
|
|
|
(optionnel, recommandé)
|
|
|
|
ufw default deny incoming
|
|
ufw default allow outgoing
|
|
ufw allow ssh
|
|
ufw allow http
|
|
ufw allow https
|
|
yes | ufw enable
|
|
|
|
## Certificats pour nginx
|
|
|
|
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
|
|
|
|
Répondre aux questions, la seule importante étant `Common Name (e.g. server
|
|
FQDN or YOUR name)` en réponse à laquelle vous devez fournir le nom que vous
|
|
utiliserez pour vous adresser au serveur: par exemple
|
|
`monscodoc.mondomaine.fr`. Ce nom dépend de votre configuration réseau.
|
|
|
|
|
|
Sinon, éditer le fichier `/etc/nginx/sites-available/scodoc9.nginx` pour
|
|
indiquer vos certificats.
|
|
|
|
## Démarrage de nginx et redis
|
|
|
|
su # se connecter en root d'une manière ou d'une autre
|
|
systemctl restart nginx
|
|
systemctl start redis
|
|
|
|
Il est utile de vérifier que le serveur Web a bien démarré, avec
|
|
|
|
systemctl status nginx
|
|
|
|
## 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).
|
|
|
|
## 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-data/.env`)
|
|
qui sera lu automatiquement au démarrage:
|
|
|
|
# .env for ScoDoc (production)
|
|
|
|
FLASK_APP=scodoc.py
|
|
FLASK_ENV=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 à changer
|
|
|
|
Le fichier `/opt/scodoc/.env-exemple` est donné à titre... d'exemple. Vous pouvez faire:
|
|
|
|
# en tant qu'utilisateur scodoc
|
|
cp /opt/scodoc/.env-exemple /opt/scodoc-data/.env
|
|
nano /opt/scodoc-data/.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)"
|
|
|
|
Note: le fichier utilisé par Flask est bien sûr `/opt/scodoc/.env`,
|
|
mais l'installeur créé un lien symbolique vers `/opt/scodoc-data/.env` afin
|
|
de conserver ce fichier durant les mise à jour par `apt-get upgrade`.
|
|
|
|
## 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
|