From fb40bb2469f7fc948776cb0fcbcfc13767e375c0 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 10:46:07 +0100 Subject: [PATCH 01/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 79 ++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 20 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index b0928d83..8bf0258f 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -1,11 +1,17 @@ #!/bin/bash # Script d'instal·lació automàtica de Docker CE i Docker Compose a sistemes Debian/Ubuntu. +# Funció per mostrar errors i sortir +finalitzar_amb_error() { + echo -e "\n❌ ERROR: $1" + echo "La instal·lació s'ha aturat perquè un pas crític ha fallat." + exit 1 +} + # ------------------------------------------------------------- -# 1. Comprovacions i Permisos +# 1. Comprovacions, Permisos i Detecció del SO # ------------------------------------------------------------- -# Determinar si s'està executant amb privilegis de root (necessari per instal·lar). if [[ $EUID -ne 0 ]]; then echo "Aquest script s'ha d'executar amb un usuari amb permisos de 'sudo'." exit 1 @@ -13,19 +19,29 @@ fi USUARI_SUDO=$(logname) -clear +. /etc/os-release +OS_ID=$ID # Detectarà 'debian' o 'ubuntu' +# Utilitzarà el codename d'Ubuntu si existeix, si no, el de Debian +CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} + +echo "-> Sistema detectat: $OS_ID ($CODENAME)" + echo -e "\n" echo "⚙️ Iniciant instal·lació de Docker i Docker Compose per a l'usuari: ${USUARI_SUDO}" echo "------------------------------------------------------------------" -echo -e "\n" # ------------------------------------------------------------- # 2. Preparació del Sistema # ------------------------------------------------------------- echo "-> Actualitzant paquets i instal·lant dependències..." -apt-get update -qq >/dev/null -apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release +if ! apt-get update -qq; then + finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update)." +fi + +if ! apt-get install -y ca-certificates curl; then + finalitzar_amb_error "No s'han pogut instal·lar les dependències inicials (ca-certificates i curl)." +fi # ------------------------------------------------------------- # 3. Afegir Repositori Oficial de Docker @@ -34,42 +50,65 @@ apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release echo -e "\n" echo "-> Afegint repositori oficial de Docker..." install -m 0755 -d /etc/apt/keyrings -curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + +# Descàrrega de la clau +if ! curl -fsSL "https://download.docker.com/linux/$OS_ID/gpg" -o /etc/apt/keyrings/docker.asc; then + finalitzar_amb_error "No s'ha pogut obtenir la clau per a $OS_ID des de download.docker.com" +fi + chmod a+r /etc/apt/keyrings/docker.gpg -# Afegim el repositori, ajustant la versió de codi de Debian/Ubuntu. -echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ - $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null +# Configuració del repositori estructurat (DEB822) +echo "-> Configurant repositori oficial de Docker..." +cat < /etc/apt/sources.list.d/docker.sources +Types: deb +URIs: https://download.docker.com/linux/$OS_ID +Suites: $CODENAME +Components: stable +Signed-By: /etc/apt/keyrings/docker.asc +EOF + # ------------------------------------------------------------- -# 4. Instal·lació dels Paquets +# 4. Instal·lació dels Paquets de Docker # ------------------------------------------------------------- echo -e "\n" echo "-> Instal·lant Docker CE, CLI i Docker Compose Plugin..." -apt-get update -qq >/dev/null -apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +if ! apt-get update -qq; then + finalitzar_amb_error "El repositori de Docker no ha respost correctament per a la versió $CODENAME." +fi + +if ! apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then + finalitzar_amb_error "No s'han pogut instal·lar els paquets de Docker." +fi + +echo -e "\n✅ Docker instal·lat correctament a $OS_ID ($CODENAME)!" # ------------------------------------------------------------- # 5. Finalització i Permisos # ------------------------------------------------------------- echo -e "\n" -echo "-> Assegurant que el servei Docker estigui actiu i habilitat a l'engegada de la màquina..." -systemctl start docker +echo "-> Assegurant que el servei Docker estigui actiu..." +if ! systemctl start docker; then + finalitzar_amb_error "No s'ha pogut arrencar el servei de Docker." +fi + systemctl enable docker >/dev/null 2>&1 -# Mètode per mostrar només les línies Loaded i Active (la comprovació d'èxit) +# Mostrem estat systemctl status docker | grep -E 'Loaded:|Active:' echo -e "\n" echo "-> Afegint l'usuari ${USUARI_SUDO} al grup 'docker'..." -usermod -aG docker "${USUARI_SUDO}" +if ! usermod -aG docker "${USUARI_SUDO}"; then + finalitzar_amb_error "No s'ha pogut afegir l'usuari al grup 'docker'." +fi echo -e "\n" echo "------------------------------------------------------------------" echo "✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT." -echo " ⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte," -echo " heu, o bé tancar la sessió SSH actual i tornar a connectar-vos-hi, o bé reiniciar la màquina." +echo " ⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" +echo " de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." echo " Un cop reconnectat, podeu provar amb: docker run hello-world" From b30dcd9173057b714aa0ea7b12497252d73aa0e4 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 11:22:55 +0100 Subject: [PATCH 02/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 83 +++++++++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 19 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 8bf0258f..8092eb19 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -1,54 +1,91 @@ #!/bin/bash # Script d'instal·lació automàtica de Docker CE i Docker Compose a sistemes Debian/Ubuntu. +# -------------------------------------------------- +# VARIABLES DE COLOR I ESTIL ANSI +# -------------------------------------------------- + +# Aquestes variables es troben a l'arxiu functions.sh. Caldria fer el mateix que fem amb l'instal·lador install_djau.sh +# i la funció de missatge d'error podria ser interessant incorporar-la a functions.sh i als scripts +RESET='\e[0m' +NEGRITA='\e[1m' + +# Colors básics +AZUL='\e[34m' +VERDE='\e[32m' +ROJO='\e[31m' +CIANO='\e[36m' +AMARILLO='\e[33m' +MAGENTA='\e[35m' + +# Estils compostos +C_EXITO="${NEGRITA}${VERDE}" # Éxit i confirmacions (✅) +C_ERROR="${NEGRITA}${ROJO}" # Errors o fallades (❌) +C_PRINCIPAL="${NEGRITA}${AZUL}" # Fases principals (FASE 1, FASE 2) +C_CAPITULO="${NEGRITA}${CIANO}" # Títuls de Capítul (1. DEFINICIÓ...) +C_SUBTITULO="${NEGRITA}${MAGENTA}" # Títuls de Subcapítul (1.1, 1.2) +C_INFO="${NEGRITA}${AMARILLO}" # Informació important (INFO, ATENCIÓN) + # Funció per mostrar errors i sortir finalitzar_amb_error() { - echo -e "\n❌ ERROR: $1" + echo -e "\n" + echo -e "${C_ERROR}❌ ERROR: $1${RESET}" echo "La instal·lació s'ha aturat perquè un pas crític ha fallat." exit 1 } +clear + # ------------------------------------------------------------- # 1. Comprovacions, Permisos i Detecció del SO # ------------------------------------------------------------- if [[ $EUID -ne 0 ]]; then - echo "Aquest script s'ha d'executar amb un usuari amb permisos de 'sudo'." + echo "${C_ERROR}Aquest script s'ha d'executar amb un usuari amb permisos de 'sudo'.${RESET}" exit 1 fi USUARI_SUDO=$(logname) . /etc/os-release -OS_ID=$ID # Detectarà 'debian' o 'ubuntu' +OS_ID=$ID # Detectarà el sistema operatiu, per exemple 'debian', 'ubuntu', etc + # Utilitzarà el codename d'Ubuntu si existeix, si no, el de Debian CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} -echo "-> Sistema detectat: $OS_ID ($CODENAME)" +echo -e "${C_INFO}-> Sistema detectat: $OS_ID ($CODENAME)${RESET}" + +sleep 2 echo -e "\n" -echo "⚙️ Iniciant instal·lació de Docker i Docker Compose per a l'usuari: ${USUARI_SUDO}" -echo "------------------------------------------------------------------" +echo -e "${C_PRINCIPAL}⚙️ Iniciant instal·lació de Docker i Docker Compose per a l'usuari: ${USUARI_SUDO}${RESET}" +echo -e "${C_PRINCIPAL}------------------------------------------------------------------------------${RESET}" +echo -e "\n" # ------------------------------------------------------------- # 2. Preparació del Sistema # ------------------------------------------------------------- -echo "-> Actualitzant paquets i instal·lant dependències..." +echo -e "${C_SUBTITULO}-> Actualitzant paquets i instal·lant dependències...${RESET}" if ! apt-get update -qq; then finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update)." fi +sleep 2 +echo -e "\n" + if ! apt-get install -y ca-certificates curl; then finalitzar_amb_error "No s'han pogut instal·lar les dependències inicials (ca-certificates i curl)." fi +sleep 2 + # ------------------------------------------------------------- # 3. Afegir Repositori Oficial de Docker # ------------------------------------------------------------- echo -e "\n" -echo "-> Afegint repositori oficial de Docker..." +echo -e "${C_SUBTITULO}-> Afegint repositori oficial de Docker...${RESET}" install -m 0755 -d /etc/apt/keyrings # Descàrrega de la clau @@ -56,10 +93,10 @@ if ! curl -fsSL "https://download.docker.com/linux/$OS_ID/gpg" -o /etc/apt/keyri finalitzar_amb_error "No s'ha pogut obtenir la clau per a $OS_ID des de download.docker.com" fi -chmod a+r /etc/apt/keyrings/docker.gpg +chmod a+r /etc/apt/keyrings/docker.asc # Configuració del repositori estructurat (DEB822) -echo "-> Configurant repositori oficial de Docker..." +echo "${C_SUBTITULO}-> Configurant repositori oficial de Docker...${RESET}" cat < /etc/apt/sources.list.d/docker.sources Types: deb URIs: https://download.docker.com/linux/$OS_ID @@ -74,23 +111,29 @@ EOF # ------------------------------------------------------------- echo -e "\n" -echo "-> Instal·lant Docker CE, CLI i Docker Compose Plugin..." +echo -e "${C_SUBTITULO}-> Instal·lant Docker CE, CLI i Docker Compose Plugin...${RESET}" if ! apt-get update -qq; then finalitzar_amb_error "El repositori de Docker no ha respost correctament per a la versió $CODENAME." fi +sleep 2 +echo -e "\n" + if ! apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then finalitzar_amb_error "No s'han pogut instal·lar els paquets de Docker." fi -echo -e "\n✅ Docker instal·lat correctament a $OS_ID ($CODENAME)!" +echo -e "\n" +echo -e "${C_EXITO}✅ Docker instal·lat correctament a $OS_ID ($CODENAME)!${RESET}" + +sleep 2 # ------------------------------------------------------------- # 5. Finalització i Permisos # ------------------------------------------------------------- echo -e "\n" -echo "-> Assegurant que el servei Docker estigui actiu..." +echo -e "${C_SUBTITULO}-> Assegurant que el servei Docker estigui actiu...${RESET}" if ! systemctl start docker; then finalitzar_amb_error "No s'ha pogut arrencar el servei de Docker." fi @@ -100,15 +143,17 @@ systemctl enable docker >/dev/null 2>&1 # Mostrem estat systemctl status docker | grep -E 'Loaded:|Active:' +sleep 2 + echo -e "\n" -echo "-> Afegint l'usuari ${USUARI_SUDO} al grup 'docker'..." +echo -e "${C_SUBTITULO}-> Afegint l'usuari ${USUARI_SUDO} al grup 'docker'...${RESET}" if ! usermod -aG docker "${USUARI_SUDO}"; then finalitzar_amb_error "No s'ha pogut afegir l'usuari al grup 'docker'." fi echo -e "\n" -echo "------------------------------------------------------------------" -echo "✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT." -echo " ⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" -echo " de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." -echo " Un cop reconnectat, podeu provar amb: docker run hello-world" +echo -e "${C_PRINCIPAL}-------------------------------------------------------------------------------------" +echo -e "${C_PRINCIPAL}✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT." +echo -e "${C_PRINCIPAL} ⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" +echo -e "${C_PRINCIPAL} de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." +echo -e "${C_PRINCIPAL} Un cop reconnectat, podeu provar amb: docker run hello-world${RESET}" From 31ddd2fc207a9ee4a68446a716c335407cef9f03 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 11:34:05 +0100 Subject: [PATCH 03/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 8092eb19..d9d8b673 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -96,7 +96,7 @@ fi chmod a+r /etc/apt/keyrings/docker.asc # Configuració del repositori estructurat (DEB822) -echo "${C_SUBTITULO}-> Configurant repositori oficial de Docker...${RESET}" +echo -e "${C_SUBTITULO}-> Configurant repositori oficial de Docker...${RESET}" cat < /etc/apt/sources.list.d/docker.sources Types: deb URIs: https://download.docker.com/linux/$OS_ID @@ -110,7 +110,6 @@ EOF # 4. Instal·lació dels Paquets de Docker # ------------------------------------------------------------- -echo -e "\n" echo -e "${C_SUBTITULO}-> Instal·lant Docker CE, CLI i Docker Compose Plugin...${RESET}" if ! apt-get update -qq; then finalitzar_amb_error "El repositori de Docker no ha respost correctament per a la versió $CODENAME." @@ -152,8 +151,10 @@ if ! usermod -aG docker "${USUARI_SUDO}"; then fi echo -e "\n" -echo -e "${C_PRINCIPAL}-------------------------------------------------------------------------------------" -echo -e "${C_PRINCIPAL}✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT." -echo -e "${C_PRINCIPAL} ⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" -echo -e "${C_PRINCIPAL} de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." -echo -e "${C_PRINCIPAL} Un cop reconnectat, podeu provar amb: docker run hello-world${RESET}" +echo -e "${C_EXITO}✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT.${RESET}" +echo -e "\n" +echo -e "${C_INFO}-------------------------------------------------------------------------------------" +echo -e "${C_INFO}⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" +echo -e "${C_INFO} de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." +echo -e "${C_INFO} Un cop reconnectat, podeu provar amb: docker run hello-world" +echo -e "${C_INFO}-------------------------------------------------------------------------------------${RESET}" From 30a1f305dca9bf7d072bcd73701bcbc5e3bbbfc8 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 11:39:07 +0100 Subject: [PATCH 04/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index d9d8b673..1caca296 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -150,9 +150,12 @@ if ! usermod -aG docker "${USUARI_SUDO}"; then finalitzar_amb_error "No s'ha pogut afegir l'usuari al grup 'docker'." fi +sleep 1 + echo -e "\n" echo -e "${C_EXITO}✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT.${RESET}" echo -e "\n" +sleep 1 echo -e "${C_INFO}-------------------------------------------------------------------------------------" echo -e "${C_INFO}⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" echo -e "${C_INFO} de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." From 632de7c7269e029f2446847a95afed4e4a95f5e3 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 13:14:14 +0100 Subject: [PATCH 05/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 98 +++++++++++++++++++++++++++++++--------- 1 file changed, 77 insertions(+), 21 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 1caca296..756f8f92 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -1,30 +1,81 @@ #!/bin/bash # Script d'instal·lació automàtica de Docker CE i Docker Compose a sistemes Debian/Ubuntu. -# -------------------------------------------------- -# VARIABLES DE COLOR I ESTIL ANSI -# -------------------------------------------------- +# ------------------------------------------------------------------------------ +# DEFINICIÓ DE VARIABLES, CÀRREGA DE LLIBRERIA DE FUNCIONS I VARIABLES DE COLORS +# ------------------------------------------------------------------------------ + +# 1. Definició de variables +# Repositori i branca per la clonació +#REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte +REPO_URL="https://github.com/rafatecno1/django-aula.git" # repositori del projecte +GIT_BRANCH="millora-docker" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" +#GIT_BRANCH="master" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" + +echo "---------------------------------------------------------------------------------------------------------" +echo "--- Descàrrega de la llibreria functions.sh. Es farà servir temporalment a l'inici de la instal·lació ---" +echo "---------------------------------------------------------------------------------------------------------" + +# 1. Definició de l'URL remota de la llibreria de funcions +REPO_BASE_CLEAN="${REPO_URL%.git}" +RAW_BASE="${REPO_BASE_CLEAN/https:\/\/github.com/https:\/\/raw.githubusercontent.com}" +FUNCTIONS_URL="${RAW_BASE}/${GIT_BRANCH}/setup_djau/functions.sh" +FUNCTIONS_FILE="./functions.sh" + +echo -e "\n" +echo "ℹ️ Descarregant la llibreria temporal de funcions i variables compartides ($FUNCTIONS_FILE). El contingut de l'arxiu és important pel bon funcionament de tots els scripts que calen per la instal·lació automàtica de Django-Aula." +echo " Aquesta descàrrega tindrà un ús temporal, donat que l'arxiu definitiu romandrà permanentment dins un directori de la instal·lació de l'aplicatiu, un cop s'hagi clonat des del repositori oficial." + +# 2. Descàrrega de la llibreria de funcions amb wget +wget -q -O "$FUNCTIONS_FILE" "$FUNCTIONS_URL" + +if [ $? -ne 0 ]; then + echo -e "\n" + echo "❌ ERROR: No s'ha pogut descarregar l'arxiu temporal de funcions des de $FUNCTIONS_URL. Sense aquestes funcions el script no pot executar-se. Sortint." + exit 1 +fi + + +# 3. Canvi de propietat: Assignar l'arxiu descarregat a l'usuari original que ha executat 'sudo' +if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then + chown "$SUDO_USER":"$SUDO_USER" "$FUNCTIONS_FILE" +fi + +# 4. Càrrega de la llibreria de funcions +source "$FUNCTIONS_FILE" + +# Variables de color ($C_EXITO, $C_ERROR, etc.) i funcions comunes disponibles. +echo -e "\n" +echo -e "${C_EXITO}✅ Llibreria de funcions temporal carregada amb èxit.${RESET}" + +rm "$FUNCTIONS_FILE" + +if [ $? -ne 0 ]; then + echo -e "${C_ERROR}❌ ADVERTÈNCIA:Per alguna raó desconeguda no s'ha pogut eliminar l'arxiu temporal de funcions${RESET} ${C_INFO} '$FUNCTIONS_FILE'${RESET} ${${C_ERROR}}. Caldria fer-ho manualment.${RESET}" +else +echo -e "${C_EXITO}❌ Un cop importat el contingut de la l'arxiu temporal de funcions s'ha procedit a la seva automàtica eliminació.${RESET}" +fi # Aquestes variables es troben a l'arxiu functions.sh. Caldria fer el mateix que fem amb l'instal·lador install_djau.sh # i la funció de missatge d'error podria ser interessant incorporar-la a functions.sh i als scripts -RESET='\e[0m' -NEGRITA='\e[1m' +#RESET='\e[0m' +#NEGRITA='\e[1m' # Colors básics -AZUL='\e[34m' -VERDE='\e[32m' -ROJO='\e[31m' -CIANO='\e[36m' -AMARILLO='\e[33m' -MAGENTA='\e[35m' +#AZUL='\e[34m' +#VERDE='\e[32m' +#ROJO='\e[31m' +#CIANO='\e[36m' +#AMARILLO='\e[33m' +#MAGENTA='\e[35m' # Estils compostos -C_EXITO="${NEGRITA}${VERDE}" # Éxit i confirmacions (✅) -C_ERROR="${NEGRITA}${ROJO}" # Errors o fallades (❌) -C_PRINCIPAL="${NEGRITA}${AZUL}" # Fases principals (FASE 1, FASE 2) -C_CAPITULO="${NEGRITA}${CIANO}" # Títuls de Capítul (1. DEFINICIÓ...) -C_SUBTITULO="${NEGRITA}${MAGENTA}" # Títuls de Subcapítul (1.1, 1.2) -C_INFO="${NEGRITA}${AMARILLO}" # Informació important (INFO, ATENCIÓN) +#C_EXITO="${NEGRITA}${VERDE}" # Éxit i confirmacions (✅) +#C_ERROR="${NEGRITA}${ROJO}" # Errors o fallades (❌) +#C_PRINCIPAL="${NEGRITA}${AZUL}" # Fases principals (FASE 1, FASE 2) +#C_CAPITULO="${NEGRITA}${CIANO}" # Títuls de Capítul (1. DEFINICIÓ...) +#C_SUBTITULO="${NEGRITA}${MAGENTA}" # Títuls de Subcapítul (1.1, 1.2) +#C_INFO="${NEGRITA}${AMARILLO}" # Informació important (INFO, ATENCIÓN) # Funció per mostrar errors i sortir finalitzar_amb_error() { @@ -48,12 +99,17 @@ fi USUARI_SUDO=$(logname) . /etc/os-release -OS_ID=$ID # Detectarà el sistema operatiu, per exemple 'debian', 'ubuntu', etc -# Utilitzarà el codename d'Ubuntu si existeix, si no, el de Debian +OS_ID=$ID CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} - -echo -e "${C_INFO}-> Sistema detectat: $OS_ID ($CODENAME)${RESET}" +NOM_SISTEMA=${PRETTY_NAME:-$OS_ID} # Si no hi ha PRETTY_NAME, usa l'ID + +# Missatge decoratiu de detecció +echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" +echo -e "${C_INFO}🔍 DETECCIÓ DEL SISTEMA:${RESET}" +echo -e " ${NEGRITA}Distribució:${RESET} $NOM_SISTEMA" +echo -e " ${NEGRITA}Codi Versió:${RESET} $CODENAME" +echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" sleep 2 From ea1c4d69ddd7fb3c0b91898f1d46421614743feb Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 13:36:42 +0100 Subject: [PATCH 06/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 61 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 756f8f92..66f259e8 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -5,6 +5,8 @@ # DEFINICIÓ DE VARIABLES, CÀRREGA DE LLIBRERIA DE FUNCIONS I VARIABLES DE COLORS # ------------------------------------------------------------------------------ +clear + # 1. Definició de variables # Repositori i branca per la clonació #REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte @@ -53,31 +55,10 @@ rm "$FUNCTIONS_FILE" if [ $? -ne 0 ]; then echo -e "${C_ERROR}❌ ADVERTÈNCIA:Per alguna raó desconeguda no s'ha pogut eliminar l'arxiu temporal de funcions${RESET} ${C_INFO} '$FUNCTIONS_FILE'${RESET} ${${C_ERROR}}. Caldria fer-ho manualment.${RESET}" else -echo -e "${C_EXITO}❌ Un cop importat el contingut de la l'arxiu temporal de funcions s'ha procedit a la seva automàtica eliminació.${RESET}" +echo -e "${C_EXITO}✅ Un cop importat el contingut de la l'arxiu temporal de funcions s'ha procedit a la seva automàtica eliminació.${RESET}" fi -# Aquestes variables es troben a l'arxiu functions.sh. Caldria fer el mateix que fem amb l'instal·lador install_djau.sh -# i la funció de missatge d'error podria ser interessant incorporar-la a functions.sh i als scripts -#RESET='\e[0m' -#NEGRITA='\e[1m' - -# Colors básics -#AZUL='\e[34m' -#VERDE='\e[32m' -#ROJO='\e[31m' -#CIANO='\e[36m' -#AMARILLO='\e[33m' -#MAGENTA='\e[35m' - -# Estils compostos -#C_EXITO="${NEGRITA}${VERDE}" # Éxit i confirmacions (✅) -#C_ERROR="${NEGRITA}${ROJO}" # Errors o fallades (❌) -#C_PRINCIPAL="${NEGRITA}${AZUL}" # Fases principals (FASE 1, FASE 2) -#C_CAPITULO="${NEGRITA}${CIANO}" # Títuls de Capítul (1. DEFINICIÓ...) -#C_SUBTITULO="${NEGRITA}${MAGENTA}" # Títuls de Subcapítul (1.1, 1.2) -#C_INFO="${NEGRITA}${AMARILLO}" # Informació important (INFO, ATENCIÓN) - -# Funció per mostrar errors i sortir +# Funció per mostrar errors i sortir. Podria ser interessant incorporar-la a functions.sh per fer-la servir als scripts finalitzar_amb_error() { echo -e "\n" echo -e "${C_ERROR}❌ ERROR: $1${RESET}" @@ -85,8 +66,6 @@ finalitzar_amb_error() { exit 1 } -clear - # ------------------------------------------------------------- # 1. Comprovacions, Permisos i Detecció del SO # ------------------------------------------------------------- @@ -130,9 +109,18 @@ fi sleep 2 echo -e "\n" -if ! apt-get install -y ca-certificates curl; then - finalitzar_amb_error "No s'han pogut instal·lar les dependències inicials (ca-certificates i curl)." -fi +APT_DESC="ca-certificates i Curl" +echo -e "${C_INFO}ℹ️ $APT_DESC${RESET}" +apt-get install -y \ + ca-certificates \ + curl + +check_install "$APT_DESC" + + +#if ! apt-get install -y ca-certificates curl; then +# finalitzar_amb_error "No s'han pogut instal·lar les dependències inicials (ca-certificates i curl)." +#fi sleep 2 @@ -174,9 +162,20 @@ fi sleep 2 echo -e "\n" -if ! apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then - finalitzar_amb_error "No s'han pogut instal·lar els paquets de Docker." -fi +APT_DESC="Paquets de Docker: docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" +echo -e "${C_INFO}ℹ️ $APT_DESC${RESET}" +apt-get install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-builx-plugin \ + docker-compose-plugin + +check_install "$APT_DESC" + +#if ! apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then +# finalitzar_amb_error "No s'han pogut instal·lar els paquets de Docker." +#fi echo -e "\n" echo -e "${C_EXITO}✅ Docker instal·lat correctament a $OS_ID ($CODENAME)!${RESET}" From 87b365dbf72e6767ccd11bf6cdded66296454566 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 13:53:01 +0100 Subject: [PATCH 07/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 66f259e8..ea842b73 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -25,8 +25,7 @@ FUNCTIONS_URL="${RAW_BASE}/${GIT_BRANCH}/setup_djau/functions.sh" FUNCTIONS_FILE="./functions.sh" echo -e "\n" -echo "ℹ️ Descarregant la llibreria temporal de funcions i variables compartides ($FUNCTIONS_FILE). El contingut de l'arxiu és important pel bon funcionament de tots els scripts que calen per la instal·lació automàtica de Django-Aula." -echo " Aquesta descàrrega tindrà un ús temporal, donat que l'arxiu definitiu romandrà permanentment dins un directori de la instal·lació de l'aplicatiu, un cop s'hagi clonat des del repositori oficial." +echo "ℹ️ Descarregant la llibreria t'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." # 2. Descàrrega de la llibreria de funcions amb wget wget -q -O "$FUNCTIONS_FILE" "$FUNCTIONS_URL" @@ -168,7 +167,7 @@ apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io \ - docker-builx-plugin \ + docker-buildx-plugin \ docker-compose-plugin check_install "$APT_DESC" From ea6b30ccb83c90691440b0cd3c76f7646b35780a Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 14:00:37 +0100 Subject: [PATCH 08/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index ea842b73..e5ad877e 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -1,24 +1,25 @@ #!/bin/bash # Script d'instal·lació automàtica de Docker CE i Docker Compose a sistemes Debian/Ubuntu. +clear + +echo "---------------------------------------------------------" +echo "--- Instal·lador automàtic de Docker i Docker-Compose ---" +echo "---------------------------------------------------------" + # ------------------------------------------------------------------------------ # DEFINICIÓ DE VARIABLES, CÀRREGA DE LLIBRERIA DE FUNCIONS I VARIABLES DE COLORS # ------------------------------------------------------------------------------ -clear - # 1. Definició de variables # Repositori i branca per la clonació + #REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte REPO_URL="https://github.com/rafatecno1/django-aula.git" # repositori del projecte GIT_BRANCH="millora-docker" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" #GIT_BRANCH="master" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" -echo "---------------------------------------------------------------------------------------------------------" -echo "--- Descàrrega de la llibreria functions.sh. Es farà servir temporalment a l'inici de la instal·lació ---" -echo "---------------------------------------------------------------------------------------------------------" - -# 1. Definició de l'URL remota de la llibreria de funcions +# 2. Definició de l'URL remota de la llibreria de funcions REPO_BASE_CLEAN="${REPO_URL%.git}" RAW_BASE="${REPO_BASE_CLEAN/https:\/\/github.com/https:\/\/raw.githubusercontent.com}" FUNCTIONS_URL="${RAW_BASE}/${GIT_BRANCH}/setup_djau/functions.sh" @@ -27,7 +28,7 @@ FUNCTIONS_FILE="./functions.sh" echo -e "\n" echo "ℹ️ Descarregant la llibreria t'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." -# 2. Descàrrega de la llibreria de funcions amb wget +# 3. Descàrrega de la llibreria de funcions amb wget wget -q -O "$FUNCTIONS_FILE" "$FUNCTIONS_URL" if [ $? -ne 0 ]; then @@ -36,17 +37,15 @@ if [ $? -ne 0 ]; then exit 1 fi - -# 3. Canvi de propietat: Assignar l'arxiu descarregat a l'usuari original que ha executat 'sudo' +# 4. Canvi de propietat: Assignar l'arxiu descarregat a l'usuari original que ha executat 'sudo' if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then chown "$SUDO_USER":"$SUDO_USER" "$FUNCTIONS_FILE" fi -# 4. Càrrega de la llibreria de funcions +# 5. Càrrega de la llibreria de funcions source "$FUNCTIONS_FILE" # Variables de color ($C_EXITO, $C_ERROR, etc.) i funcions comunes disponibles. -echo -e "\n" echo -e "${C_EXITO}✅ Llibreria de funcions temporal carregada amb èxit.${RESET}" rm "$FUNCTIONS_FILE" @@ -54,7 +53,7 @@ rm "$FUNCTIONS_FILE" if [ $? -ne 0 ]; then echo -e "${C_ERROR}❌ ADVERTÈNCIA:Per alguna raó desconeguda no s'ha pogut eliminar l'arxiu temporal de funcions${RESET} ${C_INFO} '$FUNCTIONS_FILE'${RESET} ${${C_ERROR}}. Caldria fer-ho manualment.${RESET}" else -echo -e "${C_EXITO}✅ Un cop importat el contingut de la l'arxiu temporal de funcions s'ha procedit a la seva automàtica eliminació.${RESET}" +echo -e "${C_EXITO}✅ Eliminació de l'arxiu temporal de funcions.${RESET}" fi # Funció per mostrar errors i sortir. Podria ser interessant incorporar-la a functions.sh per fer-la servir als scripts @@ -83,6 +82,7 @@ CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} NOM_SISTEMA=${PRETTY_NAME:-$OS_ID} # Si no hi ha PRETTY_NAME, usa l'ID # Missatge decoratiu de detecció +echo -e "\n" echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" echo -e "${C_INFO}🔍 DETECCIÓ DEL SISTEMA:${RESET}" echo -e " ${NEGRITA}Distribució:${RESET} $NOM_SISTEMA" @@ -116,11 +116,6 @@ apt-get install -y \ check_install "$APT_DESC" - -#if ! apt-get install -y ca-certificates curl; then -# finalitzar_amb_error "No s'han pogut instal·lar les dependències inicials (ca-certificates i curl)." -#fi - sleep 2 # ------------------------------------------------------------- @@ -172,10 +167,6 @@ apt-get install -y \ check_install "$APT_DESC" -#if ! apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then -# finalitzar_amb_error "No s'han pogut instal·lar els paquets de Docker." -#fi - echo -e "\n" echo -e "${C_EXITO}✅ Docker instal·lat correctament a $OS_ID ($CODENAME)!${RESET}" From 140b0c3b10a772f75f2915348a71da4e3e17fef9 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 14:10:52 +0100 Subject: [PATCH 09/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index e5ad877e..9e398366 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -75,12 +75,21 @@ fi USUARI_SUDO=$(logname) +# Comprovar si el fitxer d'identificació del sistema existeix +if [ ! -f /etc/os-release ]; then + finalitzar_amb_error "No s'ha trobat l'arxiu /etc/os-release. Aquest sistema no sembla seguir l'estàndard LSB i no es pot identificar la distribució." +fi + . /etc/os-release OS_ID=$ID CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} NOM_SISTEMA=${PRETTY_NAME:-$OS_ID} # Si no hi ha PRETTY_NAME, usa l'ID +if [ -z "$CODENAME" ]; then + finalitzar_amb_error "No s'ha pogut determinar el 'Codename' del sistema (ex: bookworm, noble). No es pot configurar el repositori de Docker." +fi + # Missatge decoratiu de detecció echo -e "\n" echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" From 0277f11dfd07c40acab0addf9334f30ef205f45f Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Tue, 3 Feb 2026 14:21:25 +0100 Subject: [PATCH 10/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 9e398366..391e3ed6 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -177,7 +177,7 @@ apt-get install -y \ check_install "$APT_DESC" echo -e "\n" -echo -e "${C_EXITO}✅ Docker instal·lat correctament a $OS_ID ($CODENAME)!${RESET}" +echo -e "${C_EXITO}✅ Docker instal·lat correctament a $NOM_SISTEMA ($CODENAME)!${RESET}" sleep 2 From 2c0b4c8a3327c45a4dd88b535f4bf334e8952d34 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Wed, 4 Feb 2026 10:48:08 +0100 Subject: [PATCH 11/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 391e3ed6..47ab84e3 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -43,6 +43,12 @@ if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then fi # 5. Càrrega de la llibreria de funcions +if [ ! -f "$FUNCTIONS_FILE" ]; then + echo -e "\n\e[31m\e[1m❌ ERROR CRÍTIC:\e[0m No s'ha trobat l'arxiu $FUNCTIONS_FILE." + echo "No es pot continuar sense la llibreria de funcions." + exit 1 +fi + source "$FUNCTIONS_FILE" # Variables de color ($C_EXITO, $C_ERROR, etc.) i funcions comunes disponibles. @@ -56,14 +62,6 @@ else echo -e "${C_EXITO}✅ Eliminació de l'arxiu temporal de funcions.${RESET}" fi -# Funció per mostrar errors i sortir. Podria ser interessant incorporar-la a functions.sh per fer-la servir als scripts -finalitzar_amb_error() { - echo -e "\n" - echo -e "${C_ERROR}❌ ERROR: $1${RESET}" - echo "La instal·lació s'ha aturat perquè un pas crític ha fallat." - exit 1 -} - # ------------------------------------------------------------- # 1. Comprovacions, Permisos i Detecció del SO # ------------------------------------------------------------- @@ -200,8 +198,15 @@ sleep 2 echo -e "\n" echo -e "${C_SUBTITULO}-> Afegint l'usuari ${USUARI_SUDO} al grup 'docker'...${RESET}" -if ! usermod -aG docker "${USUARI_SUDO}"; then - finalitzar_amb_error "No s'ha pogut afegir l'usuari al grup 'docker'." + +# Comprovem si l'usuari ja pertany al grup per no repetir l'acció +if id -nG "$USUARI_SUDO" | grep -qw "docker"; then + echo -e "${C_INFO}ℹ️ L'usuari ${USUARI_SUDO} ja forma part del grup 'docker'.${RESET}" +else + if ! usermod -aG docker "${USUARI_SUDO}"; then + finalitzar_amb_error "No s'ha pogut afegir l'usuari al grup 'docker'." + fi + echo -e "${C_EXITO}✅ Usuari afegit al grup 'docker' correctament.${RESET}" fi sleep 1 From 009f49763b2f90ca74bd79c108fe08000d5eeb62 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Wed, 4 Feb 2026 21:36:07 +0100 Subject: [PATCH 12/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup_djau/functions.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/setup_djau/functions.sh b/setup_djau/functions.sh index 644e7b84..641af007 100755 --- a/setup_djau/functions.sh +++ b/setup_djau/functions.sh @@ -26,6 +26,20 @@ C_SUBTITULO="${NEGRITA}${MAGENTA}" # Títuls de Subcapítul (1.1, 1.2) C_INFO="${NEGRITA}${AMARILLO}" # Informació important (INFO, ATENCIÓN) +# =========================================================================== +# Funció: finalitzar_amb_error +# Serveix per mostrar un text d'error concret greu i sortir de l'instal·lador +# +# Exemple: finalitzar_amb_error "No s'ha pogut obtenir la clau per a $OS_ID des de download.docker.com" +# =========================================================================== + +finalitzar_amb_error() { + echo -e "\n" + echo -e "${C_ERROR}❌ ERROR: $1${RESET}" + echo "La instal·lació s'ha aturat perquè un pas crític ha fallat." + exit 1 +} + # ========================================================================= # Funció: read_prompt @@ -85,6 +99,7 @@ read_prompt () { # Exemple: read_email_confirm "Missatge de la sol·licitud: " VAR_NAME "valor_per_defecte" # El correu validat es desa a la variable de Bash amb nom $VAR_NAME. # ====================================================================== + read_email_confirm() { local PROMPT_MSG="$1" local OUTPUT_VAR_NAME="$2" @@ -182,8 +197,8 @@ read_password_confirm() { check_install() { # $1: Descripció dels paquest a instal·lar + local EXIT_CODE=$? # Desa el codi de sortida de de la comanda anterior local DESC_MSG="$1" # Desa el primer argument (la descripció) - local EXIT_CODE=$? # Desa el codi de sortida de la comanda anterior if [ "$EXIT_CODE" -ne 0 ]; then echo -e "\n" From 775eb9633ab6f82cf5520646beffc0b2d39e00f2 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 07:33:04 +0100 Subject: [PATCH 13/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 66 ++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 47ab84e3..f33f0dd7 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -7,11 +7,11 @@ echo "---------------------------------------------------------" echo "--- Instal·lador automàtic de Docker i Docker-Compose ---" echo "---------------------------------------------------------" -# ------------------------------------------------------------------------------ -# DEFINICIÓ DE VARIABLES, CÀRREGA DE LLIBRERIA DE FUNCIONS I VARIABLES DE COLORS -# ------------------------------------------------------------------------------ +# --------------------------------------------------------------------------------- +# 1. DEFINICIÓ DE VARIABLES, CÀRREGA DE LLIBRERIA DE FUNCIONS I VARIABLES DE COLORS +# --------------------------------------------------------------------------------- -# 1. Definició de variables +# Definició de variables # Repositori i branca per la clonació #REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte @@ -19,16 +19,16 @@ REPO_URL="https://github.com/rafatecno1/django-aula.git" # repositori del projec GIT_BRANCH="millora-docker" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" #GIT_BRANCH="master" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" -# 2. Definició de l'URL remota de la llibreria de funcions +# Definició de l'URL remota de la llibreria de funcions REPO_BASE_CLEAN="${REPO_URL%.git}" RAW_BASE="${REPO_BASE_CLEAN/https:\/\/github.com/https:\/\/raw.githubusercontent.com}" FUNCTIONS_URL="${RAW_BASE}/${GIT_BRANCH}/setup_djau/functions.sh" FUNCTIONS_FILE="./functions.sh" echo -e "\n" -echo "ℹ️ Descarregant la llibreria t'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." +echo "ℹ️ Descarregant la llibreria d'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." -# 3. Descàrrega de la llibreria de funcions amb wget +# Descàrrega de la llibreria de funcions amb wget wget -q -O "$FUNCTIONS_FILE" "$FUNCTIONS_URL" if [ $? -ne 0 ]; then @@ -37,12 +37,12 @@ if [ $? -ne 0 ]; then exit 1 fi -# 4. Canvi de propietat: Assignar l'arxiu descarregat a l'usuari original que ha executat 'sudo' +# Canvi de propietat: Assignar l'arxiu descarregat a l'usuari original que ha executat 'sudo' if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then chown "$SUDO_USER":"$SUDO_USER" "$FUNCTIONS_FILE" fi -# 5. Càrrega de la llibreria de funcions +# Càrrega de la llibreria de funcions if [ ! -f "$FUNCTIONS_FILE" ]; then echo -e "\n\e[31m\e[1m❌ ERROR CRÍTIC:\e[0m No s'ha trobat l'arxiu $FUNCTIONS_FILE." echo "No es pot continuar sense la llibreria de funcions." @@ -63,9 +63,11 @@ echo -e "${C_EXITO}✅ Eliminació de l'arxiu temporal de funcions.${RESET}" fi # ------------------------------------------------------------- -# 1. Comprovacions, Permisos i Detecció del SO +# 2. COMPROVACIONS, PERMISOS I DETECCIÓ DEL SO # ------------------------------------------------------------- +# Comprovació usuari d'execució amb permisos sudo + if [[ $EUID -ne 0 ]]; then echo "${C_ERROR}Aquest script s'ha d'executar amb un usuari amb permisos de 'sudo'.${RESET}" exit 1 @@ -74,25 +76,44 @@ fi USUARI_SUDO=$(logname) # Comprovar si el fitxer d'identificació del sistema existeix + if [ ! -f /etc/os-release ]; then finalitzar_amb_error "No s'ha trobat l'arxiu /etc/os-release. Aquest sistema no sembla seguir l'estàndard LSB i no es pot identificar la distribució." fi . /etc/os-release -OS_ID=$ID +# Importació de les variables de l'arxiu os-release per configurar el repositori de docker + CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} -NOM_SISTEMA=${PRETTY_NAME:-$OS_ID} # Si no hi ha PRETTY_NAME, usa l'ID if [ -z "$CODENAME" ]; then finalitzar_amb_error "No s'ha pogut determinar el 'Codename' del sistema (ex: bookworm, noble). No es pot configurar el repositori de Docker." fi -# Missatge decoratiu de detecció -echo -e "\n" -echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" +OS_ID=$ID +case "$OS_ID" in + ubuntu|debian|raspbian|centos|fedora|rhel|sles) + # És una de les oficials, no toquem res. + ;; + *) + # No és oficial, busquem en la "genealogia" (ID_LIKE) + # PRIORITZEM Ubuntu perquè Zorin/Mint/PopOS usen els seus binaris. + if [[ "$ID_LIKE" == *"ubuntu"* ]]; then + OS_ID="ubuntu" + elif [[ "$ID_LIKE" == *"debian"* ]]; then + OS_ID="debian" + else + finalitzar_amb_error "Sistema no suportat ($ID). No s'ha trobat base Ubuntu/Debian a ID_LIKE." + fi + ;; +esac + +# Missatge informatiu per a l'usuari +echo -e "\n${C_INFO}------------------------------------------------------------------------------${RESET}" echo -e "${C_INFO}🔍 DETECCIÓ DEL SISTEMA:${RESET}" -echo -e " ${NEGRITA}Distribució:${RESET} $NOM_SISTEMA" +echo -e " ${NEGRITA}Distribució Real:${RESET} $PRETTY_NAME ($ID)" +echo -e " ${NEGRITA}Repositori Docker:${RESET} https://download.docker.com/linux/$OS_ID" echo -e " ${NEGRITA}Codi Versió:${RESET} $CODENAME" echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" @@ -104,10 +125,15 @@ echo -e "${C_PRINCIPAL}--------------------------------------------------------- echo -e "\n" # ------------------------------------------------------------- -# 2. Preparació del Sistema +# 3. PREPARACIÓ DEL SISTEMA # ------------------------------------------------------------- echo -e "${C_SUBTITULO}-> Actualitzant paquets i instal·lant dependències...${RESET}" + +# NETEJA CRÍTICA: Eliminem fitxers de repositoris previs de docker que puguin estar malament. +rm -f /etc/apt/sources.list.d/docker.sources +rm -f /etc/apt/sources.list.d/docker.list + if ! apt-get update -qq; then finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update)." fi @@ -126,7 +152,7 @@ check_install "$APT_DESC" sleep 2 # ------------------------------------------------------------- -# 3. Afegir Repositori Oficial de Docker +# 4. AFEGIR REPOSITORI OFICIAL DE DOCKER # ------------------------------------------------------------- echo -e "\n" @@ -152,7 +178,7 @@ EOF # ------------------------------------------------------------- -# 4. Instal·lació dels Paquets de Docker +# 4. INSTAL·LACIÓ DELS PAQUETS DE DOCKER # ------------------------------------------------------------- echo -e "${C_SUBTITULO}-> Instal·lant Docker CE, CLI i Docker Compose Plugin...${RESET}" @@ -180,7 +206,7 @@ echo -e "${C_EXITO}✅ Docker instal·lat correctament a $NOM_SISTEMA ($CODENAME sleep 2 # ------------------------------------------------------------- -# 5. Finalització i Permisos +# 5. COMPROVACIONS FINALS # ------------------------------------------------------------- echo -e "\n" From d1d4ac0a9d1b652fb60e7614441803a842e58a56 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 07:35:35 +0100 Subject: [PATCH 14/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index f33f0dd7..f142f0e5 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -135,7 +135,7 @@ rm -f /etc/apt/sources.list.d/docker.sources rm -f /etc/apt/sources.list.d/docker.list if ! apt-get update -qq; then - finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update)." + finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update). Verifiqui si hi ha altres repositoris trencats al sistema." fi sleep 2 From 795ab39bf5e7f1013d482853014a69c3b547d67c Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 07:46:56 +0100 Subject: [PATCH 15/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index f142f0e5..dd69b93c 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -66,6 +66,20 @@ fi # 2. COMPROVACIONS, PERMISOS I DETECCIÓ DEL SO # ------------------------------------------------------------- +# Avís de Compatibilitat + +echo -e "${C_INFO}ℹ️ AVÍS: Aquest instal·lador està dissenyat exclusivament per a sistemes" +echo -e " basats en Debian o Ubuntu (utilitza el gestor de paquets APT).${RESET}" +echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" +echo -e "\n" + +# Comprovació tècnica: El sistema té APT? +if ! command -v apt-get &> /dev/null; then + finalitzar_amb_error "Aquest sistema no utilitza 'apt-get'. L'instal·lador no és compatible." +fi + +sleep 1 + # Comprovació usuari d'execució amb permisos sudo if [[ $EUID -ne 0 ]]; then From 1169dd5f7f624b4308d744213cbfa3e189ba51ee Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 07:49:16 +0100 Subject: [PATCH 16/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index dd69b93c..2a674992 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -67,7 +67,7 @@ fi # ------------------------------------------------------------- # Avís de Compatibilitat - +echo -e "\n" echo -e "${C_INFO}ℹ️ AVÍS: Aquest instal·lador està dissenyat exclusivament per a sistemes" echo -e " basats en Debian o Ubuntu (utilitza el gestor de paquets APT).${RESET}" echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" From c5f44bf8c807ad28fdd551184ef3b00db81e6b51 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 07:53:43 +0100 Subject: [PATCH 17/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 2a674992..18890905 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -215,7 +215,7 @@ apt-get install -y \ check_install "$APT_DESC" echo -e "\n" -echo -e "${C_EXITO}✅ Docker instal·lat correctament a $NOM_SISTEMA ($CODENAME)!${RESET}" +echo -e "${C_EXITO}✅ Docker instal·lat correctament a $PRETTY_NAME ($CODENAME)!${RESET}" sleep 2 From 6ae50e0e1377c91e4a46e5908bb9682052c236a5 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 09:19:20 +0100 Subject: [PATCH 18/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 18890905..a7a58372 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -99,7 +99,14 @@ fi # Importació de les variables de l'arxiu os-release per configurar el repositori de docker -CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} +# Determinar el CODENAME real de la base (Ubuntu o Debian) +if [ -n "$UBUNTU_CODENAME" ]; then + CODENAME=$UBUNTU_CODENAME +elif [ -n "$DEBIAN_CODENAME" ]; then + CODENAME=$DEBIAN_CODENAME +else + CODENAME=$VERSION_CODENAME +fi if [ -z "$CODENAME" ]; then finalitzar_amb_error "No s'ha pogut determinar el 'Codename' del sistema (ex: bookworm, noble). No es pot configurar el repositori de Docker." @@ -108,11 +115,8 @@ fi OS_ID=$ID case "$OS_ID" in ubuntu|debian|raspbian|centos|fedora|rhel|sles) - # És una de les oficials, no toquem res. ;; *) - # No és oficial, busquem en la "genealogia" (ID_LIKE) - # PRIORITZEM Ubuntu perquè Zorin/Mint/PopOS usen els seus binaris. if [[ "$ID_LIKE" == *"ubuntu"* ]]; then OS_ID="ubuntu" elif [[ "$ID_LIKE" == *"debian"* ]]; then From 60e0fec21d74007a8485f74a12483f479fdbbb0d Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 09:55:38 +0100 Subject: [PATCH 19/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.old | 292 ++++++++++++++++++++++++++++++++++++++ docker/install_docker.sh | 88 ++++++------ 2 files changed, 340 insertions(+), 40 deletions(-) create mode 100644 docker/install_docker.old diff --git a/docker/install_docker.old b/docker/install_docker.old new file mode 100644 index 00000000..f792b699 --- /dev/null +++ b/docker/install_docker.old @@ -0,0 +1,292 @@ +#!/bin/bash +# Script d'instal·lació automàtica de Docker CE i Docker Compose a sistemes Debian/Ubuntu. + +clear + +echo "---------------------------------------------------------" +echo "--- Instal·lador automàtic de Docker i Docker-Compose ---" +echo "---------------------------------------------------------" + +# --------------------------------------------------------------------------------- +# 1. DEFINICIÓ DE VARIABLES, CÀRREGA DE LLIBRERIA DE FUNCIONS I VARIABLES DE COLORS +# --------------------------------------------------------------------------------- + +# Definició de variables +# Repositori i branca per la clonació + +#REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte +REPO_URL="https://github.com/rafatecno1/django-aula.git" # repositori del projecte +GIT_BRANCH="millora-docker" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" +#GIT_BRANCH="master" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" + +# Definició de l'URL remota de la llibreria de funcions +REPO_BASE_CLEAN="${REPO_URL%.git}" +RAW_BASE="${REPO_BASE_CLEAN/https:\/\/github.com/https:\/\/raw.githubusercontent.com}" +FUNCTIONS_URL="${RAW_BASE}/${GIT_BRANCH}/setup_djau/functions.sh" +FUNCTIONS_FILE="./functions.sh" + +echo -e "\n" +echo "ℹ️ Descarregant la llibreria d'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." + +# Descàrrega de la llibreria de funcions amb wget +wget -q -O "$FUNCTIONS_FILE" "$FUNCTIONS_URL" + +if [ $? -ne 0 ]; then + echo -e "\n" + echo "❌ ERROR: No s'ha pogut descarregar l'arxiu temporal de funcions des de $FUNCTIONS_URL. Sense aquestes funcions el script no pot executar-se. Sortint." + exit 1 +fi + +# Canvi de propietat: Assignar l'arxiu descarregat a l'usuari original que ha executat 'sudo' +if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then + chown "$SUDO_USER":"$SUDO_USER" "$FUNCTIONS_FILE" +fi + +# Càrrega de la llibreria de funcions +if [ ! -f "$FUNCTIONS_FILE" ]; then + echo -e "\n\e[31m\e[1m❌ ERROR CRÍTIC:\e[0m No s'ha trobat l'arxiu $FUNCTIONS_FILE." + echo "No es pot continuar sense la llibreria de funcions." + exit 1 +fi + +source "$FUNCTIONS_FILE" + +# Variables de color ($C_EXITO, $C_ERROR, etc.) i funcions comunes disponibles. +echo -e "${C_EXITO}✅ Llibreria de funcions temporal carregada amb èxit.${RESET}" + +rm "$FUNCTIONS_FILE" + +if [ $? -ne 0 ]; then + echo -e "${C_ERROR}❌ ADVERTÈNCIA:Per alguna raó desconeguda no s'ha pogut eliminar l'arxiu temporal de funcions${RESET} ${C_INFO} '$FUNCTIONS_FILE'${RESET} ${${C_ERROR}}. Caldria fer-ho manualment.${RESET}" +else +echo -e "${C_EXITO}✅ Eliminació de l'arxiu temporal de funcions.${RESET}" +fi + +# ------------------------------------------------------------- +# 2. COMPROVACIONS, PERMISOS I DETECCIÓ DEL SO +# ------------------------------------------------------------- + +# Avís de Compatibilitat +echo -e "\n" +echo -e "${C_INFO}ℹ️ AVÍS: Aquest instal·lador està dissenyat exclusivament per a sistemes" +echo -e " basats en Debian o Ubuntu (utilitza el gestor de paquets APT).${RESET}" +echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" +echo -e "\n" + +# Comprovació tècnica: El sistema té APT? +if ! command -v apt-get &> /dev/null; then + finalitzar_amb_error "Aquest sistema no utilitza 'apt-get'. L'instal·lador no és compatible." +fi + +sleep 1 + +# Comprovació usuari d'execució amb permisos sudo + +if [[ $EUID -ne 0 ]]; then + echo "${C_ERROR}Aquest script s'ha d'executar amb un usuari amb permisos de 'sudo'.${RESET}" + exit 1 +fi + +USUARI_SUDO=$(logname) + +# Comprovar si el fitxer d'identificació del sistema existeix + +if [ ! -f /etc/os-release ]; then + finalitzar_amb_error "No s'ha trobat l'arxiu /etc/os-release. Aquest sistema no sembla seguir l'estàndard LSB i no es pot identificar la distribució." +fi + +. /etc/os-release + +# Importació de les variables de l'arxiu os-release per configurar el repositori de docker + +# Definició de Fallbacks (Manteniment fàcil). Si el sistema és massa nou, farem servir aquestes versions "segures" +FALLBACK_UBUNTU="noble" # Ubuntu 24.04 +FALLBACK_DEBIAN="trixie" # Debian 13 + + +# Determinar el CODENAME real de la base (Ubuntu o Debian) +if [ -n "$UBUNTU_CODENAME" ]; then + CODENAME=$UBUNTU_CODENAME +elif [ -n "$DEBIAN_CODENAME" ]; then + CODENAME=$DEBIAN_CODENAME +else + CODENAME=$VERSION_CODENAME +fi + +if [ -z "$CODENAME" ]; then + finalitzar_amb_error "No s'ha pogut determinar el 'Codename' del sistema (ex: bookworm, noble). No es pot configurar el repositori de Docker." +fi + +OS_ID=$ID +case "$OS_ID" in + ubuntu|debian|raspbian|centos|fedora|rhel|sles) + ;; + *) + if [[ "$ID_LIKE" == *"ubuntu"* ]]; then + OS_ID="ubuntu" + elif [[ "$ID_LIKE" == *"debian"* ]]; then + OS_ID="debian" + else + finalitzar_amb_error "Sistema no suportat ($ID). No s'ha trobat base Ubuntu/Debian a ID_LIKE." + fi + ;; +esac + +# Verificació de Disponibilitat al Repositori de Docker +echo -e "${C_INFO}ℹ️ Verificant disponibilitat al repositori de Docker per a '$CODENAME'...${RESET}" + +# Comprovem si el fitxer 'Release' existeix a la URL de Docker +CHECK_URL="https://download.docker.com/linux/$OS_ID/dists/$CODENAME/Release" + +if ! curl -Is "$CHECK_URL" | grep -q "200 OK"; then + echo -e "${C_INFO}⚠️ ATENCIÓ: La versió '$CODENAME' no existeix encara a Docker ($OS_ID).${RESET}" + + # Apliquem el fallback segons la base + CODENAME_OLD="$CODENAME" + if [[ "$OS_ID" == "ubuntu" ]]; then + CODENAME=$FALLBACK_UBUNTU + else + CODENAME=$FALLBACK_DEBIAN + fi + + echo -e "${C_EXITO}🔄 S'utilitzarà la versió compatible més propera: ${NEGRITA}$CODENAME${RESET}" +fi + + +# Missatge informatiu per a l'usuari +echo -e "\n${C_INFO}------------------------------------------------------------------------------${RESET}" +echo -e "${C_INFO}🔍 DETECCIÓ DEL SISTEMA:${RESET}" +echo -e " ${NEGRITA}Distribució Real:${RESET} $PRETTY_NAME ($ID)" +echo -e " ${NEGRITA}Repositori Docker:${RESET} https://download.docker.com/linux/$OS_ID" +echo -e " ${NEGRITA}Codi Versió:${RESET} $CODENAME" +echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" + +sleep 2 + +echo -e "\n" +echo -e "${C_PRINCIPAL}⚙️ Iniciant instal·lació de Docker i Docker Compose per a l'usuari: ${USUARI_SUDO}${RESET}" +echo -e "${C_PRINCIPAL}------------------------------------------------------------------------------${RESET}" +echo -e "\n" + +# ------------------------------------------------------------- +# 3. PREPARACIÓ DEL SISTEMA +# ------------------------------------------------------------- + +echo -e "${C_SUBTITULO}-> Actualitzant paquets i instal·lant dependències...${RESET}" + +# NETEJA CRÍTICA: Eliminem fitxers de repositoris previs de docker que puguin estar malament. +rm -f /etc/apt/sources.list.d/docker.sources +rm -f /etc/apt/sources.list.d/docker.list + +if ! apt-get update -qq; then + finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update). Verifiqui si hi ha altres repositoris trencats al sistema." +fi + +sleep 2 +echo -e "\n" + +APT_DESC="ca-certificates i Curl" +echo -e "${C_INFO}ℹ️ $APT_DESC${RESET}" +apt-get install -y \ + ca-certificates \ + curl + +check_install "$APT_DESC" + +sleep 2 + +# ------------------------------------------------------------- +# 4. AFEGIR REPOSITORI OFICIAL DE DOCKER +# ------------------------------------------------------------- + +echo -e "\n" +echo -e "${C_SUBTITULO}-> Afegint repositori oficial de Docker...${RESET}" +install -m 0755 -d /etc/apt/keyrings + +# Descàrrega de la clau +if ! curl -fsSL "https://download.docker.com/linux/$OS_ID/gpg" -o /etc/apt/keyrings/docker.asc; then + finalitzar_amb_error "No s'ha pogut obtenir la clau per a $OS_ID des de download.docker.com" +fi + +chmod a+r /etc/apt/keyrings/docker.asc + +# Configuració del repositori estructurat (DEB822) +echo -e "${C_SUBTITULO}-> Configurant repositori oficial de Docker...${RESET}" +cat < /etc/apt/sources.list.d/docker.sources +Types: deb +URIs: https://download.docker.com/linux/$OS_ID +Suites: $CODENAME +Components: stable +Signed-By: /etc/apt/keyrings/docker.asc +EOF + + +# ------------------------------------------------------------- +# 4. INSTAL·LACIÓ DELS PAQUETS DE DOCKER +# ------------------------------------------------------------- + +echo -e "${C_SUBTITULO}-> Instal·lant Docker CE, CLI i Docker Compose Plugin...${RESET}" +if ! apt-get update -qq; then + finalitzar_amb_error "El repositori de Docker no ha respost correctament per a la versió $CODENAME." +fi + +sleep 2 +echo -e "\n" + +APT_DESC="Paquets de Docker: docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" +echo -e "${C_INFO}ℹ️ $APT_DESC${RESET}" +apt-get install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin + +check_install "$APT_DESC" + +echo -e "\n" +echo -e "${C_EXITO}✅ Docker instal·lat correctament a $PRETTY_NAME ($CODENAME)!${RESET}" + +sleep 2 + +# ------------------------------------------------------------- +# 5. COMPROVACIONS FINALS +# ------------------------------------------------------------- + +echo -e "\n" +echo -e "${C_SUBTITULO}-> Assegurant que el servei Docker estigui actiu...${RESET}" +if ! systemctl start docker; then + finalitzar_amb_error "No s'ha pogut arrencar el servei de Docker." +fi + +systemctl enable docker >/dev/null 2>&1 + +# Mostrem estat +systemctl status docker | grep -E 'Loaded:|Active:' + +sleep 2 + +echo -e "\n" +echo -e "${C_SUBTITULO}-> Afegint l'usuari ${USUARI_SUDO} al grup 'docker'...${RESET}" + +# Comprovem si l'usuari ja pertany al grup per no repetir l'acció +if id -nG "$USUARI_SUDO" | grep -qw "docker"; then + echo -e "${C_INFO}ℹ️ L'usuari ${USUARI_SUDO} ja forma part del grup 'docker'.${RESET}" +else + if ! usermod -aG docker "${USUARI_SUDO}"; then + finalitzar_amb_error "No s'ha pogut afegir l'usuari al grup 'docker'." + fi + echo -e "${C_EXITO}✅ Usuari afegit al grup 'docker' correctament.${RESET}" +fi + +sleep 1 + +echo -e "\n" +echo -e "${C_EXITO}✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT.${RESET}" +echo -e "\n" +sleep 1 +echo -e "${C_INFO}-------------------------------------------------------------------------------------" +echo -e "${C_INFO}⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" +echo -e "${C_INFO} de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." +echo -e "${C_INFO} Un cop reconnectat, podeu provar amb: docker run hello-world" +echo -e "${C_INFO}-------------------------------------------------------------------------------------${RESET}" diff --git a/docker/install_docker.sh b/docker/install_docker.sh index a7a58372..de16ebcb 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -62,9 +62,9 @@ else echo -e "${C_EXITO}✅ Eliminació de l'arxiu temporal de funcions.${RESET}" fi -# ------------------------------------------------------------- -# 2. COMPROVACIONS, PERMISOS I DETECCIÓ DEL SO -# ------------------------------------------------------------- +# ------------------------------------------------------------------------------------- +# 2. COMPROVACIONS PRÈVIES, PERMISOS, DETECCIÓ DEL SO I DE LA COMPATIBILITAT AMB DOCKER +# ------------------------------------------------------------------------------------- # Avís de Compatibilitat echo -e "\n" @@ -81,7 +81,6 @@ fi sleep 1 # Comprovació usuari d'execució amb permisos sudo - if [[ $EUID -ne 0 ]]; then echo "${C_ERROR}Aquest script s'ha d'executar amb un usuari amb permisos de 'sudo'.${RESET}" exit 1 @@ -89,17 +88,19 @@ fi USUARI_SUDO=$(logname) -# Comprovar si el fitxer d'identificació del sistema existeix - +# Comprovar si el fitxer d'identificació del sistema (os-release) existeix if [ ! -f /etc/os-release ]; then finalitzar_amb_error "No s'ha trobat l'arxiu /etc/os-release. Aquest sistema no sembla seguir l'estàndard LSB i no es pot identificar la distribució." fi +# Importació de les variables de l'arxiu os-release per configurar el repositori de docker . /etc/os-release -# Importació de les variables de l'arxiu os-release per configurar el repositori de docker +# Definició de Fallbacks (Manteniment fàcil). Si el sistema és massa nou, farem servir aquestes versions "segures" +FALLBACK_UBUNTU="noble" # Ubuntu 24.04 +FALLBACK_DEBIAN="trixie" # Debian 13 -# Determinar el CODENAME real de la base (Ubuntu o Debian) +# Determinar el CODENAME base (Primer pas de detecció) if [ -n "$UBUNTU_CODENAME" ]; then CODENAME=$UBUNTU_CODENAME elif [ -n "$DEBIAN_CODENAME" ]; then @@ -108,52 +109,28 @@ else CODENAME=$VERSION_CODENAME fi -if [ -z "$CODENAME" ]; then - finalitzar_amb_error "No s'ha pogut determinar el 'Codename' del sistema (ex: bookworm, noble). No es pot configurar el repositori de Docker." -fi - +# Determinar l'OS_ID base OS_ID=$ID case "$OS_ID" in - ubuntu|debian|raspbian|centos|fedora|rhel|sles) - ;; + ubuntu|debian|raspbian|centos|fedora|rhel|sles) ;; *) if [[ "$ID_LIKE" == *"ubuntu"* ]]; then OS_ID="ubuntu" elif [[ "$ID_LIKE" == *"debian"* ]]; then OS_ID="debian" else - finalitzar_amb_error "Sistema no suportat ($ID). No s'ha trobat base Ubuntu/Debian a ID_LIKE." + finalitzar_amb_error "Sistema no suportat ($ID). No s'ha trobat base Ubuntu/Debian." fi ;; esac -# Missatge informatiu per a l'usuari -echo -e "\n${C_INFO}------------------------------------------------------------------------------${RESET}" -echo -e "${C_INFO}🔍 DETECCIÓ DEL SISTEMA:${RESET}" -echo -e " ${NEGRITA}Distribució Real:${RESET} $PRETTY_NAME ($ID)" -echo -e " ${NEGRITA}Repositori Docker:${RESET} https://download.docker.com/linux/$OS_ID" -echo -e " ${NEGRITA}Codi Versió:${RESET} $CODENAME" -echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" - -sleep 2 - -echo -e "\n" -echo -e "${C_PRINCIPAL}⚙️ Iniciant instal·lació de Docker i Docker Compose per a l'usuari: ${USUARI_SUDO}${RESET}" -echo -e "${C_PRINCIPAL}------------------------------------------------------------------------------${RESET}" -echo -e "\n" - -# ------------------------------------------------------------- -# 3. PREPARACIÓ DEL SISTEMA -# ------------------------------------------------------------- - -echo -e "${C_SUBTITULO}-> Actualitzant paquets i instal·lant dependències...${RESET}" +# Update i instal·lció de Curl +echo -e "${C_SUBTITULO}-> Preparant el sistema i instal·lant eines de xarxa...${RESET}" -# NETEJA CRÍTICA: Eliminem fitxers de repositoris previs de docker que puguin estar malament. -rm -f /etc/apt/sources.list.d/docker.sources -rm -f /etc/apt/sources.list.d/docker.list +rm -f /etc/apt/sources.list.d/docker.sources /etc/apt/sources.list.d/docker.list if ! apt-get update -qq; then - finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update). Verifiqui si hi ha altres repositoris trencats al sistema." + finalitzar_amb_error "L'actualització de la llista de paquets (apt update) ha informat d'un error. Verifiqui si hi ha altres repositoris trencats al sistema." fi sleep 2 @@ -169,8 +146,39 @@ check_install "$APT_DESC" sleep 2 + +# Validació del repositori +echo -e "${C_INFO}ℹ️ Verificant disponibilitat al repositori de Docker per a '$CODENAME'...${RESET}" + +CHECK_URL="https://download.docker.com/linux/$OS_ID/dists/$CODENAME/Release" + +if ! curl -Is "$CHECK_URL" | grep -q "200 OK"; then + echo -e "${C_INFO}⚠️ ATENCIÓ: La versió '$CODENAME' no existeix encara a Docker ($OS_ID).${RESET}" + if [[ "$OS_ID" == "ubuntu" ]]; then + CODENAME=$FALLBACK_UBUNTU + else + CODENAME=$FALLBACK_DEBIAN + fi + echo -e "${C_EXITO}🔄 S'utilitzarà la versió comptaible (fallback) més propera: ${NEGRITA}$CODENAME${RESET}" +fi + +# Missatge informatiu per a l'usuari +echo -e "\n${C_INFO}------------------------------------------------------------------------------${RESET}" +echo -e "${C_INFO}🔍 DETECCIÓ DEL SISTEMA:${RESET}" +echo -e " ${NEGRITA}Distribució Real:${RESET} $PRETTY_NAME ($ID)" +echo -e " ${NEGRITA}Repositori Docker:${RESET} https://download.docker.com/linux/$OS_ID" +echo -e " ${NEGRITA}Codi Versió:${RESET} $CODENAME" +echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" + +sleep 2 + +echo -e "\n" +echo -e "${C_PRINCIPAL}⚙️ Iniciant instal·lació de Docker i Docker Compose per a l'usuari: ${USUARI_SUDO}${RESET}" +echo -e "${C_PRINCIPAL}------------------------------------------------------------------------------${RESET}" +echo -e "\n" + # ------------------------------------------------------------- -# 4. AFEGIR REPOSITORI OFICIAL DE DOCKER +# 3. AFEGIR REPOSITORI OFICIAL DE DOCKER # ------------------------------------------------------------- echo -e "\n" From baf31c1423d84cb69e6bb659c69394a78b9d6a37 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 10:11:41 +0100 Subject: [PATCH 20/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.old | 292 -------------------------------------- docker/install_docker.sh | 14 +- 2 files changed, 11 insertions(+), 295 deletions(-) delete mode 100644 docker/install_docker.old diff --git a/docker/install_docker.old b/docker/install_docker.old deleted file mode 100644 index f792b699..00000000 --- a/docker/install_docker.old +++ /dev/null @@ -1,292 +0,0 @@ -#!/bin/bash -# Script d'instal·lació automàtica de Docker CE i Docker Compose a sistemes Debian/Ubuntu. - -clear - -echo "---------------------------------------------------------" -echo "--- Instal·lador automàtic de Docker i Docker-Compose ---" -echo "---------------------------------------------------------" - -# --------------------------------------------------------------------------------- -# 1. DEFINICIÓ DE VARIABLES, CÀRREGA DE LLIBRERIA DE FUNCIONS I VARIABLES DE COLORS -# --------------------------------------------------------------------------------- - -# Definició de variables -# Repositori i branca per la clonació - -#REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte -REPO_URL="https://github.com/rafatecno1/django-aula.git" # repositori del projecte -GIT_BRANCH="millora-docker" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" -#GIT_BRANCH="master" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" - -# Definició de l'URL remota de la llibreria de funcions -REPO_BASE_CLEAN="${REPO_URL%.git}" -RAW_BASE="${REPO_BASE_CLEAN/https:\/\/github.com/https:\/\/raw.githubusercontent.com}" -FUNCTIONS_URL="${RAW_BASE}/${GIT_BRANCH}/setup_djau/functions.sh" -FUNCTIONS_FILE="./functions.sh" - -echo -e "\n" -echo "ℹ️ Descarregant la llibreria d'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." - -# Descàrrega de la llibreria de funcions amb wget -wget -q -O "$FUNCTIONS_FILE" "$FUNCTIONS_URL" - -if [ $? -ne 0 ]; then - echo -e "\n" - echo "❌ ERROR: No s'ha pogut descarregar l'arxiu temporal de funcions des de $FUNCTIONS_URL. Sense aquestes funcions el script no pot executar-se. Sortint." - exit 1 -fi - -# Canvi de propietat: Assignar l'arxiu descarregat a l'usuari original que ha executat 'sudo' -if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then - chown "$SUDO_USER":"$SUDO_USER" "$FUNCTIONS_FILE" -fi - -# Càrrega de la llibreria de funcions -if [ ! -f "$FUNCTIONS_FILE" ]; then - echo -e "\n\e[31m\e[1m❌ ERROR CRÍTIC:\e[0m No s'ha trobat l'arxiu $FUNCTIONS_FILE." - echo "No es pot continuar sense la llibreria de funcions." - exit 1 -fi - -source "$FUNCTIONS_FILE" - -# Variables de color ($C_EXITO, $C_ERROR, etc.) i funcions comunes disponibles. -echo -e "${C_EXITO}✅ Llibreria de funcions temporal carregada amb èxit.${RESET}" - -rm "$FUNCTIONS_FILE" - -if [ $? -ne 0 ]; then - echo -e "${C_ERROR}❌ ADVERTÈNCIA:Per alguna raó desconeguda no s'ha pogut eliminar l'arxiu temporal de funcions${RESET} ${C_INFO} '$FUNCTIONS_FILE'${RESET} ${${C_ERROR}}. Caldria fer-ho manualment.${RESET}" -else -echo -e "${C_EXITO}✅ Eliminació de l'arxiu temporal de funcions.${RESET}" -fi - -# ------------------------------------------------------------- -# 2. COMPROVACIONS, PERMISOS I DETECCIÓ DEL SO -# ------------------------------------------------------------- - -# Avís de Compatibilitat -echo -e "\n" -echo -e "${C_INFO}ℹ️ AVÍS: Aquest instal·lador està dissenyat exclusivament per a sistemes" -echo -e " basats en Debian o Ubuntu (utilitza el gestor de paquets APT).${RESET}" -echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" -echo -e "\n" - -# Comprovació tècnica: El sistema té APT? -if ! command -v apt-get &> /dev/null; then - finalitzar_amb_error "Aquest sistema no utilitza 'apt-get'. L'instal·lador no és compatible." -fi - -sleep 1 - -# Comprovació usuari d'execució amb permisos sudo - -if [[ $EUID -ne 0 ]]; then - echo "${C_ERROR}Aquest script s'ha d'executar amb un usuari amb permisos de 'sudo'.${RESET}" - exit 1 -fi - -USUARI_SUDO=$(logname) - -# Comprovar si el fitxer d'identificació del sistema existeix - -if [ ! -f /etc/os-release ]; then - finalitzar_amb_error "No s'ha trobat l'arxiu /etc/os-release. Aquest sistema no sembla seguir l'estàndard LSB i no es pot identificar la distribució." -fi - -. /etc/os-release - -# Importació de les variables de l'arxiu os-release per configurar el repositori de docker - -# Definició de Fallbacks (Manteniment fàcil). Si el sistema és massa nou, farem servir aquestes versions "segures" -FALLBACK_UBUNTU="noble" # Ubuntu 24.04 -FALLBACK_DEBIAN="trixie" # Debian 13 - - -# Determinar el CODENAME real de la base (Ubuntu o Debian) -if [ -n "$UBUNTU_CODENAME" ]; then - CODENAME=$UBUNTU_CODENAME -elif [ -n "$DEBIAN_CODENAME" ]; then - CODENAME=$DEBIAN_CODENAME -else - CODENAME=$VERSION_CODENAME -fi - -if [ -z "$CODENAME" ]; then - finalitzar_amb_error "No s'ha pogut determinar el 'Codename' del sistema (ex: bookworm, noble). No es pot configurar el repositori de Docker." -fi - -OS_ID=$ID -case "$OS_ID" in - ubuntu|debian|raspbian|centos|fedora|rhel|sles) - ;; - *) - if [[ "$ID_LIKE" == *"ubuntu"* ]]; then - OS_ID="ubuntu" - elif [[ "$ID_LIKE" == *"debian"* ]]; then - OS_ID="debian" - else - finalitzar_amb_error "Sistema no suportat ($ID). No s'ha trobat base Ubuntu/Debian a ID_LIKE." - fi - ;; -esac - -# Verificació de Disponibilitat al Repositori de Docker -echo -e "${C_INFO}ℹ️ Verificant disponibilitat al repositori de Docker per a '$CODENAME'...${RESET}" - -# Comprovem si el fitxer 'Release' existeix a la URL de Docker -CHECK_URL="https://download.docker.com/linux/$OS_ID/dists/$CODENAME/Release" - -if ! curl -Is "$CHECK_URL" | grep -q "200 OK"; then - echo -e "${C_INFO}⚠️ ATENCIÓ: La versió '$CODENAME' no existeix encara a Docker ($OS_ID).${RESET}" - - # Apliquem el fallback segons la base - CODENAME_OLD="$CODENAME" - if [[ "$OS_ID" == "ubuntu" ]]; then - CODENAME=$FALLBACK_UBUNTU - else - CODENAME=$FALLBACK_DEBIAN - fi - - echo -e "${C_EXITO}🔄 S'utilitzarà la versió compatible més propera: ${NEGRITA}$CODENAME${RESET}" -fi - - -# Missatge informatiu per a l'usuari -echo -e "\n${C_INFO}------------------------------------------------------------------------------${RESET}" -echo -e "${C_INFO}🔍 DETECCIÓ DEL SISTEMA:${RESET}" -echo -e " ${NEGRITA}Distribució Real:${RESET} $PRETTY_NAME ($ID)" -echo -e " ${NEGRITA}Repositori Docker:${RESET} https://download.docker.com/linux/$OS_ID" -echo -e " ${NEGRITA}Codi Versió:${RESET} $CODENAME" -echo -e "${C_INFO}------------------------------------------------------------------------------${RESET}" - -sleep 2 - -echo -e "\n" -echo -e "${C_PRINCIPAL}⚙️ Iniciant instal·lació de Docker i Docker Compose per a l'usuari: ${USUARI_SUDO}${RESET}" -echo -e "${C_PRINCIPAL}------------------------------------------------------------------------------${RESET}" -echo -e "\n" - -# ------------------------------------------------------------- -# 3. PREPARACIÓ DEL SISTEMA -# ------------------------------------------------------------- - -echo -e "${C_SUBTITULO}-> Actualitzant paquets i instal·lant dependències...${RESET}" - -# NETEJA CRÍTICA: Eliminem fitxers de repositoris previs de docker que puguin estar malament. -rm -f /etc/apt/sources.list.d/docker.sources -rm -f /etc/apt/sources.list.d/docker.list - -if ! apt-get update -qq; then - finalitzar_amb_error "No s'ha pogut actualitzar la llista de paquets (apt update). Verifiqui si hi ha altres repositoris trencats al sistema." -fi - -sleep 2 -echo -e "\n" - -APT_DESC="ca-certificates i Curl" -echo -e "${C_INFO}ℹ️ $APT_DESC${RESET}" -apt-get install -y \ - ca-certificates \ - curl - -check_install "$APT_DESC" - -sleep 2 - -# ------------------------------------------------------------- -# 4. AFEGIR REPOSITORI OFICIAL DE DOCKER -# ------------------------------------------------------------- - -echo -e "\n" -echo -e "${C_SUBTITULO}-> Afegint repositori oficial de Docker...${RESET}" -install -m 0755 -d /etc/apt/keyrings - -# Descàrrega de la clau -if ! curl -fsSL "https://download.docker.com/linux/$OS_ID/gpg" -o /etc/apt/keyrings/docker.asc; then - finalitzar_amb_error "No s'ha pogut obtenir la clau per a $OS_ID des de download.docker.com" -fi - -chmod a+r /etc/apt/keyrings/docker.asc - -# Configuració del repositori estructurat (DEB822) -echo -e "${C_SUBTITULO}-> Configurant repositori oficial de Docker...${RESET}" -cat < /etc/apt/sources.list.d/docker.sources -Types: deb -URIs: https://download.docker.com/linux/$OS_ID -Suites: $CODENAME -Components: stable -Signed-By: /etc/apt/keyrings/docker.asc -EOF - - -# ------------------------------------------------------------- -# 4. INSTAL·LACIÓ DELS PAQUETS DE DOCKER -# ------------------------------------------------------------- - -echo -e "${C_SUBTITULO}-> Instal·lant Docker CE, CLI i Docker Compose Plugin...${RESET}" -if ! apt-get update -qq; then - finalitzar_amb_error "El repositori de Docker no ha respost correctament per a la versió $CODENAME." -fi - -sleep 2 -echo -e "\n" - -APT_DESC="Paquets de Docker: docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" -echo -e "${C_INFO}ℹ️ $APT_DESC${RESET}" -apt-get install -y \ - docker-ce \ - docker-ce-cli \ - containerd.io \ - docker-buildx-plugin \ - docker-compose-plugin - -check_install "$APT_DESC" - -echo -e "\n" -echo -e "${C_EXITO}✅ Docker instal·lat correctament a $PRETTY_NAME ($CODENAME)!${RESET}" - -sleep 2 - -# ------------------------------------------------------------- -# 5. COMPROVACIONS FINALS -# ------------------------------------------------------------- - -echo -e "\n" -echo -e "${C_SUBTITULO}-> Assegurant que el servei Docker estigui actiu...${RESET}" -if ! systemctl start docker; then - finalitzar_amb_error "No s'ha pogut arrencar el servei de Docker." -fi - -systemctl enable docker >/dev/null 2>&1 - -# Mostrem estat -systemctl status docker | grep -E 'Loaded:|Active:' - -sleep 2 - -echo -e "\n" -echo -e "${C_SUBTITULO}-> Afegint l'usuari ${USUARI_SUDO} al grup 'docker'...${RESET}" - -# Comprovem si l'usuari ja pertany al grup per no repetir l'acció -if id -nG "$USUARI_SUDO" | grep -qw "docker"; then - echo -e "${C_INFO}ℹ️ L'usuari ${USUARI_SUDO} ja forma part del grup 'docker'.${RESET}" -else - if ! usermod -aG docker "${USUARI_SUDO}"; then - finalitzar_amb_error "No s'ha pogut afegir l'usuari al grup 'docker'." - fi - echo -e "${C_EXITO}✅ Usuari afegit al grup 'docker' correctament.${RESET}" -fi - -sleep 1 - -echo -e "\n" -echo -e "${C_EXITO}✅ INSTAL·LACIÓ FINALITZADA CORRECTAMENT.${RESET}" -echo -e "\n" -sleep 1 -echo -e "${C_INFO}-------------------------------------------------------------------------------------" -echo -e "${C_INFO}⚠️ ACCIÓ REQUERIDA: Perquè els nous permisos de Docker tinguin efecte, heu" -echo -e "${C_INFO} de tancar la sessió SSH actual i tornar a connectar-vos-hi o reiniciar la màquina." -echo -e "${C_INFO} Un cop reconnectat, podeu provar amb: docker run hello-world" -echo -e "${C_INFO}-------------------------------------------------------------------------------------${RESET}" diff --git a/docker/install_docker.sh b/docker/install_docker.sh index de16ebcb..2195f2e1 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -152,14 +152,22 @@ echo -e "${C_INFO}ℹ️ Verificant disponibilitat al repositori de Docker per a CHECK_URL="https://download.docker.com/linux/$OS_ID/dists/$CODENAME/Release" -if ! curl -Is "$CHECK_URL" | grep -q "200 OK"; then - echo -e "${C_INFO}⚠️ ATENCIÓ: La versió '$CODENAME' no existeix encara a Docker ($OS_ID).${RESET}" +# Obtenim només el codi d'estat HTTP (ex: 200, 404, 403) +HTTP_STATUS=$(curl -o /dev/null -s -w "%{http_code}" "$CHECK_URL") + +if [ "$HTTP_STATUS" != "200" ]; then + echo -e "${C_INFO}⚠️ ATENCIÓ: La versió '$CODENAME' no s'ha trobat (HTTP $HTTP_STATUS) a Docker ($OS_ID).${RESET}" + + CODENAME_OLD="$CODENAME" if [[ "$OS_ID" == "ubuntu" ]]; then CODENAME=$FALLBACK_UBUNTU else CODENAME=$FALLBACK_DEBIAN fi - echo -e "${C_EXITO}🔄 S'utilitzarà la versió comptaible (fallback) més propera: ${NEGRITA}$CODENAME${RESET}" + + echo -e "${C_EXITO}🔄 Es farà servir la versió compatible (fallback) més propera: ${NEGRITA}$CODENAME${RESET}" +else + echo -e "${C_EXITO}✅ Confirmació que la versió '$CODENAME' es troba al repositori de Docker.${RESET}" fi # Missatge informatiu per a l'usuari From 88094abb4f176bf468fc1b4ef6b12aa1c8daadb9 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 10:19:50 +0100 Subject: [PATCH 21/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 2195f2e1..225349dd 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -133,7 +133,6 @@ if ! apt-get update -qq; then finalitzar_amb_error "L'actualització de la llista de paquets (apt update) ha informat d'un error. Verifiqui si hi ha altres repositoris trencats al sistema." fi -sleep 2 echo -e "\n" APT_DESC="ca-certificates i Curl" @@ -148,7 +147,7 @@ sleep 2 # Validació del repositori -echo -e "${C_INFO}ℹ️ Verificant disponibilitat al repositori de Docker per a '$CODENAME'...${RESET}" +echo -e "${C_INFO}ℹ️ Sistema $PRETTY_NAME. Verificant disponibilitat al repositori de Docker per a '$CODENAME'...${RESET}" CHECK_URL="https://download.docker.com/linux/$OS_ID/dists/$CODENAME/Release" From 18a3d44fb63e3e450ad17aa753374c5e376466ac Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 10:29:10 +0100 Subject: [PATCH 22/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index 225349dd..c7d2af74 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -26,7 +26,7 @@ FUNCTIONS_URL="${RAW_BASE}/${GIT_BRANCH}/setup_djau/functions.sh" FUNCTIONS_FILE="./functions.sh" echo -e "\n" -echo "ℹ️ Descarregant la llibreria d'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." +echo "Descarrregant la llibreria d'ús temporal de funcions i variables compartides ($FUNCTIONS_FILE)." # Descàrrega de la llibreria de funcions amb wget wget -q -O "$FUNCTIONS_FILE" "$FUNCTIONS_URL" From ec87b6f7a6b16f2dab00e8644f265969fad42179 Mon Sep 17 00:00:00 2001 From: rafatecno1 Date: Thu, 5 Feb 2026 14:04:13 +0100 Subject: [PATCH 23/23] =?UTF-8?q?Millora=20instal=C2=B7lador=20autom=C3=A0?= =?UTF-8?q?tic=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/install_docker.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docker/install_docker.sh b/docker/install_docker.sh index c7d2af74..3d4c2bb2 100644 --- a/docker/install_docker.sh +++ b/docker/install_docker.sh @@ -14,10 +14,8 @@ echo "---------------------------------------------------------" # Definició de variables # Repositori i branca per la clonació -#REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte -REPO_URL="https://github.com/rafatecno1/django-aula.git" # repositori del projecte -GIT_BRANCH="millora-docker" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" -#GIT_BRANCH="master" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" +REPO_URL="https://github.com/ctrl-alt-d/django-aula.git" # repositori del projecte +GIT_BRANCH="master" # Si es vol instal·lar una branca concreta. Exemple: "feat/upgrade-bootstrap" # Definició de l'URL remota de la llibreria de funcions REPO_BASE_CLEAN="${REPO_URL%.git}"