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_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).

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