# 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