Flooky AI : Create tu propia IA
Anass Assim

Anass Assim @ciscoanass

About: Sysadmin and Cybersecurity Student. I explore topics in networking, Linux, and programming, DevOps . Sharing my journey and insights along the way.

Location:
Seville, Spain
Joined:
Oct 18, 2024

Flooky AI : Create tu propia IA

Publish Date: Jun 6
1 0

Image description

Tutorial Práctico: Implementación de Flooky AI desde Cero

Este tutorial documenta paso a paso cómo implementar Flooky AI, un chat de IA privado basado en la API de Claude, desde la creación de cuentas hasta el despliegue completo.


📋 Índice

  1. Creación de la cuenta Azure
  2. Configuración del proyecto en Azure DevOps
  3. Creación de los repositorios
  4. Instalación y configuración del agente de pipeline en WSL
  5. Despliegue de la infraestructura con Terraform
  6. Crear y configurar SonarQube localmente
  7. Despliegue de la aplicación Flooky AI
  8. Configuración del dominio y correo electrónico
  9. Configuración de Grafana y alertas en Slack

1. Creación de la cuenta Azure

1.1. Registro en el portal de Azure

  1. Abre portal.azure.com y selecciona "Crear una cuenta gratuita"
  2. Regístrate con tu dirección de correo electrónico personal
  3. Introduce tus datos personales y de facturación
  4. Verifica tu identidad a través de SMS
  5. Proporciona tu tarjeta de crédito para verificación (no habrá cargos iniciales)

Image description

1.2. Creación del grupo de recursos

Una vez dentro del portal:

  1. En el panel lateral izquierdo, haz clic en "Grupos de recursos"
  2. Haz clic en "+ Crear"
  3. Completa la información:
    • Suscripción: Selecciona tu suscripción
    • Grupo de recursos: Anass-rg
    • Región: West Europe
  4. Haz clic en "Revisar + crear" y luego en "Crear"

También puedes usar Azure CLI si prefieres la línea de comandos:

az login
az group create --name flooky-ai-rg --location westeurope
Enter fullscreen mode Exit fullscreen mode

2. Configuración del proyecto en Azure DevOps

2.1. Creación de la organización y el proyecto

  1. Accede a dev.azure.com e inicia sesión con la misma cuenta de Microsoft
  2. Crea una nueva organización:
    • Haz clic en "New organization"
    • Nombra la organización: "FlookyAI"
    • Selecciona la ubicación del host: "West Europe"
  3. Dentro de la organización, crea un nuevo proyecto:
    • Haz clic en "New project"
    • Nombre: FlookyAI
    • Visibilidad: Private
    • Control de versiones: Git
    • Metodología de trabajo: Agile
    • Haz clic en "Create project"

Image description

2.2. Generación del PAT (Personal Access Token)

Para permitir la conexión del agente de pipeline:

  1. Haz clic en tu avatar en la esquina superior derecha
  2. Selecciona "Personal Access Tokens"
  3. Selecciona "New Token"
  4. Configura el token con:
    • Nombre: "FlookyAI-Pipeline-Agent"
    • Organización: FlookyAI
    • Expiración: 120 días
    • Scope: Custom defined
    • Agent Pools: Read & manage
    • Build: Read & execute
    • Code: Read & write
    • Service Connections: Read & query
  5. Copia y guarda el token generado en un lugar seguro (solo se muestra una vez)

💡 Nota: Puedes generar más PAT para otras herramientas según sea necesario.

Image description

3. Creación de los repositorios

3.1. Repositorio principal FlookyAI

  1. En Azure DevOps, ve a "Repos" > "Files"
  2. Inicializa el repositorio con un README
  3. Crea la aplicación IA en este repositorio

La aplicación está disponible en mi repositorio GitHub. Puedes clonar el repositorio con este comando:

git clone https://github.com/ciscoAnass/Flooky-AI.git
Enter fullscreen mode Exit fullscreen mode
  1. Crea el archivo azure-pipelines.yml para CI/CD:

Configuración Inicial

trigger:
- main

pool:
  name: Default

