Installation sur Linux - v4
Préalables
Les scripts utilisés sont disponibles sur le gitlab de la Forge des communs numériques.
- Ubuntu (à partir la version 18.04) ;
- Debian 9 ;
- Debian 10 ;
- Debian 11
- Debian 12 (actuellement stable).
Vous pouvez installer une ou plusieurs instances de l'e-comBox derrière un Reverse Proxy externe. Pour configurer ce dernier, consultez la documentation sur la Forge.
| Préalable, en cas de proxy pour curl et git |
|---|
Définition des variables d'environnement nécessaires à l'exécution de commandes curl via un proxy :
|
À noter également que si l'installation de Docker ne le fait pas le script de configuration crée le dossier "$USER/.docker" et le fichier /$USER/.docker/config.json".
- le dossier d'installation /opt/e-comBox devient /opt/e-combox - le dossier /opt/ecomBox/e-comBox_portainer devient /opt/ecombox/e-combox_portainer - le dossier /opt/ecomBox/e-comBox_reverseproxy devient /opt/ecombox/e-combox_reverseproxy...
Principe de fonctionnement
L'installation se réalise avec le script configure_application.sh. Il s'agit d'une installation automatique qui installe tous les composants nécessaires. Le script installe l'e-comBox à partir du fichier /opt/e-combox/param.conf (qui a été enrichi de nouveaux paramètres - voir ici) sans interaction avec l'utilisateur.
Le script configure_application.sh peut être exécuté :
- en mettant en option sur la ligne de commande :
- un fichier contenant les paramètres que l'on veut ajouter et/ou modifier,
- les différents paramètres (comme le mot de passe de Portainer avec -p mot_de_passe) ;
- sans option sur la ligne de commande si les valeurs des paramètres du fichier /opt/e-combox/param.conf conviennent.
Si vous ne passez pas par un reverse-proxy externe et que vous n'avez pas de certificat, il sera créé un certificat auto-signé mais il est aussi possible d'utiliser le script manage_certificat.sh pour générer un certificat Let's Encrypt pour votre domaine".
- créer des sites via le script "manage_sites.sh" ;
- de remplacer les identifiants par défaut des administrateurs des Prestashop, WordPress et Odoo par le couple mail de l'élève/mot de passe généré aléatoirement.
Installation de l'e-comBox 4.4
1. Téléchargement du script configure_application.sh
Le téléchargement du script peut se faire à partir de la commande :
wget https://forge.apps.education.fr/e-combox/e-comBox_scriptsLinux/raw/4.4/configure_application.sh --output-document configure_application.sh
Pour vous simplifier la tache vous allez peut-être avoir besoin de télécharger également le fichier param.conf (voir exemple 4) qu'il suffira de compléter avec les principaux paramètres :
wget https://forge.apps.education.fr/e-combox/e-comBox_scriptsLinux/raw/4.4/param.conf --output-document param.conf
2. Exécution du script configure_application.sh
Usage: bash configure_application.sh [-f "valeur"] [-i "valeur"] [-d "valeur"] [-r "valeur"] [-c "valeur"] [-p "valeur"] [s | b] [-h]
-f Chemin vers le fichier de paramètre [-f "/chemin/nom_fichier"]
-i Adresse IP privée ou nom de domaine correspondant à une adresse IP privée
[-i "@IP_PRIVEE" | -i "nom_domaine"]
-d Adresse IP publique ou nom de domaine correspondant à une adresse IP publique
[-d @IP_PUBLIQUE | -d nom_domaine].
Pour supprimer une adresse IP publique ou un domaine existant -d ""
-r Passage par un Reverse-Proxy externe ou non [-r "O" | -r "N"]
-c Chemin en cas de Reverse-Proxy externe [-c "chemin"]. Pour supprimer un chemin existant -c ""
-p Mot de passe de Portainer [-p "mot_de_passe"]
Les caractères suivants " $ ` \ & | ! [space] ne peuvent pas être utilisés en ligne de commande
-s Met la variable de suppression des images à "true" le temps d'exécution du script [-s]
-b Met la variable de suppression des images à "false" le temps d'exécution du script [-n]
-h Détail des options
Il existe plusieurs possibilités d'exécution du script, ci-dessous quelques exemples.
Exemple 1 :
bash configure_application.sh -i "172.31.40.109" -d "ecb.nom.domaine" -c "rne" -r "O" -p "mdp_portainer"
L'adresse IP privée du serveur sur lequel l'instance de l'e-comBox est installée est "172.31.40.109".
Le domaine est "ecb.nom.domaine" et l'interface de l'e-comBox sera accessible via un Reverse Proxy externe. En l'espèce https://ecb.nom.domaine/rne/app.
Le mot de passe de Portainer est "mdp_portainer". Ce mot de passe doit obligatoirement être précisé en cas d'installation ou de réinitialisation de l'instance. Sinon il n'est pas utile de le préciser (sauf si vous l'avez modifié sur Portainer).
Exemple 2 :
bash configure_application.sh -i "172.31.40.111" -p "mdp_portainer"
L'adresse IP privée du serveur sur lequel l'instance de l'e-comBox est installée est "172.31.40.111".
L'interface de l'e-comBox sera accessible uniquement à partir de l'adresse IP privée sur le port 8800 défini par défaut dans le fichier param.conf. En l'espèce https://172.31.40.111:8800/app.
Le mot de passe de Portainer est "mdp_portainer". Ce mot de passe doit obligatoirement être précisé en cas d'installation ou de réinitialisation de l'instance. Sinon il n'est pas utile de le préciser (sauf si vous l'avez modifié sur Portainer).
Exemple 3 :
bash configure_application.sh -i "172.31.40.121" -d "ecb.nom.domaine" -p "mdp_portainer"
L'adresse IP privée du serveur sur lequel l'instance de l'e-comBox est installée est "172.31.40.121".
L'interface de l'e-comBox sera accessible à distance sur le port 8800 défini par défaut dans le fichier param.conf mais sans passage par un reverse-proxy externe. En l'espèce https://ecb.nom.domaine:8800/app.
Le mot de passe de Portainer est "mdp_portainer". Ce mot de passe doit obligatoirement être précisé en cas d'installation ou de réinitialisation de l'instance. Sinon il n'est pas utile de le préciser (sauf si vous l'avez modifié sur Portainer).
Exemple 4 :
bash configure_application.sh -f "chemin_vers_fichier"
Exemple de fichier :
ADRESSE_IP_PRIVEE="172.31.40.109" DOMAINE="ecb.nom.domaine" RP_EXT="O" CHEMIN="demo" MDP_PORTAINER="mdp_portainer" DOSSIER_MDP_KEY="/etc/ssl/certs/ecombox" DOSSIER_MDP_CHIFFRE="/etc/ssl/certs/ecombox"
L'adresse IP privée du serveur sur lequel l'instance de l'e-comBox est installée est "172.31.40.109".
Le domaine est "ecb.nom.domaine" et l'interface de l'e-comBox sera accessible via un Reverse Proxy externe. En l'espèce https://ecb.nom.domaine/demo/app.
Le mot de passe de Portainer est "mdp_portainer". Ce mot de passe doit obligatoirement être précisé en cas d'installation ou de réinitialisation de l'instance. Sinon il n'est pas utile de le préciser (sauf si vous l'avez modifié sur Portainer).
Exemple 5 :
bash configure_application.sh -f "chemin_vers_fichier"
Exemple de fichier :
ADRESSE_IP_PRIVEE="172.31.40.122" DOMAINE="ecb.nom.domaine" RP_EXT="N" CHEMIN="" PORT_RP="443"
L'adresse IP privée du serveur sur lequel l'instance de l'e-comBox est installée est "172.31.40.122".
le port du Reverse Proxy interne a été modifié pour utiliser le port par défaut du HTTPS. Ainsi, il n'est plus nécessaire de préciser le port dans l'URL même si l'on ne passe pas par un Revers Proxy externe. L'interface de l'e-comBox sera accessible via l'URL https://ecb.nom.domaine/app.
Le mot de passe de Portainer est "mdp_portainer". Ce mot de passe doit obligatoirement être précisé en cas d'installation ou de réinitialisation de l'instance. Sinon il n'est pas utile de le préciser (sauf si vous l'avez modifié sur Portainer).
Exemple 6 :
bash configure_application.sh
Dans ce cas, le script s'appuie entièrement sur les valeurs des paramètres figurant dans /opt/e-combox/param.conf qu'il faut donc au préalable créer.
L'accès à l'interface de l'e-comBox
L'URL d'accès dépend des informations fournies dans /opt/e-combox/param.conf.
Exemple 1 :
ADRESSE_IP_PRIVEE="172.31.40.109" DOMAINE="ecb.nom.domaine" RP_EXT="O" CHEMIN="rne" PORT_RP="8800"
L'URL d'accès à l'interface est https://ecb.nom.domaine/rne/app/
Note : ecb.nom.domaine peut être remplacé par une adresse IP publique.
Exemple 2 :
ADRESSE_IP_PRIVEE="172.31.40.111" DOMAINE="" RP_EXT="N" CHEMIN="" PORT_RP="8800"
L'URL d'accès à l'interface est https://172.31.40.111:8800/app/
Note : L'adresse IP privée peut être remplacée par un nom de domaine en capacité d'être résolu par un serveur DNS.
Exemple 3 :
ADRESSE_IP_PRIVEE="172.31.40.121" DOMAINE="ecb.nom.domaine" RP_EXT="N" CHEMIN="" PORT_RP="8800"
L'URL d'accès à l'interface est https://ecb.nom.domaine:8800/app/
Note : ecb.nom.domaine peut être remplacé par une adresse IP publique.
Exemple 4 :
ADRESSE_IP_PRIVEE="172.31.40.109" DOMAINE="ecb.nom.domaine" RP_EXT="O" CHEMIN="rne" MDP_PORTAINER="mdp_portainer" DOSSIER_MDP_KEY="/etc/ssl/certs/ecombox" DOSSIER_MDP_CHIFFRE="/etc/ssl/certs/ecombox"
L'URL d'accès à l'interface est https://ecb.nom.domaine:8800/app/
Exemple 5 :
ADRESSE_IP_PRIVEE="172.31.40.122" DOMAINE="ecb.nom.domaine" RP_EXT="N" CHEMIN="" PORT_RP="443"
L'URL d'accès à l'interface est https://ecb.nom.domaine/app/
Le fichier param.conf
#!/bin/bash # Définition des paramètres utiles à l'application. # Version du fichier paramètre (ne pas changer la valeur). VERSION_PARAM="$BRANCHE.0" # Validation (ou non) de la licence. # Si cette variable n'a pas la valeur "true", l'application ne pourra pas être installée. # La licence est consultable ici : https://forge.apps.education.fr/e-combox_scriptslinux/-/raw/dev/LICENCE. # Les conditions plus générales de la licence CeCILL sont définies sur le site : http://www.cecill.info. VALIDATION_LICENCE="true" # Mot de passe pour la connexion en admin à e-comBox et Portainer. # Le mot de passe doit contenir au moins de 12 caractères sans espace. # Le mot de passe ne doit pas contenir les caractères spéciaux suivants : \ " ` $ # Il ne peut pas être égal à "portnairAdmin" qui est connu de tous. # Le système met le mot de passe à jour avec celui saisi si les deux conditions suivantes sont réunies : # 1 - À l'installation ou à la réinitialisation de l'application. # 2 - Si le mot de passe renseigné a été au préalable modifié sur Portainer. # Ce mot de passe en clair sera chiffré, puis supprimé à l'installation, à la réinitialisation ou à la reconfiguration de l'application. # C'est donc normal qu'une fois l'application installée, réinitialisée ou mise à jour, ce paramètre apparaisse vide. MDP_PORTAINER="" # Adresse IP privée ou nom de domaine correspondant à une adresse IP privée. # Si vous saisissez un nom de domaine, celui-ci doit pouvoir être résolu. # Si aucun domaine n'est configuré, les sites seront accessibles à partir du réseau local via cette adresse IP privée. # L'adresse IP privée doit obligatoirement être configurée même si le paramètre suivant est renseigné. ADRESSE_IP_PRIVEE="" # Adresse IP publique ou nom de domaine correspondant à une adresse IP publique. # Si vous saisissez un nom de domaine, celui-ci doit pouvoir être résolu. # Il s'agit du nom de domaine ou de l'adresse IP qui sera utilisée pour la connexion à l'interface, à Portainer et aux sites à la place de l'adresse IP privée. # Aucune valeur ne doit donc être saisie ici si vous ne voulez pas cela, notamment si le serveur ne doit pas être accessible de l'extérieur. DOMAINE="" # Utilisation d'un Reverse-Proxy externe configuré par vos soins - O/N (N par défaut). # Si vous passez par un reverse proxy externe, mettre "O". # Les minuscules sont également acceptées. RP_EXT="N" # Chemin d'accès éventuel (en cas d'utilisation d'un Reverse-Proxy externe). # Ne pas mettre de "/" dans le chemin. CHEMIN="" # Dossier en chemin absolu contenant la clé secrète qui chiffre le mot de passe de Portainer. # Par défaut /opt/e-combox, il est conseillé de le modifier. # En cas de modification après installation, ne pas oublier de déplacer le fichier contenant la clé secrète. DOSSIER_MDP_KEY="/opt/e-combox" # Dossier en chemin absolu contenant le mot de passe chiffré. # Par défaut /opt/e-combox, il est conseillé de le modifier. # En cas de modification après installation, ne pas oublier de déplacer le fichier contenant le mot de passe chiffré. DOSSIER_MDP_CHIFFRE="/opt/e-combox" # Port utilisé pour un accès direct à Portainer (8880 par défaut). # Ce port n'a vocation à n'être utilisé qu'en cas de dépannage si l'accès via le reverse-proxy est impossible. PORT_PORTAINER="8880" # Port utilisé pour l'accès à Portainer, à l'interface et aux sites (8800 par défaut). # Il s'agit du seul port exposé. # Si aucun service Web n'écoute sur le port 443 de votre serveur, ce dernier peut être utilisé. PORT_RP="8800" # Port utilisé pour le registry (5443 par défaut). PORT_REGISTRY="5443" # Adresse du Proxy. # Saisissez ip-proxy:port. ADRESSE_PROXY="" # Hôtes à ignorer par le proxy. # Ce paramètre n'est à renseigner que si une adresse de Proxy a été saisie. # Saisissez le ou les hôtes séparés par une virgule sans espace. NO_PROXY="" # Adresse du réseau interne à Docker. # Cette adresse réseau doit être éventuellement modifiée notamment pour adapter le masque. # Un site nécessite 2 adresses IP réseau. # Compte tenu des conteneurs utilitaires, avec un masque en /24, le nombre de sites est limité à 120. # Cette adresse peut être modifiée ultérieurement. NET_ECB="192.168.97.0/24" # Suppression des images non associées à un site en cours d'exécution (false par défaut). # Cela permet de gagner de l'espace mais aussi de supprimer des images qui ne seront plus jamais utilisées. # Le premier démarrage des sites sera un peu plus long car les images correspondantes devront être de nouveau téléchargées. # Définir le paramètre à "true" si vous voulez supprimer ces images (conseillé lors d'une migration). DEL_IMAGES="false" # Redémarrage des sites (true par défaut). # Lors de la mise à jour de l'application il est nécessaire de stopper les sites. # Mettre cette variable à true relance automatiquement tous les sites qui était lancés avant la mise à jour. # Définir le paramètre à false si vous ne voulez pas relancer automatiquement les sites. RESTART_SITES="true" # Permet de s'authentifier sur le Docker Hub avant de télécharger les images. # Permet de bénéficier de plus de possibilité de téléchargement d'images toutes les 6 heures. # Facultatif car il est peu probable que l'utilisation de l'e-comBox soit impactée par les limitations imposées par Docker. # Voir ici les limitations : https://docs.docker.com/docker-hub/usage/pulls/. # La troisième variable permet de gérer la désauthentification une fois les téléchargements effectués (true par défaut). # Ce mot de passe en clair sera chiffré, puis supprimé à l'installation, à la réinitialisation ou à la reconfiguration de l'application. # C'est donc normal qu'une fois l'application installée, réinitialisée ou mise à jour, ce paramètre apparaisse vide. LOGIN_DH="" PASSWORD_DH="" LOGOUT_DH="true" # Les 2 variables qui suivent sont utiles pour donner le chemin vers les éléments pour mettre en place un certificat existant. # Vous pouvez les laisser vides dans trois cas. # Cas 1 : si vous passez par un reverse proxy externe, les certificats configurés dans ce dernier sont propagés. # Cas 2 : l'accès à l'e-comBox ne va se faire que via le réseau local. # Cas 3 vous ne disposez pas de certificat pour votre nom de domaine. # À noter que le script manage_certificat.sh crée un certificat Let's Encrypt et permet de mettre à jour l'application # si une des 6 variables qui suivent ont été modifiées # Un certificat auto-signé se créera alors automatiquement via les 4 variables qui suivent. # Fichier certificat existant avec le chemin complet /chemin/fichier.crt ou /chemin/fichier.pem. CHEMIN_CERT="" # Fichier de la clé privée existante correspondante au certificat avec le chemin complet /chemin/fichier.key. CHEMIN_KEY="" # Uniquement si utilisation de manage_certificat.sh pour créer un certificat Let's Encrypt # Adresse de courriel non obligatoire pour créer le certificat (mais recommandé par Lets'encrypt) MAIL="" # Les 4 variables suivantes sont utiles pour créer un certificat auto signé. # Elles sont utilisés pour le certificat du registry local. # Elles sont également utilisées pour le reverse proxy (Nginx) si CHEMIN_CERT et CHEMIN_KEY sont vides. # Même si vous avez un certificat existant, elles doivent obligatoirement être renseignées. # Vous pouvez les modifier comme il vous convient. # Code Pays sur 2 lettres. CODE_PAYS="FR" # Nom Pays. NOM_PAYS="France" # Nom région. NOM_REGION="Corse" # Nom organisation. NOM_ORGANISATION="ReseauCerta" # Ajout du mode d'authentification pour les comptes non-admin basés sur le protocole OAuth (false par défaut). # Si false, il n'est pas tenu compte des paramètres qui suivent. # Si true, vous devez fournir la valeur des paramètres qui suivent. # Veuillez-vous référer à votre fournisseur OAuth pour déterminer les bonnes valeurs. OAUTH_ENABLE="false" # true ou false # Lors de l'utilisation de SSO (variable à "true"), le fournisseur OAuth n'est pas obligé de demander des informations d'identification. SSO_ENABLE="" # Identifiant public de l'application OAuth. CLIENT_ID="" # Client Secret CLIENT_SECRET="" # URL utilisée pour s'authentifier auprès du fournisseur OAuth. # L'utilisateur sera redirigé vers la page d'authentification du fournisseur d'identité. AUTHORIZATION_URL="" # URL utilisée par Portainer pour échanger un code d'authentification OAuth valide contre un token d'accès. ACCESS_TOKEN_URL="" # URL utilisée par Portainer pour récupérer des informations sur l'utilisateur authentifié. RESOURCE_URL="" # URL utilisée par Portainer pour rediriger l'utilisateur vers le fournisseur OAuth afin de déconnecter l'utilisateur de la session du fournisseur d'identité. LOGOUT_URL="" # Identifiant qui sera utilisé par Portainer pour créer un compte pour l'utilisateur authentifié. # Extrait du serveur de ressources spécifié via le champ URL de la ressource. USER_IDENTIFIER="" # Étendues requises par le fournisseur OAuth pour récupérer des informations sur l'utilisateur authentifié. SCOPES="" # Fichier certificat du fournisseur 0Auth avec le chemin complet /chemin/fichier.pem. # Ce dernier doit potentiellement être intégré à Portainer CERT_OAUTH="" # Les variables qui suivent servent à alimenter automatiquement les mentions légales # si ces dernières n'existent pas ou si le script "modif_mentions_legales.sh" est exécuté. # Les mentions légales peuvent également être modifiées via l'interface de l'e-comBox. PROPRIETAIRE="" ADRESSE_POSTALE="" IMMATRICULATION="" HEBERGEUR="" RESPONSABLE_TRAITEMENT="" ADMIN_SERVICE="" DPO="" # Les variables qui suivent permettent l'envoi d'un courriel à la modification du compte admin des sites. # Le mode d'envoi est obligatoirement sécurisé. # Ne fonctionne pas avec gmail qui nécessite l'installation d'un autre outil et d’une configuration différente. #### Variables obligatoires #### # URL du serveur SMTP HOTE_SMTP="" # Adresse mail qu'il y aura dans le champ From MAIL_EXPEDITEUR="" # Port sécurisé (465 ou 587) PORT_SECURISE_SMTP="" #### Variables (plus ou moins) facultatives #### # Attention, les identifiants deviennent de plus en plus obligatoires auprès des FAI # Faute de quoi, les mails peuvent être rejetés # Nom de l'utilisateur USER_SMTP="" # Mot de passe de l'utilisateur # Si le mot de passe contient les caractères spéciaux $ ou " ou ` il faut les échapper avec le caractère \. # SI le mot de passe contient le caractère spécial \ il faut l'échapper avec deux caractères \ (\\). # Une fois le site créé et le mail envoyé, le mot de passe est supprimé de la configuration du serveur SMTP dans le conteneur. PASSWORD_SMTP=""
Lancement de l'e-comBox et utilisation de base
En cas de Reverse Proxy externe :
- L'interface de l'e-comBox sera accessible via l'URL : https://<nom_domaine>/<chemin>/app/
- L'interface de Portainer sera accessible via l'URL : https://<nom_domaine>/<chemin>/portainer/
- Les sites seront accessibles via un URL sous la forme : https://<nom_domaine>/<chemin>/nom_du_site/
S'il n'y a pas de Reverse Proxy externe :
- L'interface de l'e-comBox sera accessible via l'URL : https://<adresse_IP ou nom_domaine>:PORT_RP/app/
- L'interface de Portainer sera accessible via l'URL : https://<adresse_IP ou nom_domaine>:PORT_RP/portainer/
- Les sites seront accessibles via un URL sous la forme : https://<adresse_IP ou nom_domaine>:PORT_RP/nom_du_site/
Il faut donc lancer l'application en saisissant :
- l'URL https://<nom_domaine>/<chemin>/app/ en cas de passage par un Reverse proxy externe ;
- l'URL https://<adresse_IP ou nom_domaine>:PORT_RP/app/ en cas de non passage par un Reverse Proxy externe.
La connexion à l'interface de l'application nécessite obligatoirement une authentification.
Lorsqu'on se connecte (après s'être authentifié), un tableau de bord simplifié permet d'avoir une vue d'ensemble :
La prise en main de cette interface avec sa gestion de base (créer, démarrer, arrêter ou supprimer un site) ainsi que la gestion avancée est décrite plus précisément ici.
En cas de problème consultez la FAQ.
bash /opt/e-comBox/configure_application.sh [options]
La gestion des ressources pour Docker
Sur Linux, le professeur sera juste limité par la capacité de son poste (capacité du disque, capacité du processeur et capacité de la mémoire) sachant que le processeur et la mémoire ne sont affectés que lorsque les sites sont lancés.
Par exemple, une instance de Prestashop sur Docker nécessite aux alentours de 200 MB de RAM.
Le tableau de bord fournit des statistiques d'utilisation en temps réel.
