diff --git a/tools/configure-scodoc9.sh b/tools/configure-scodoc9.sh new file mode 100644 index 00000000..01a4fd24 --- /dev/null +++ b/tools/configure-scodoc9.sh @@ -0,0 +1,107 @@ +#!/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 < "${SCODOC_VERSION_DIR}/scodoc.sn" # pip in our env, as user "scodoc" (cd $SCODOC_DIR && source venv/bin/activate && pip install wheel && pip install -r requirements-3.9.txt) || die "Error installing python packages" - +# --- NGINX +ln -s /etc/nginx/sites-available/scodoc9.nginx /etc/nginx/sites-enabled/ +/bin/rm -f /etc/nginx/sites-enabled/default # --- POSTGRESQL # --- Ensure postgres user "scodoc" ($POSTGRES_USER) exists diff --git a/tools/utils.sh b/tools/utils.sh index e34cc526..973ee31d 100644 --- a/tools/utils.sh +++ b/tools/utils.sh @@ -64,7 +64,7 @@ check_create_scodoc_user() { if ! id -u "${SCODOC_USER}" &> /dev/null then echo "Creating unix user ${SCODOC_USER}" - adduser --no-create-home --shell /bin/bash --gecos "ScoDoc service" "${SCODOC_USER}" || die "failed to create user" + adduser --shell /bin/bash --disabled-password --gecos "ScoDoc service" "${SCODOC_USER}" || die "failed to create user" else echo "Unix user ${SCODOC_USER} exists" fi