ScoDoc/tools/configure-scodoc9.sh

107 lines
3.3 KiB
Bash
Raw Normal View History

#!/bin/bash
# Script à lancer en tant que root sur un nouveau serveur
# pour terminer la configuration juste après apt-get install scodoc9
# On ne place pas ces commandes dans le postinst
# car c'est spécifique et optionnel.
# Le répertoire de ce script:
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "$SCRIPT_DIR/config.sh"
source "$SCRIPT_DIR/utils.sh"
cd /opt/scodoc || die "Error: chdir to /opt/scodoc"
# ------------ CONFIG FIREWALL OPTIONNELLE
echo
echo "Le firewall aide a proteger votre serveur d'intrusions indesirables."
echo -n "Voulez vous configurer un firewall minimal (ufw) ? (y/n) [n] "
read -r ans
if [ "$(norm_ans "$ans")" = 'Y' ]
then
echo 'Installation du firewall IP ufw (voir documentation Debian)'
echo ' on autorise les connexions ssh et https'
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow https
yes | ufw enable
echo "firewall ufw activé."
fi
# ------------ CONFIG NGINX
# --- CERTIFICATS AUTO-SIGNES
echo
echo "Le serveur Web utilisé par ScoDoc et nginx"
echo "Il est possible d'utiliser des certificats cryptographiques"
echo "auto-signés, qui ne seront pas reconnus comme de confiance"
echo "par les navigateurs, permettent de tester."
echo "Si vous avez déjà de vrais certificats, passez cette étape et installez-les ensuite."
echo -n 'Voulez-vous générer des certificats ssl auto-signés ? (y/n) [y] '
read -r ans
if [ "$(norm_ans "$ans")" != 'N' ]
then
# génération des certifs: cert.pem key.pem dans /opt/scodoc-data/certs/
su -c "(cd $SCODOC_VAR_DIR && mkdir -p certs && openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -keyout certs/key.pem -out certs/cert.pem)" "$SCODOC_USER"
systemctl restart nginx
fi
# ------------ CREATION ENVIRONNEMENT
echo
echo "Créer (et écraser) le fichier /opt/scodoc/.env"
echo " définissant les variables d\'environnement ?"
echo "(si vous ne savez pas, répondez oui !)"
echo -n 'Générer /opt/scodoc/.env ? (y/n) [y] '
read -r ans
if [ "$(norm_ans "$ans")" != 'N' ]
then
echo -n "Adresse mail de l\'administrateur du site: "
read SCODOC_ADMIN_MAIL
SECRET_KEY=$(python3 -c "import uuid; print(uuid.uuid4().hex)")
cat > /opt/scodoc/.env <<EOF
# .env for ScoDoc (production)
FLASK_APP=scodoc.py
FLASK_ENV=production
MAIL_SERVER=localhost
MAIL_PORT=25
SCODOC_ADMIN_MAIL="$SCODOC_ADMIN_MAIL" # important: le mail de admin
SECRET_KEY="$SECRET_KEY" # une chaine aléatoire"
EOF
echo "Fichier /opt/scodoc/.env créé avec:"
cat /opt/scodoc/.env
echo
echo "Vous pouvez le modifier si besoin."
echo
fi
# ------------ CREATION BASE DE DONNEES
echo
echo "Voulez-vous créer la base SQL SCODOC ?"
echo "répondre O sauf si vous avez déjà une base existante"
echo "que vous souhaitez conserver."
echo -n 'Créer la base de données SCODOC ? (y/n) [y] '
read -r ans
if [ "$(norm_ans "$ans")" != 'N' ]
then
# on ne créée pas les bases TEST et DEV
su -c "/opt/scodoc/tools/create_database.sh SCODOC" || die "Erreur: create_database.sh SCODOC"
echo "base SCODOC créée."
# ------------ INITIALISATION BASE DE DONNEES
su -c "(cd /opt/scodoc; source venv/bin/activate; flask db-init; flask user-password admin)" || die "Erreur: db-init"
fi
systemctl start redis
systemctl start scodoc9
echo
echo "Service configuré et démarré."
echo