Files
script-vps/install.sh

268 lines
12 KiB
Bash
Executable File

#!/bin/bash
# Définir les variables
USER=$(whoami)
# Vérifier si Git est déjà installé
if ! command -v git &> /dev/null; then
# Si Git n'est pas installé, demander confirmation avant installation
read -p "Git n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Oo]$ ]]; then
# Si l'utilisateur accepte, installer Git
echo "Installation de Git en cours..."
sudo apt update
sudo apt install -y git
echo "Git a été installé avec succès!"
read -p "Veuillez saisir votre nom d'utilisateur Git: " username
read -p "Veuillez saisir votre adresse e-mail Git: " email
git config --global user.name "$username"
git config --global user.email "$email"
echo "Votre nom d'utilisateur et votre adresse e-mail Git ont été configurés avec succès!"
else
echo "Installation de Git annulée."
fi
fi
# Vérifier si btop est déjà installé
if ! command -v btop &> /dev/null; then
# Si btop n'est pas installé, demander confirmation avant installation
read -p "btop n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Oo]$ ]]; then
# Si l'utilisateur accepte, installer btop
echo "Installation de btop en cours..."
sudo apt update
sudo apt install -y btop
echo "btop a été installé avec succès!"
else
echo "Installation de btop annulée."
fi
else
echo "btop est déjà installé sur votre système."
fi
# Vérifier si tree est déjà installé
if ! command -v tree &> /dev/null; then
# Si tree n'est pas installé, demander confirmation avant installation
read -p "tree n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Oo]$ ]]; then
# Si l'utilisateur accepte, installer tree
echo "Installation de tree en cours..."
sudo apt update
sudo apt install -y tree
echo "tree a été installé avec succès!"
else
echo "Installation de tree annulée."
fi
else
echo "tree est déjà installé sur votre système."
fi
# Vérifier si Docker est déjà installé
if ! command -v docker &> /dev/null; then
# Si Docker n'est pas installé, demander confirmation avant installation
read -p "Docker n'est pas installé. Voulez-vous l'installer? (o/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Oo]$ ]]; then
# Si l'utilisateur accepte, installer Docker
echo "Installation de Docker en cours..."
curl -fsSL https://get.docker.com -o get-docker.sh
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."
fi
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 [! -d "nginx-proxy" ]; 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