4.0 KiB
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