variables:
  webAppName: 'Flooky-WebApp'
  azureSubscription: 'SC-SlothAI'
  pythonVersion: '3.10'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • El pipeline se activa automáticamente cuando hay cambios en la rama main
  • Se ejecuta en el grupo de agentes predeterminado
  • Define tres variables importantes: nombre de la app web, la conexión de servicio de Azure, y la versión de Python a usar

Etapa 1: Build

- stage: Build
  displayName: 'Build stage'
  jobs:
  - job: BuildJob
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '$(pythonVersion)'
        addToPath: true
      displayName: 'Use Python $(pythonVersion)'

    - script: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
      displayName: 'Install dependencies'

    - task: ArchiveFiles@2
      inputs:
        rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
        includeRootFolder: false
        archiveType: 'zip'
        archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
        replaceExistingArchive: true
      displayName: 'Archive project files'

    - task: PublishBuildArtifacts@1
      inputs:
        pathToPublish: '$(Build.ArtifactStagingDirectory)'
        artifactName: 'drop'
        publishLocation: 'Container'
      displayName: 'Publish artifacts'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • Esta etapa prepara el código para el despliegue
  • Configura el entorno con Python 3.10
  • Actualiza pip e instala todas las dependencias del proyecto
  • Crea un archivo ZIP con todos los archivos del proyecto
  • Publica este ZIP como un "artefacto" llamado "drop" para usarlo en las siguientes etapas

Etapa 2: Analysis

