diff --git a/README.md b/README.md index 7ddd0f4..629062a 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,15 @@ wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/ chmod +x install.sh ./install.sh ``` + +Si vous voulez procéder à la suite de docker +``` +sudo usermod -aG docker $USER +mkdir -p /home/$USER/docker +sudo chown $USER:$USER /var/run/docker.sock +sudo chown -R $USER:$USER /home/$USER/docker +sudo chmod -R 775 /home/$USER/docker +wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/install-docker.sh +chmod +x install-docker.sh +./install-docker.sh +``` diff --git a/install-docker.sh b/install-docker.sh new file mode 100644 index 0000000..dc05ad3 --- /dev/null +++ b/install-docker.sh @@ -0,0 +1,180 @@ +# Vérifier si le docker compose de nginx reverse proxy est déjà installé mais avant vérifier si docker est installé +if command -v docker &> /dev/null; then + if ! command -v docker-compose &> /dev/null; then + # Si le docker compose de nginx reverse proxy n'est pas installé, demander confirmation avant installation + read -p "Le docker compose de nginx reverse proxy n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r -d "n" + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, cloner le dépôt Git contenant le docker compose de nginx reverse proxy + echo "Installation du docker compose de nginx reverse proxy en cours..." + mkdir -p /home/$USER/docker/nginx-proxy + cd /home/$USER/docker/nginx-proxy + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/nginx-proxy-manager/docker-compose.yml + docker compose up -d + echo "Le docker compose de nginx reverse proxy a été installé avec succès!" + else + echo "Installation du docker compose de nginx reverse proxy annulée." + fi + else + echo "Le docker compose de nginx reverse proxy est déjà installé sur votre système." + fi +fi + +# Vérifier si npm est déjà installé +if ! command -v npm &> /dev/null; then + # Si npm n'est pas installé, demander confirmation avant installation + read -p "npm n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, installer npm + echo "Installation de npm en cours..." + sudo apt update + sudo apt install -y npm + echo "npm a été installé avec succès!" + # Vérifier si nvm est déjà installé + if ! command -v nvm &> /dev/null; then + # Si nvm n'est pas installé, demander confirmation avant installation + read -p "nvm n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, installer nvm + echo "Installation de nvm en cours..." + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash + echo "nvm a été installé avec succès!" + source ~/.bashrc + # Installer la dernière version de Node.js avec nvm + nvm install node + nvm use node + echo "La dernière version de Node.js a été installée avec succès!" + else + echo "Installation de nvm annulée." + fi + else + echo "nvm est déjà installé sur votre système." + fi + else + echo "Installation de npm annulée." + fi +else + echo "npm est déjà installé sur votre système." +fi + +# Vérifier si le dossier www est déjà créé dans le répertoire de docker +if command -v docker &> /dev/null; then + if ! [ -d "/home/$USER/docker/www" ]; then + # Si le dossier www n'est pas créé, demander confirmation avant création + read -p "Le dossier www n'est pas créé dans le répertoire de docker. Voulez-vous le créer? (o/n) " -n 1 -r -d "n" + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, créer le dossier www + echo "Création du dossier www en cours..." + mkdir -p /home/$USER/docker/www + echo "Le dossier www a été créé avec succès!" + else + echo "Création du dossier www annulée." + fi + else + echo "Le dossier www est déjà créé dans le répertoire de docker." + fi +fi + +# Vérifier si le docker est installé et si le répertoire www est créé pour installer une app vuejs +if command -v docker &> /dev/null; then + if [ -d "/home/$USER/docker/www" ]; then + # Si le docker est installé et le répertoire www est créé, demander confirmation avant installation de l'app Vue.js + read -p "Voulez-vous installer une application Vue.js dans le répertoire www? (o/n) " -n 1 -r -d "n" + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, installer l'app Vue.js en demandant le nom du projet + read -p "Veuillez saisir le nom du projet Vue.js: " project + echo "Installation de l'application Vue.js en cours..." + cd /home/$USER/docker/www + npm create vue@latest $project + cd $project + npm install + # Vérifier si le docker compose de l'app Vue.js est déjà installé + if ! [ -f "/home/$USER/docker/www/$project/docker compose.yml" ]; then + # Si le docker compose de l'app Vue.js n'est pas installé, demander confirmation avant installation + read -p "Le docker compose de l'application Vue.js n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r -d "n" + echo "Installation du docker compose de l'application Vue.js en cours..." + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/vuejs/docker-compose.yml + # Créer le 'nom_container' dans le fichier docker compose.yml par le nom du projet + sed -i "s/nom_container/$project/g" docker compose.yml + # Demander le port d'écoute de l'app Vue.js + read -p "Veuillez saisir le port d'écoute de l'application Vue.js: " port + echo "EXTERNAL_PORT=$port" > .env + echo "INTERNAL_PORT=8080" >> .env + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/vuejs/Dockerfile + docker compose up -d + echo "Le docker compose de l'application Vue.js a été installé avec succès!" + else + echo "Le docker compose de l'application Vue.js est déjà installé sur votre système." + fi + else + echo "Installation de l'application Vue.js annulée." + fi +else + echo "Le répertoire www n'est pas créé dans le répertoire de docker." +fi + +# Vérifier si grafana est déjà installé +if command -v docker &> /dev/null; then + if ! docker ps -a --format '{{.Names}}' | grep -q grafana; then + # Si grafana n'est pas installé, demander confirmation avant installation + read -p "Grafana n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r -d "n" + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, installer grafana + echo "Installation de grafana en cours..." + mkdir -p /home/$USER/docker/grafana + cd /home/$USER/docker/grafana + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/grafana/docker-compose.yml + docker compose up -d + echo "Grafana a été installé avec succès!" + # Vérifier si l'utilisateur veut installer prometheus + read -p "Voulez-vous installer Prometheus? (o/n) " -n 1 -r -d "n" + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, installer prometheus + echo "Installation de Prometheus en cours..." + mkdir -p /home/$USER/docker/prometheus + cd /home/$USER/docker/prometheus + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/prometheus/docker-compose.yml + mkdir -p /home/$USER/docker/prometheus/prometheus + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/prometheus/prometheus/prometheus.yml + # Vérifier si l'utilisateur veut installer cadvisor + read -p "Voulez-vous installer cAdvisor? (o/n) " -n 1 -r -d "n" + echo + if [[ $REPLY =~ ^[Oo]$ ]]; then + # Si l'utilisateur accepte, installer cadvisor + echo "Installation de cAdvisor en cours..." + mkdir -p /home/$USER/docker/cadvisor + cd /home/$USER/docker/cadvisor + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/cadvisor/docker-compose.yml + docker compose up -d + echo "cAdvisor a été installé avec succès!" + echo "Ajout de cAdvisor dans le fichier de configuration de Prometheus..." + wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/cadvisor/config-prometheus.yml + cat config-prometheus.yml > /home/$USER/docker/prometheus/prometheus/prometheus.yml + echo "cAdvisor a été ajouté avec succès dans le fichier de configuration de Prometheus!" + echo "cAdvisor a été installé avec succès!" + else + echo "Installation de cAdvisor annulée." + fi + cd /home/$USER/docker/prometheus + docker compose up -d + echo "Prometheus a été installé avec succès!" + else + echo "Installation de Prometheus annulée." + fi + cd /home/$USER/docker/grafana + docker compose up -d + echo "Grafana a été installé avec succès!" + else + echo "Installation de grafana annulée." + fi + else + echo "Grafana est déjà installé sur votre système." + fi + fi +fi diff --git a/install.sh b/install.sh index 3c8680f..4001f71 100755 --- a/install.sh +++ b/install.sh @@ -72,11 +72,6 @@ if ! command -v docker &> /dev/null; then sh get-docker.sh echo "Docker a été installé avec succès!" # Donne les droits à l'utilisateur courant d'exécuter Docker sans avoir à utiliser sudo - usermod -aG docker $USER - mkdir -p /home/$USER/docker - sudo chown $USER:$USER /var/run/docker.sock - sudo chown -R $USER:$USER /home/$USER/docker - sudo chmod -R 775 /home/$USER/docker echo "Veuillez vous déconnecter et vous reconnecter pour appliquer les changements." else echo "Installation de Docker annulée." @@ -84,184 +79,3 @@ if ! command -v docker &> /dev/null; then else echo "Docker est déjà installé sur votre système." fi - -# Vérifier si le docker compose de nginx reverse proxy est déjà installé mais avant vérifier si docker est installé -if command -v docker &> /dev/null; then - if ! command -v docker-compose &> /dev/null; then - # Si le docker compose de nginx reverse proxy n'est pas installé, demander confirmation avant installation - read -p "Le docker compose de nginx reverse proxy n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r -d "n" - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, cloner le dépôt Git contenant le docker compose de nginx reverse proxy - echo "Installation du docker compose de nginx reverse proxy en cours..." - mkdir -p /home/$USER/docker/nginx-proxy - cd /home/$USER/docker/nginx-proxy - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/nginx-proxy-manager/docker-compose.yml - docker compose up -d - echo "Le docker compose de nginx reverse proxy a été installé avec succès!" - else - echo "Installation du docker compose de nginx reverse proxy annulée." - fi - else - echo "Le docker compose de nginx reverse proxy est déjà installé sur votre système." - fi -fi - -# Vérifier si npm est déjà installé -if ! command -v npm &> /dev/null; then - # Si npm n'est pas installé, demander confirmation avant installation - read -p "npm n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, installer npm - echo "Installation de npm en cours..." - sudo apt update - sudo apt install -y npm - echo "npm a été installé avec succès!" - # Vérifier si nvm est déjà installé - if ! command -v nvm &> /dev/null; then - # Si nvm n'est pas installé, demander confirmation avant installation - read -p "nvm n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, installer nvm - echo "Installation de nvm en cours..." - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash - echo "nvm a été installé avec succès!" - source ~/.bashrc - # Installer la dernière version de Node.js avec nvm - nvm install node - nvm use node - echo "La dernière version de Node.js a été installée avec succès!" - else - echo "Installation de nvm annulée." - fi - else - echo "nvm est déjà installé sur votre système." - fi - else - echo "Installation de npm annulée." - fi -else - echo "npm est déjà installé sur votre système." -fi - -# Vérifier si le dossier www est déjà créé dans le répertoire de docker -if command -v docker &> /dev/null; then - if ! [ -d "/home/$USER/docker/www" ]; then - # Si le dossier www n'est pas créé, demander confirmation avant création - read -p "Le dossier www n'est pas créé dans le répertoire de docker. Voulez-vous le créer? (o/n) " -n 1 -r -d "n" - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, créer le dossier www - echo "Création du dossier www en cours..." - mkdir -p /home/$USER/docker/www - echo "Le dossier www a été créé avec succès!" - else - echo "Création du dossier www annulée." - fi - else - echo "Le dossier www est déjà créé dans le répertoire de docker." - fi -fi - -# Vérifier si le docker est installé et si le répertoire www est créé pour installer une app vuejs -if command -v docker &> /dev/null; then - if [ -d "/home/$USER/docker/www" ]; then - # Si le docker est installé et le répertoire www est créé, demander confirmation avant installation de l'app Vue.js - read -p "Voulez-vous installer une application Vue.js dans le répertoire www? (o/n) " -n 1 -r -d "n" - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, installer l'app Vue.js en demandant le nom du projet - read -p "Veuillez saisir le nom du projet Vue.js: " project - echo "Installation de l'application Vue.js en cours..." - cd /home/$USER/docker/www - npm create vue@latest $project - cd $project - npm install - # Vérifier si le docker compose de l'app Vue.js est déjà installé - if ! [ -f "/home/$USER/docker/www/$project/docker compose.yml" ]; then - # Si le docker compose de l'app Vue.js n'est pas installé, demander confirmation avant installation - read -p "Le docker compose de l'application Vue.js n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r -d "n" - echo "Installation du docker compose de l'application Vue.js en cours..." - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/vuejs/docker-compose.yml - # Créer le 'nom_container' dans le fichier docker compose.yml par le nom du projet - sed -i "s/nom_container/$project/g" docker compose.yml - # Demander le port d'écoute de l'app Vue.js - read -p "Veuillez saisir le port d'écoute de l'application Vue.js: " port - echo "EXTERNAL_PORT=$port" > .env - echo "INTERNAL_PORT=8080" >> .env - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/vuejs/Dockerfile - docker compose up -d - echo "Le docker compose de l'application Vue.js a été installé avec succès!" - else - echo "Le docker compose de l'application Vue.js est déjà installé sur votre système." - fi - else - echo "Installation de l'application Vue.js annulée." - fi -else - echo "Le répertoire www n'est pas créé dans le répertoire de docker." -fi - -# Vérifier si grafana est déjà installé -if command -v docker &> /dev/null; then - if ! docker ps -a --format '{{.Names}}' | grep -q grafana; then - # Si grafana n'est pas installé, demander confirmation avant installation - read -p "Grafana n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r -d "n" - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, installer grafana - echo "Installation de grafana en cours..." - mkdir -p /home/$USER/docker/grafana - cd /home/$USER/docker/grafana - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/grafana/docker-compose.yml - docker compose up -d - echo "Grafana a été installé avec succès!" - # Vérifier si l'utilisateur veut installer prometheus - read -p "Voulez-vous installer Prometheus? (o/n) " -n 1 -r -d "n" - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, installer prometheus - echo "Installation de Prometheus en cours..." - mkdir -p /home/$USER/docker/prometheus - cd /home/$USER/docker/prometheus - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/prometheus/docker-compose.yml - mkdir -p /home/$USER/docker/prometheus/prometheus - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/prometheus/prometheus/prometheus.yml - # Vérifier si l'utilisateur veut installer cadvisor - read -p "Voulez-vous installer cAdvisor? (o/n) " -n 1 -r -d "n" - echo - if [[ $REPLY =~ ^[Oo]$ ]]; then - # Si l'utilisateur accepte, installer cadvisor - echo "Installation de cAdvisor en cours..." - mkdir -p /home/$USER/docker/cadvisor - cd /home/$USER/docker/cadvisor - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/cadvisor/docker-compose.yml - docker compose up -d - echo "cAdvisor a été installé avec succès!" - echo "Ajout de cAdvisor dans le fichier de configuration de Prometheus..." - wget https://ganesh.turing.untypequicode.fr/untypequicode/script-vps/raw/branch/main/cadvisor/config-prometheus.yml - cat config-prometheus.yml > /home/$USER/docker/prometheus/prometheus/prometheus.yml - echo "cAdvisor a été ajouté avec succès dans le fichier de configuration de Prometheus!" - echo "cAdvisor a été installé avec succès!" - else - echo "Installation de cAdvisor annulée." - fi - cd /home/$USER/docker/prometheus - docker compose up -d - echo "Prometheus a été installé avec succès!" - else - echo "Installation de Prometheus annulée." - fi - cd /home/$USER/docker/grafana - docker compose up -d - echo "Grafana a été installé avec succès!" - else - echo "Installation de grafana annulée." - fi - else - echo "Grafana est déjà installé sur votre système." - fi - fi -fi