From 371f511bffe05b9e1f1f1b56880b30cae47e9736 Mon Sep 17 00:00:00 2001 From: Alfredo Date: Wed, 24 Sep 2025 22:30:15 -0300 Subject: [PATCH] creacion de docker --- .dockerignore | 53 +++++++++ DOCKER_README.md | 225 ++++++++++++++++++++++++++++++++++++++ Dockerfile | 78 +++++++++++++ docker-compose.yml | 53 +++++++++ docker/apache-config.conf | 37 +++++++ docker/init-db.sql | 24 ++++ docker/init.sh | 38 +++++++ instalacion/alias.conf | 65 +++++++++++ instalacion/config.php | 225 ++++++++++++++++++++++++++++++++++++++ 9 files changed, 798 insertions(+) create mode 100644 .dockerignore create mode 100644 DOCKER_README.md create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 docker/apache-config.conf create mode 100644 docker/init-db.sql create mode 100644 docker/init.sh create mode 100644 instalacion/alias.conf create mode 100644 instalacion/config.php diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..401a988 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,53 @@ +# Git +.git +.gitignore + +# Docker +Dockerfile +docker-compose.yml +.dockerignore + +# Documentation +README.md +DOCKER_README.md +*.md + +# Logs +*.log +logs/ + +# Cache and temporary files +cache/ +temp/ +tmp/ + +# IDE files +.vscode/ +.idea/ +*.swp +*.swo + +# OS files +.DS_Store +Thumbs.db + +# Node modules (if any) +node_modules/ + +# Backup files +*.bak +*.backup + +# Environment files +.env +.env.local +.env.production + +# Composer +composer.lock + +# Phinx migrations (will be handled by init scripts) +db/migrations/ + +# Personalizaciones (si las hay) +src/pers/ diff --git a/DOCKER_README.md b/DOCKER_README.md new file mode 100644 index 0000000..67f91e6 --- /dev/null +++ b/DOCKER_README.md @@ -0,0 +1,225 @@ +# SIU-Guaraní Preinscripción 3.22.0 - Docker + +Este proyecto contiene la configuración Docker para ejecutar el sistema de Preinscripción SIU-Guaraní versión 3.22.0. + +## Requisitos del Sistema + +- Docker +- Docker Compose +- Al menos 2GB de RAM disponible +- Puerto 8080 y 5432 disponibles + +## Componentes Incluidos + +- **PHP 7.4** con Apache 2.4 +- **PostgreSQL 11.6** (configurado con encoding LATIN1) +- **Extensiones PHP requeridas**: curl, mbstring, pdo_pgsql, openssl, apcu, gd2 +- **Composer** para gestión de dependencias +- **yui-compressor 2.4.2** para compilación de recursos + +## Instalación y Configuración + +### 1. Configuración Inicial + +Antes de ejecutar el sistema, es necesario configurar los archivos de configuración: + +```bash +# Copiar archivos de configuración de ejemplo +cp docker/config.docker.php instalacion/config.php +cp docker/alias.docker.conf instalacion/alias.conf +``` + +### 2. Configuración de Base de Datos + +El sistema utiliza PostgreSQL con las siguientes configuraciones por defecto: + +- **Base de datos principal**: `preinscripcion` +- **Base de datos de gestión**: `gestion` (opcional) +- **Usuario**: `postgres` +- **Contraseña**: `postgres123` +- **Host**: `postgres` (dentro del contenedor) +- **Puerto**: `5432` + +### 3. Ejecutar el Sistema + +```bash +# Construir y ejecutar los contenedores +docker-compose up -d + +# Ver los logs +docker-compose logs -f + +# Detener el sistema +docker-compose down +``` + +### 4. Acceso al Sistema + +Una vez iniciado, el sistema estará disponible en: + +- **Punto de acceso para alumnos**: http://localhost:8080/preinscripcion/ +- **Punto de acceso para administradores**: http://localhost:8080/preinscripcion_admin/ + +### 5. Crear Usuario Administrador + +Para crear un usuario administrador, ejecutar: + +```bash +# Acceder al contenedor +docker-compose exec web bash + +# Ejecutar el comando de creación de usuario +cd /var/www/html +./bin/preinscripcion user_admin +``` + +Seguir las instrucciones para crear el usuario administrador. + +## Configuración Personalizada + +### Variables de Entorno + +El archivo `docker-compose.yml` incluye las siguientes variables de entorno configurables: + +```yaml +environment: + - DB_HOST=postgres + - DB_PORT=5432 + - DB_NAME=preinscripcion + - DB_USER=postgres + - DB_PASSWORD=postgres123 +``` + +### Configuración de Correo + +Para configurar el servidor de correo, editar el archivo `instalacion/config.php` en la sección `smtp`: + +```php +'smtp' => [ + 'from' => 'tu-email@universidad.edu.ar', + 'from_name' => 'SIU-Preinscripción', + 'host' => 'smtp.universidad.edu.ar', + 'seguridad' => mail::SSL, + 'auth' => true, + 'port' => 465, + 'usuario' => 'tu-usuario', + 'clave' => 'tu-contraseña', + // ... más configuraciones +], +``` + +### Múltiples Puntos de Acceso + +Para configurar múltiples puntos de acceso, editar: + +1. `instalacion/alias.conf` - Agregar nuevos alias y configuraciones de Location +2. `instalacion/config.php` - Agregar nuevas configuraciones en la sección `accesos` + +## Comandos Útiles + +```bash +# Ver logs del contenedor web +docker-compose logs web + +# Ver logs de PostgreSQL +docker-compose logs postgres + +# Acceder al contenedor web +docker-compose exec web bash + +# Acceder a PostgreSQL +docker-compose exec postgres psql -U postgres -d preinscripcion + +# Reiniciar solo el contenedor web +docker-compose restart web + +# Reconstruir los contenedores +docker-compose build --no-cache + +# Limpiar volúmenes (¡CUIDADO! Esto borra todos los datos) +docker-compose down -v +``` + +## Desarrollo + +### Compilar Recursos para Producción + +```bash +# Acceder al contenedor +docker-compose exec web bash + +# Compilar recursos +cd /var/www/html +./bin/preinscripcion compilar_recursos +``` + +### Modo Producción + +Para ejecutar en modo producción: + +1. Cambiar `'produccion' => true` en `instalacion/config.php` +2. Compilar recursos con el comando anterior +3. Configurar servidor de correo apropiado +4. Configurar SSL si es necesario + +## Solución de Problemas + +### Error de Permisos + +Si hay problemas de permisos: + +```bash +# Recuperar permisos correctos +docker-compose exec web chown -R www-data:www-data /var/www/html +docker-compose exec web chmod -R 755 /var/www/html +``` + +### Base de Datos No Inicializada + +Si la base de datos no se inicializa correctamente: + +```bash +# Detener contenedores +docker-compose down + +# Eliminar volúmenes +docker-compose down -v + +# Volver a ejecutar +docker-compose up -d +``` + +### Puerto en Uso + +Si el puerto 8080 está en uso, cambiar en `docker-compose.yml`: + +```yaml +ports: + - "8081:80" # Cambiar 8080 por 8081 +``` + +## Estructura de Archivos + +``` +├── Dockerfile # Imagen PHP con Apache +├── docker-compose.yml # Configuración de servicios +├── docker/ +│ ├── apache-config.conf # Configuración de Apache +│ ├── init.sh # Script de inicialización +│ ├── init-db.sql # Script adicional de BD +│ ├── config.docker.php # Configuración de ejemplo +│ └── alias.docker.conf # Alias de Apache de ejemplo +├── instalacion/ # Configuraciones del sistema +├── src/ # Código fuente de la aplicación +└── BD/ # Scripts de base de datos +``` + +## Soporte + +Para soporte técnico, consultar la documentación oficial del SIU: +- [Documentación SIU-Guaraní](https://documentacion.siu.edu.ar/wiki/SIU-Guaraní) +- [Foro de la Comunidad SIU](http://foro.comunidad.siu.edu.ar) + +## Versión + +Este Docker está configurado para SIU-Guaraní Preinscripción versión **3.22.0**. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..46b1834 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,78 @@ +FROM php:7.4-apache + +# Instalar dependencias del sistema +RUN apt-get update && apt-get install -y \ + libpq-dev \ + libicu-dev \ + libzip-dev \ + libonig-dev \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + git \ + unzip \ + && rm -rf /var/lib/apt/lists/* + +# Instalar extensiones PHP requeridas +RUN docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install -j$(nproc) \ + pdo_pgsql \ + mbstring \ + curl \ + openssl \ + apcu \ + gd \ + intl \ + zip + +# Configurar PHP +RUN echo "max_input_vars = 2000" >> /usr/local/etc/php/conf.d/custom.ini \ + && echo "allow_url_fopen = On" >> /usr/local/etc/php/conf.d/custom.ini \ + && echo "memory_limit = 512M" >> /usr/local/etc/php/conf.d/custom.ini \ + && echo "upload_max_filesize = 50M" >> /usr/local/etc/php/conf.d/custom.ini \ + && echo "post_max_size = 50M" >> /usr/local/etc/php/conf.d/custom.ini + +# Instalar Composer +COPY --from=composer:latest /usr/bin/composer /usr/bin/composer + +# Instalar yui-compressor +RUN curl -L -o yuicompressor-2.4.8.jar https://github.com/yui/yuicompressor/releases/download/v2.4.8/yuicompressor-2.4.8.jar \ + && mv yuicompressor-2.4.8.jar /usr/local/bin/yuicompressor.jar + +# Configurar Apache +RUN a2enmod rewrite \ + && a2enmod headers \ + && a2enmod ssl + +# Crear directorio de trabajo +WORKDIR /var/www/html + +# Copiar archivos del proyecto +COPY . /var/www/html/ + +# Instalar dependencias de Composer +RUN composer install --prefer-dist --no-dev --optimize-autoloader + +# Configurar permisos +RUN chown -R www-data:www-data /var/www/html \ + && chmod -R 755 /var/www/html \ + && mkdir -p /var/www/html/instalacion/temp \ + && mkdir -p /var/www/html/instalacion/log \ + && mkdir -p /var/www/html/instalacion/cache \ + && chown -R www-data:www-data /var/www/html/instalacion/temp \ + && chown -R www-data:www-data /var/www/html/instalacion/log \ + && chown -R www-data:www-data /var/www/html/instalacion/cache \ + && chmod -R 777 /var/www/html/instalacion/temp \ + && chmod -R 777 /var/www/html/instalacion/log \ + && chmod -R 777 /var/www/html/instalacion/cache + +# Configurar Apache para el proyecto +COPY docker/apache-config.conf /etc/apache2/sites-available/000-default.conf + +# Script de inicialización +COPY docker/init.sh /usr/local/bin/init.sh +RUN chmod +x /usr/local/bin/init.sh + +EXPOSE 80 + +CMD ["/usr/local/bin/init.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3a2ef87 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,53 @@ +services: + postgres: + image: bitnami/postgresql:11 + container_name: preinscripcion_postgres + environment: + POSTGRESQL_DATABASE: preinscripcion + POSTGRESQL_USERNAME: postgres + POSTGRESQL_PASSWORD: postgres123 + POSTGRESQL_ENCODING: LATIN1 + POSTGRESQL_LC_COLLATE: C + POSTGRESQL_LC_CTYPE: C + volumes: + - postgres_data:/var/lib/postgresql/data + - ./BD/creacion/creacion_preinscripcion3_postgresql.sql:/docker-entrypoint-initdb.d/01-creacion.sql + - ./docker/init-db.sql:/docker-entrypoint-initdb.d/02-init.sql + ports: + - "5432:5432" + networks: + - preinscripcion_network + restart: unless-stopped + + web: + build: . + container_name: preinscripcion_web + depends_on: + - postgres + ports: + - "8080:80" + volumes: + - .:/var/www/html + - ./instalacion/config.php:/var/www/html/instalacion/config.php + - ./instalacion/alias.conf:/var/www/html/instalacion/alias.conf + - ./instalacion/login.php:/var/www/html/instalacion/login.php + - apache_logs:/var/log/apache2 + environment: + - DB_HOST=postgres + - DB_PORT=5432 + - DB_NAME=preinscripcion + - DB_USER=postgres + - DB_PASSWORD=postgres123 + networks: + - preinscripcion_network + restart: unless-stopped + +volumes: + postgres_data: + driver: local + apache_logs: + driver: local + +networks: + preinscripcion_network: + driver: bridge diff --git a/docker/apache-config.conf b/docker/apache-config.conf new file mode 100644 index 0000000..dbe0837 --- /dev/null +++ b/docker/apache-config.conf @@ -0,0 +1,37 @@ + + ServerAdmin webmaster@localhost + DocumentRoot /var/www/html/src/siu/www + + + Options FollowSymLinks + DirectoryIndex index.php + AllowOverride All + Require all granted + + + # Configuración para Preinscripción + + # Punto de acceso para alumnos + SetEnv ID_PTO_ACCESO default + SetEnv PERFIL alumno + SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion/ + + + + # Punto de acceso para administradores + SetEnv ID_PTO_ACCESO default + SetEnv PERFIL admin + SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion_admin/ + + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + # Configuración de rewrite para Preinscripción + RewriteEngine On + + # Redireccionar a la aplicación principal + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)$ index.php [QSA,L] + diff --git a/docker/init-db.sql b/docker/init-db.sql new file mode 100644 index 0000000..6c7af07 --- /dev/null +++ b/docker/init-db.sql @@ -0,0 +1,24 @@ +-- Script de inicialización adicional para la base de datos +-- Este script se ejecuta después de la creación de la estructura + +-- Crear usuario para la aplicación si no existe +DO $$ +BEGIN + IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'preinscripcion_user') THEN + CREATE ROLE preinscripcion_user WITH LOGIN PASSWORD 'preinscripcion123'; + END IF; +END +$$; + +-- Dar permisos al usuario +GRANT ALL PRIVILEGES ON DATABASE preinscripcion TO preinscripcion_user; +GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO preinscripcion_user; +GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO preinscripcion_user; + +-- Configurar la base de datos para LATIN1 +-- (Ya está configurado en la creación de la base de datos) + +-- Insertar datos básicos si es necesario +-- (Los datos específicos se insertan a través de los scripts en BD/sql/datos/) + +COMMENT ON DATABASE preinscripcion IS 'Base de datos para el sistema de Preinscripción SIU-Guaraní v3.22.0'; diff --git a/docker/init.sh b/docker/init.sh new file mode 100644 index 0000000..02aaa14 --- /dev/null +++ b/docker/init.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -e + +echo "Iniciando Preinscripción..." + +# Esperar a que PostgreSQL esté disponible +echo "Esperando a que PostgreSQL esté disponible..." +while ! nc -z postgres 5432; do + sleep 1 +done +echo "PostgreSQL está disponible" + +# Configurar permisos +chown -R www-data:www-data /var/www/html +chmod -R 755 /var/www/html + +# Asegurar que los directorios de cache, log y temp existan y tengan permisos correctos +mkdir -p /var/www/html/instalacion/temp +mkdir -p /var/www/html/instalacion/log +mkdir -p /var/www/html/instalacion/cache +chown -R www-data:www-data /var/www/html/instalacion/temp +chown -R www-data:www-data /var/www/html/instalacion/log +chown -R www-data:www-data /var/www/html/instalacion/cache +chmod -R 777 /var/www/html/instalacion/temp +chmod -R 777 /var/www/html/instalacion/log +chmod -R 777 /var/www/html/instalacion/cache + +# Compilar recursos si estamos en producción +if [ "$ENVIRONMENT" = "production" ]; then + echo "Compilando recursos para producción..." + cd /var/www/html + if [ -f "bin/preinscripcion" ]; then + ./bin/preinscripcion compilar_recursos + fi +fi + +echo "Iniciando Apache..." +exec apache2-foreground diff --git a/instalacion/alias.conf b/instalacion/alias.conf new file mode 100644 index 0000000..a23c9c6 --- /dev/null +++ b/instalacion/alias.conf @@ -0,0 +1,65 @@ +# Configuración de alias para Docker - SIU-Preinscripción +# Este archivo define los puntos de acceso del sistema + +# Alias del punto de acceso de ALUMNOS +Alias /preinscripcion/ c:\xampp74\htdocs\preinsc_colegio\src\siu\www\ + +# Alias del punto de acceso ADMINISTRADOR +Alias /preinscripcion_admin/ c:\xampp74\htdocs\preinsc_colegio\src\siu\www\ + +# Configuración del directorio navegable + + Options FollowSymLinks + DirectoryIndex index.php + + Order allow,deny + Allow from all + + + Require all granted + + include c:\xampp74\htdocs\preinsc_colegio\instalacion\rewrite.conf + + +#### CONFIGURACION DE ACCESO DEFAULT + + + # -------------------------------------------------------------------------- + # PUNTO DE ACCESO: alumnos de la instalación del punto de acceso default + # -------------------------------------------------------------------------- + + # Nombre o ID del Punto de Acceso. No utilizar espacios. + SetEnv ID_PTO_ACCESO colegio + + # Setea el perfil funcional de quienes acceden por este punto de acceso. + # NO MODIFICAR ESTE VALOR + SetEnv PERFIL alumno + + # se setea de esta manera para que esta variable sea accesible desde mod_rewrite + # ATENCIÓN: el alias debe empezar con '/' + SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion/ + + + + # -------------------------------------------------------------------------- + # PUNTO DE ACCESO: admin del punto de acceso default + # -------------------------------------------------------------------------- + + # Nombre o ID del Punto de Acceso. No utilizar espacios. + SetEnv ID_PTO_ACCESO colegio + + # Setea el perfil funcional de quienes acceden por este punto de acceso. + # NO MODIFICAR ESTE VALOR + SetEnv PERFIL admin + + # se setea de esta manera para que esta variable sea accesible desde mod_rewrite + # ATENCIÓN: el alias debe empezar con '/' + SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion_admin/ + + # Si se desea restringir las IP desde las cuales acceder al panel de + # administración, hacerlo aquí. + # Require ip 192.168.0.0/16 + # Require ip 10.0.0.0/8 + + +#### FIN CONFIGURACION DE ACCESO DEFAULT diff --git a/instalacion/config.php b/instalacion/config.php new file mode 100644 index 0000000..f574d77 --- /dev/null +++ b/instalacion/config.php @@ -0,0 +1,225 @@ + [ + /** + * Indica si el sistema está o no en un entorno de producción + */ + 'produccion' => false, + + /** + * Indica si el sistema utiliza personalizaciones + */ + 'usar_personalizaciones' => false, + + /** + * Path al directorio donde se guardarán los attachments de los mensajes + */ + 'dir_attachment' => '/var/www/html/instalacion/temp', + + /** + * Máximo tiempo de inactividad (en minutos) + */ + 'sesion_timeout' => 30, + + /** + * Máxima duración de la sesión (en minutos) + */ + 'sesion_maxtime' => 120, + + /** + * Sufijo del archivo de idioma + */ + 'locale' => 'es', + + /** + * SALT para encriptación de claves de alumnos + */ + 'salt' => '9bf057558b90263987bd8f99caf2e92f7efc1a13', + + /** + * SALT para cifrar claves de administradores + */ + 'salt_admin' => '9bf057558b90263987bd8f99caf2e92f7efc1a13', + + /** + * Configuración Google Analytics (desactivado por defecto) + */ + 'google_analytics' => [ + 'activo' => false, + 'account' => 'UA-xxx-y' + ], + + /** + * Configuración de logging + */ + 'log' => [ + 'activo' => true, + 'nivel' => log::NIVEL_DEBUG, + 'nivel_consola' => Logger::DEBUG, + 'nivel_web' => Logger::DEBUG, + 'barra_dev' => true, + ], + + /** + * URL de ayuda para identidad de género + */ + 'url_identidad_genero' => 'https://drive.google.com/file/d/1WFW6s9CAZro2mtOs1JIkBX0la6fzJP_o/view', + + /** + * E-mail de ayuda + */ + 'email_ayuda' => 'ayuda@universidad.edu.ar', + + /** + * Configuración de captcha (desactivado por defecto en Docker) + */ + 'captcha' => [ + 'activo' => false, + 'intentos_login' => 2, + 'site_key' => '', + 'secret_key' => '', + 'opciones' => [] + ], + + /** + * Configuración de Proxy (desactivado) + */ + 'proxy' => [ + 'activo' => false, + 'proxy_host' => '', + 'proxy_port' => 8080, + 'proxy_username' => '', + 'proxy_password' => '' + ], + + /** + * Configuración de servidor de correo (configuración básica) + */ + 'smtp' => [ + 'from' => 'noreply@universidad.edu.ar', + 'from_name' => 'SIU-Preinscripción', + 'host' => 'localhost', + 'seguridad' => 'ssl', + 'auth' => false, + 'port' => 25, + 'reply_to' => 'noreply@universidad.edu.ar', + 'smtp_debug' => SMTP::DEBUG_OFF, + ], + + /** + * Configuración de Repositorio Digital Integrado (desactivado) + */ + 'rdi' => [ + 'config' => [ + 'proyecto' => 'preinscripcion', + 'repositorio' => '', + 'usuario' => '', + 'clave' => '', + 'conector' => 'CMIS_ATOM', + ], + ], + + /** + * Logo de página + */ + 'logo_pagina' => 'logo-transparente.png', + + /** + * Configuración SSL + */ + 'ssl' => [ + 'alcance' => 'none', + 'redirigir_ssl' => false, + ], + + /** + * Tiempo para confirmación de alta de preinscripción (en horas) + */ + 'tiempo_confirmacion_alta_preinscripcion' => 24, + + /** + * Tiempo de expiración del código validación para recuperar contraseña + */ + 'ttl_codigo_validacion' => '1 day', + + /** + * Configuración de puntos de acceso + */ + 'accesos' => [ + 'default' => [ + 'personalizacion' => NULL, + + /** + * Información de conexión de la base de datos + */ + 'database' => [ + 'vendor' => 'pgsql', + 'dbname' => 'preinscripcion', + 'host' => 'postgres', + 'port' => '5432', + 'pdo_user' => 'postgres', + 'pdo_passwd' => 'postgres123', + ], + + /** + * Forma de obtener información de Guaraní + */ + 'modo_consultas_g3' => 'consultas_bd', + + /** + * Información de conexión de la base de datos de Guaraní + */ + 'database_guarani' => [ + 'vendor' => 'pgsql', + 'dbname' => 'gestion', + 'schema' => 'public', + 'host' => 'postgres', + 'port' => '5432', + 'pdo_user' => 'postgres', + 'pdo_passwd' => 'postgres123', + ], + + /** + * Parámetros del sistema + */ + 'clave_long_minima' => 6, + 'formateo_campos' => 'libre', + 'carga_turno_presentacion' => false, + 'modo_impresion_comprobante' => 'ra', + + /** + * Parámetros del reporte + */ + 'rep_nombre_institucion' => 'UNIVERSIDAD DE EJEMPLO', + 'rep_imprime_periodo_insc' => '0', + 'rep_imprime_CBC' => '0', + 'rep_imprime_credencial_provisoria' => '0', + 'rep_encabezado_logo' => 'logo2.png', + 'rep_localidad' => 'Buenos Aires', + + /** + * Avisos para el comprobante + */ + 'rep_avisos' => [ + 'La presente tiene carácter de DECLARACIÓN JURADA, la cual deberá ser completada personalmente por el firmante.', + ], + + /** + * Datos de ayuda al alumno + */ + 'datos_ayuda' => [ + 'datos_ayuda_email' => 'ayuda@universidad.edu.ar', + 'datos_ayuda_telefono' => '011-1234-5678', + 'datos_ayuda_url_3w' => 'https://www.universidad.edu.ar', + 'datos_ayuda_url_ayuda' => 'https://ayuda.universidad.edu.ar', + ] + ], + ], + ], +];