- stage: Analysis
  displayName: 'SonarQube'
  dependsOn: Build
  condition: succeeded()
  jobs:
  - job: SonarQube
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.x'
        addToPath: true

    - script: |
        pip install -r requirements.txt
        pip install pytest pytest-cov
        pytest --cov=. --cov-report=xml
      displayName: 'Setup and Test'

    - task: SonarQubePrepare@7
      inputs:
        SonarQube: 'SonarQube-Local'
        scannerMode: 'CLI'
        configMode: 'manual'
        projectKey: 'FlookyAI_FlookyAI_acddf0f9-4761-4ebd-ba6b-e2bf470dfcaf'
        projectName: 'FlookyAI'
        extraProperties: |
          sonar.sources=.
          sonar.python.coverage.reportPaths=coverage.xml
          sonar.exclusions=**/*.pyc,**/__pycache__/**,**/tests/**

    - task: SonarQubeAnalyze@7
    - task: SonarQubePublish@7
      inputs:
        pollingTimeoutSec: '300'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • Esta etapa analiza la calidad del código usando SonarQube
  • Solo se ejecuta si la etapa de Build fue exitosa
  • Configura Python y reinstala las dependencias
  • Prepara SonarQube con la configuración necesaria para analizar el código Python
  • Ejecuta las pruebas del proyecto y genera un informe de cobertura
  • Realiza el análisis de código y publica los resultados en SonarQube
  • Excluye archivos innecesarios como bytecode de Python y permite enfocarse en el código fuente real

Etapa 3: Deploy

- stage: Deploy
  displayName: 'Deploy stage'
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: DeployJob
    displayName: 'Deploy to Azure Web App'
    environment: 'production'
    strategy:
      runOnce:
        deploy:
          steps:
          # Deploy to Azure Web App
          - task: AzureWebApp@1
            inputs:
              azureSubscription: '$(azureSubscription)'
              appType: 'webAppLinux'
              appName: '$(webAppName)'
              package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
              runtimeStack: 'PYTHON|3.10'
              startupCommand: 'pip install -r requirements.txt && pip install gunicorn && gunicorn --bind=0.0.0.0:8000 app:app'
            displayName: 'Deploy to Azure Web App'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • Esta etapa despliega la aplicación en Azure Web App
  • Solo se ejecuta si la etapa de Build fue exitosa
  • Define que se está desplegando en el entorno de "producción"
  • Usa la tarea AzureWebApp para subir el archivo ZIP a la aplicación web de Azure
  • Configura la aplicación para usar Python 3.10 en Linux
  • Establece un comando de inicio que:
    • Instala las dependencias del proyecto
    • Instala el servidor web Gunicorn
    • Inicia la aplicación usando Gunicorn en el puerto 8000
  • La aplicación queda desplegada y funcionando en Azure

3.2. Repositorio de infraestructura

  1. En Azure DevOps, crea un nuevo repositorio:

    • Haz clic en el nombre del repositorio actual > "New repository"
    • Nombre: FlookyAI-Infrastructure
    • Tipo: Git
    • Añadir README: Marcado
    • Haz clic en "Create"
  2. Crea el archivo main.tf:

data "azurerm_resource_group" "rg" {
    name = "Anass-RG"
}

resource "azurerm_service_plan" "anass-webapp-plan" {
  name                = "Flooky-plan"
  location            = data.azurerm_resource_group.rg.location
  resource_group_name = data.azurerm_resource_group.rg.name
  os_type             = "Linux"
  sku_name            = "B2"
}

resource "azurerm_linux_web_app" "FlookyAIWebApp" {
  name                = "Flooky-WebApp"
  resource_group_name = data.azurerm_resource_group.rg.name
  location            = data.azurerm_resource_group.rg.location
  service_plan_id     = azurerm_service_plan.anass-webapp-plan.id

  site_config {
    application_stack {
      python_version = "3.9"
    }
    always_on = true
  }
}
Enter fullscreen mode Exit fullscreen mode

Este archivo Terraform (main.tf) configura recursos en Azure:

  • Utiliza un grupo de recursos existente llamado "Anass-RG"
  • Crea un plan de servicio llamado "Flooky-plan" con tipo Linux y SKU B2
  • Crea una aplicación web Linux llamada "Flooky-WebApp" que:
    • Usa el plan de servicio creado anteriormente
    • Configura Python 3.9 como entorno de ejecución
    • Mantiene la aplicación siempre activa (always on)

En resumen: es un script de infraestructura como código que despliega una aplicación web Python en Azure usando un grupo de recursos existente.

  1. Crea el archivo provider.tf:
terraform {
    required_providers {
        azurerm = {
        source  = "hashicorp/azurerm"
        version = "4.8.0"
        }
    }
    backend "azurerm" {
    }
}

provider "azurerm" {
    features {}
    skip_provider_registration = true
}
Enter fullscreen mode Exit fullscreen mode

Este fragmento de código Terraform configura:

  • El proveedor de Azure (azurerm) indicando que se usará la versión 4.8.0 del proveedor de HashiCorp
  • Un backend de estado remoto en Azure (donde Terraform guardará el estado de la infraestructura), aunque los detalles específicos del backend no están definidos en este fragmento
  • La configuración del proveedor Azure con opciones básicas:
    • features {} activa características predeterminadas
    • skip_provider_registration = true evita que Terraform intente registrar los proveedores de recursos en Azure

En resumen: este código establece la configuración necesaria para que Terraform pueda conectarse y gestionar recursos en Azure, usando un estado remoto almacenado también en Azure.

  1. Crea el archivo azure-pipelines.yml para CI/CD:

Configuración Inicial

trigger:
- main

pool:
  name: Default
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • El pipeline se activa automáticamente cuando hay cambios en la rama main
  • Se ejecuta en el grupo de agentes predeterminado

Paso 1: Instalación de Terraform

- task: TerraformInstaller@1
  inputs:
    terraformVersion: 'latest'
  displayName: 'Instalar Terraform'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • Instala la última versión de Terraform en el agente
  • Esta herramienta es necesaria para ejecutar los comandos de infraestructura como código

Paso 2: Inicialización de Terraform

- task: TerraformTaskV4@4
  inputs:
    provider: 'azurerm'
    command: 'init'
    backendServiceArm: 'SC-SlothAI'
    backendAzureRmResourceGroupName: 'Anass-RG'
    backendAzureRmStorageAccountName: 'flookystorage'
    backendAzureRmContainerName: 'flookycontainer'
    backendAzureRmKey: 'terraform.tfstate'
  displayName: 'Terraform Init'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • Inicializa Terraform (terraform init) para preparar el entorno de trabajo
  • Configura el backend remoto en Azure para guardar el estado de la infraestructura:
    • Usa la conexión de servicio 'SC-SlothAI' para autenticarse
    • Almacena el estado en el grupo de recursos 'Anass-RG'
    • Usa la cuenta de almacenamiento 'flookystorage'
    • Guarda el archivo de estado en el contenedor 'flookycontainer'
    • Nombra el archivo de estado como 'terraform.tfstate'

Paso 3: Plan de Terraform

- task: TerraformTaskV4@4
  inputs:
    provider: 'azurerm'
    command: 'plan'
    environmentServiceNameAzureRM: 'SC-SlothAI'
  displayName: 'Terraform Plan'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • Ejecuta terraform plan para crear un plan de los cambios a realizar
  • Este paso muestra qué recursos se crearán, modificarán o eliminarán
  • Usa la conexión de servicio 'SC-SlothAI' para autenticarse con Azure

Paso 4: Aplicación de Terraform

- task: TerraformTaskV4@4
  inputs:
    provider: 'azurerm'
    command: 'apply'
    environmentServiceNameAzureRM: 'SC-SlothAI'
  displayName: 'Terraform Apply'
Enter fullscreen mode Exit fullscreen mode

Explicación:

  • Ejecuta terraform apply para implementar los cambios en la infraestructura
  • Este paso crea o actualiza los recursos definidos en los archivos de Terraform
  • Usa la conexión de servicio 'SC-SlothAI' para autenticarse con Azure
  • Implementa automáticamente la infraestructura sin intervención manual

4. Instalación y configuración del agente de pipeline en WSL

4.1. Instalación de WSL en Windows

  1. Abre PowerShell como administrador y ejecuta el comando para instalar WSL con Ubuntu:
wsl --install -d Ubuntu
Enter fullscreen mode Exit fullscreen mode
  1. Espera a que se complete la instalación
  2. Cuando se abra la terminal de Ubuntu, crea un usuario y contraseña

4.2. Actualización de Ubuntu e instalación de dependencias

Actualiza los paquetes del sistema:

sudo apt update && sudo apt upgrade -y
Enter fullscreen mode Exit fullscreen mode

Instala las dependencias necesarias:

sudo apt install -y curl git libicu-dev
Enter fullscreen mode Exit fullscreen mode

4.3. Creación del usuario para el agente

Crea un nuevo usuario para el agente:

sudo adduser azagent
Enter fullscreen mode Exit fullscreen mode

Añade el usuario al grupo sudo:

sudo usermod -aG sudo azagent
Enter fullscreen mode Exit fullscreen mode

Cambia al nuevo usuario:

sudo su - azagent
Enter fullscreen mode Exit fullscreen mode

4.4. Descarga e instalación del agente

Crea un directorio para el agente:

mkdir ~/agent && cd ~/agent
Enter fullscreen mode Exit fullscreen mode

Descarga el paquete del agente:

curl -O https://vstsagentpackage.azureedge.net/agent/3.227.2/vsts-agent-linux-x64-3.227.2.tar.gz
Enter fullscreen mode Exit fullscreen mode

Extrae el paquete:

tar zxvf vsts-agent-linux-x64-3.227.2.tar.gz
Enter fullscreen mode Exit fullscreen mode

Ejecuta el script de configuración:

./config.sh
Enter fullscreen mode Exit fullscreen mode

Durante la configuración, proporciona la siguiente información:

  • URL del servidor: https://dev.azure.com/FlookyAI
  • PAT: Pega el token que generaste anteriormente
  • Nombre del pool de agentes: SelfHostedAgents (si no existe, se creará)
  • Nombre del agente: WSL-Agent-01 (o el nombre que prefieras)

Instala el agente como servicio:

sudo ./svc.sh install azagent
Enter fullscreen mode Exit fullscreen mode

Inicia el servicio:

sudo ./svc.sh start
Enter fullscreen mode Exit fullscreen mode

Verifica que el servicio está en funcionamiento:

sudo ./svc.sh status
Enter fullscreen mode Exit fullscreen mode

4.5. Verificación del agente en Azure DevOps

  1. En Azure DevOps, ve a "Project settings" (icono de engranaje en la parte inferior izquierda)
  2. Selecciona "Agent pools" en el menú lateral
  3. Haz clic en el pool "SelfHostedAgents"
  4. Verifica que tu agente aparece como "Online"

El agente debe aparecer con status "Online" y estar listo para ejecutar jobs

Image description


5. Despliegue de la infraestructura con Terraform

5.1. Creación de recursos para el estado de Terraform

Crea un grupo de recursos para el estado de Terraform:

az group create --name tfstate --location westeurope
Enter fullscreen mode Exit fullscreen mode

Crea una cuenta de almacenamiento:

az storage account create --name anassstorage --resource-group tfstate --sku Standard_LRS
Enter fullscreen mode Exit fullscreen mode

Crea un contenedor de blobs:

az storage container create --name tfstate --account-name anassstorage
Enter fullscreen mode Exit fullscreen mode

5.2. Creación de una conexión de servicio en Azure DevOps

  1. En Azure DevOps, ve a "Project settings" > "Service connections"
  2. Haz clic en "New service connection"
  3. Selecciona "Azure Resource Manager"
  4. Selecciona "Service principal (automatic)"
  5. Completa la información:
    • Scope level: Subscription
    • Subscription: Selecciona tu suscripción
    • Resource group: anass-rg
    • Service connection name: SC-Flooky
    • Grant access to all pipelines: Marcado
  6. Haz clic en "Save"

5.3. Creación y ejecución del pipeline de infraestructura

  1. En Azure DevOps, ve a "Pipelines" > "Pipelines"
  2. Haz clic en "New pipeline"
  3. Selecciona "Azure Repos Git"
  4. Selecciona el repositorio "FlookyAI-Infrastructure"
  5. Selecciona "Existing Azure Pipelines YAML file"
  6. Selecciona "/azure-pipelines.yml"
  7. Revisa el pipeline y haz clic en "Run"

Image description

6. Crear y configurar SonarQube localmente

6.1. Instalar SonarQube Server en Ubuntu WSL

Configuración de Requisitos Previos

Primero, preparemos tu entorno Ubuntu WSL:

# Actualiza tu sistema
sudo apt update && sudo apt upgrade -y

# Instala Java 17 (requerido por SonarQube)
sudo apt install openjdk-17-jdk -y

# Verifica la instalación de Java
java -version

# Instala wget y unzip
sudo apt install wget unzip -y
Enter fullscreen mode Exit fullscreen mode

6.2. Instalar y Configurar SonarQube Community Edition

Crear un usuario dedicado para SonarQube

sudo adduser sonarqube
sudo usermod -aG sudo sonarqube
Enter fullscreen mode Exit fullscreen mode

Cambiar al usuario sonarqube

sudo su - sonarqube
Enter fullscreen mode Exit fullscreen mode

Descargar SonarQube Community Edition (última versión LTS)

cd /opt
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.3.0.82913.zip
Enter fullscreen mode Exit fullscreen mode

Extraer SonarQube

sudo unzip sonarqube-10.3.0.82913.zip
sudo mv sonarqube-10.3.0.82913 sonarqube
sudo chown -R sonarqube:sonarqube sonarqube
Enter fullscreen mode Exit fullscreen mode

Configurar SonarQube

Edita el archivo de configuración de SonarQube:

sudo nano /opt/sonarqube/conf/sonar.properties
Enter fullscreen mode Exit fullscreen mode

Agrega estas líneas al archivo de configuración:

# Configuración del servidor web
sonar.web.host=0.0.0.0
sonar.web.port=9000

# Base de datos (usando H2 embebida para simplicidad)
sonar.embeddedDatabase.port=9092
Enter fullscreen mode Exit fullscreen mode

Iniciar SonarQube

Navega al directorio bin de SonarQube:

cd /opt/sonarqube/bin/linux-x86-64
Enter fullscreen mode Exit fullscreen mode

Inicia SonarQube:

./sonar.sh start
Enter fullscreen mode Exit fullscreen mode

Verifica si está en ejecución:

./sonar.sh status
Enter fullscreen mode Exit fullscreen mode

Espera unos minutos a que SonarQube se inicie por completo, luego accede desde tu navegador a: http://localhost:9000

  1. Inicia sesión con admin/admin
  2. Se te pedirá que cambies la contraseña: establece una nueva segura
  3. Completa el asistente de configuración inicial

6.3. Instalar y configurar SonarQube Scanner

Descargar SonarQube Scanner

cd /opt
sudo wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
Enter fullscreen mode Exit fullscreen mode

Extraer el Scanner

sudo unzip sonar-scanner-cli-5.0.1.3006-linux.zip
sudo mv sonar-scanner-5.0.1.3006-linux sonar-scanner
sudo chown -R sonarqube:sonarqube sonar-scanner
Enter fullscreen mode Exit fullscreen mode

Añadir el scanner al PATH

echo 'export PATH="/opt/sonar-scanner/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

6.4. Crear Tu Primer Proyecto

  1. En la interfaz web de SonarQube, haz clic en "Create Project"
  2. Selecciona "Manually"
  3. Introduce:
    • Project key: Flooky-AI
    • Display name: Flooky AI

Image description

Image description

Image description

Configurar el Proyecto para el Análisis

Ve a la terminal y clona el repositorio de Flooky-AI:

git clone https://fatimaassim20@dev.azure.com/fatimaassim20/FlookyAI/_git/FlookyAI
Enter fullscreen mode Exit fullscreen mode

Crea un archivo sonar-project.properties en la raíz de tu proyecto:

# En el directorio de tu proyecto
nano sonar-project.properties
Enter fullscreen mode Exit fullscreen mode

Agrega este contenido:

sonar.projectKey=Flooky-AI
sonar.projectName=Flooky AI
sonar.projectVersion=1.0
sonar.sources=.
sonar.host.url=http://localhost:9000
sonar.token=TU_TOKEN_GENERADO_AQUÍ
Enter fullscreen mode Exit fullscreen mode

Ejecutar Tu Primer Análisis

# En el directorio de tu proyecto
sonar-scanner
Enter fullscreen mode Exit fullscreen mode

Image description

7. Despliegue de la aplicación Flooky AI

7.1. Obtención de la API Key de Claude

  1. Regístrate en la plataforma de Anthropic para obtener acceso a la API de Claude: https://www.anthropic.com/ y solicita acceso a la API
  2. Una vez aprobado, genera una clave API desde el dashboard:
    • Tu clave se verá similar a: sk_ant_api_k3y123456789...

Image description

  1. Guarda esta clave para utilizarla más adelante

7.2. Almacenamiento de la clave API en Azure Key Vault

  1. En el portal de Azure, busca y selecciona el Key Vault "flooky-ai-kv" creado por Terraform
  2. Ve a "Secrets" > "Generate/Import"
  3. Completa la información:
    • Método de carga: Manual
    • Nombre: CLAUDE-API-KEY
    • Valor: Pega tu clave API de Claude
  4. Haz clic en "Create"

7.3. Creación y ejecución del pipeline de la aplicación

  1. En Azure DevOps, ve a "Pipelines" > "Pipelines"
  2. Haz clic en "New pipeline"
  3. Selecciona "Azure Repos Git"
  4. Selecciona el repositorio "FlookyAI"
  5. Selecciona "Existing Azure Pipelines YAML file"
  6. Selecciona "/azure-pipelines.yml"
  7. Revisa el pipeline y haz clic en "Run"

Image description

7.4. Verificación del despliegue

  1. Una vez completado el pipeline, accede al portal de Azure
  2. Busca y selecciona el App Service "flooky-ai"
  3. Haz clic en "Browse" o en la URL para verificar que la aplicación está funcionando

Image description


8. Configuración del dominio y correo electrónico

8.1. Compra del dominio en Hostinger

  1. Accede a Hostinger
  2. Busca el dominio "flooky.space" y verifica su disponibilidad
  3. Añade el dominio al carrito y completa el proceso de compra
  4. Una vez adquirido, accede al panel de control de Hostinger

Image description

8.2. Configuración del dominio para Azure App Service

  1. En el portal de Azure, accede a tu App Service "flooky-ai"
  2. En el menú lateral, selecciona "Dominios personalizados"
  3. Haz clic en "Añadir dominio personalizado"
  4. Sigue las instrucciones para obtener los registros DNS necesarios
  5. En el panel de control de Hostinger, ve a la sección "DNS / Nameservers"
  6. Añade los registros DNS proporcionados por Azure:
    • Registro A para @
    • Registro TXT para verificación
  7. Regresa a Azure y completa el proceso de validación y adición del dominio

Image description

Comprobamos que todo funciona y visitamos flooky.space

8.3. Configuración de SSL/TLS

  1. En el App Service, ve a "TLS/SSL settings"
  2. Para un certificado gratuito gestionado por Azure:
    • Selecciona "Private Key Certificates (.pfx)"
    • Haz clic en "Create App Service Managed Certificate"
    • Selecciona tu dominio personalizado
    • Haz clic en "Create"
  3. Una vez creado el certificado:
    • Ve a "SSL bindings"
    • Haz clic en "Add SSL Binding"
    • Selecciona tu dominio y el certificado
    • Haz clic en "Add Binding"
  4. Establece "HTTPS Only" en "On"

8.4. Configuración de Zoho Mail

  1. Accede a Zoho Mail y regístrate
  2. Selecciona "Add an existing domain" e introduce "flooky.space"
  3. Sigue las instrucciones para verificar la propiedad del dominio
  4. Configura los registros MX, SPF, DKIM y DMARC según las instrucciones de Zoho
  5. Crea las cuentas de correo necesarias: hello@flooky.space
  6. Configura las firmas y ajustes adicionales según tus preferencias

Image description

Image description


9. Configuración de Grafana y alertas en Slack

9.1. Despliegue y Configuración de Grafana con Docker

En el terminal de Ubuntu WSL ejecuta este comando:

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  -e "GF_SECURITY_ADMIN_PASSWORD=Anass@1234" \
  --restart=unless-stopped \
  grafana/grafana:latest
Enter fullscreen mode Exit fullscreen mode
  1. Accede al navegador con este enlace: http://localhost:3000
  2. Ve a "Connection String" y conecta tu cuenta Azure por ahí

9.2. Creación de dashboards

Crea un nuevo dashboard:

Configura paneles para monitorizar:

CPU y memoria del App Service:

  • Memoria RAM
  • Tiempo promedio de respuesta
  • Requests
  • Data Out
  • Tráfico de Red

Image description

9.3. Configuración de alertas en Slack

  1. Crea un canal en Slack para las alertas (ej. #flooky-ai-alerts)
  2. Instala la aplicación "Incoming WebHooks" en tu workspace de Slack

Image description

Configurar grafana.ini

Image description

En Grafana:

  1. Ve a Alerting > Notification channels
  2. Haz clic en "New channel"
  3. Configura:
    • Name: Slack Alerts
    • Type: Slack
    • URL: Pega la URL del webhook
  4. Haz clic en "Test" para verificar
  5. Guarda el canal de notificación
  6. Configura reglas de alerta para los paneles importantes

Image description


🎉 ¡Felicidades!

Has completado exitosamente la implementación de Flooky AI desde cero. Tu aplicación ahora debería estar:

  • ✅ Desplegada en Azure Web App
  • ✅ Con un dominio personalizado (flooky.space) configurado
  • ✅ Con SSL/TLS habilitado
  • ✅ Integrada con pipelines de CI/CD en Azure DevOps
  • ✅ Con análisis de código en SonarQube
  • ✅ Monitoreada con Grafana
  • ✅ Con alertas configuradas en Slack
  • ✅ Con correo empresarial funcional

📚 Recursos Adicionales

🤝 Contribución

Si encuentras algún error o tienes sugerencias de mejora, no dudes en:

  1. Crear un issue en el repositorio
  2. Enviar un pull request con tus mejoras
  3. Contactar al equipo de desarrollo

📝 Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.


Desarrollado por: Anass Assim
Institución: I.E.S Rodrigo Caro
Curso: Administración de Sistemas Informáticos en Red
Fecha: 2025

Comments 0 total

    Add comment