#!/bin/bash set -e set -x . /usr/share/debconf/confmodule USER="opengnsys" # Detectar si es una instalación nueva o una actualización if [ "$1" = "configure" ] && [ -z "$2" ]; then echo ">>> Instalación nueva detectada." # Solicitar credenciales solo en instalación nueva db_input high opengnsys/ogcore_adminUser || true db_go db_get opengnsys/ogcore_adminUser ADMIN_USER="$RET" db_input high opengnsys/ogcore_adminPass || true db_go db_get opengnsys/ogcore_adminPass ADMIN_PASS="$RET" cd /opt/opengnsys/ogcore/api # Configuración inicial echo ">>> Configurando base de datos y permisos" mariadb -e "GRANT ALL ON *.* to 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;" echo ">>> Creando par de claves para JWT" php bin/console lexik:jwt:generate-keypair --overwrite echo ">>> Creando base de datos" php bin/console doctrine:database:create --if-not-exists php bin/console doctrine:migrations:migrate --no-interaction echo ">>> Cargando datos iniciales" php bin/console opengnsys:load-default-user php bin/console app:load-default-user-groups php bin/console app:load-default-commands php bin/console opengnsys:load-default-menu echo ">>> Configurando servidor web y servicios" ln -s /opt/opengnsys/ogcore/etc/nginx/sites-available/ogcore.conf /etc/nginx/sites-enabled/ogcore.conf ln -s /opt/opengnsys/ogcore/etc/php/8.3/fpm/pool.d/ogcore-fpm.conf /etc/php/8.3/fpm/pool.d/ogcore-fpm.conf ln -s /opt/opengnsys/ogcore/etc/systemd/system/og-mercure.service /etc/systemd/system/og-mercure.service echo ">>> Configurando permisos de archivos" chown opengnsys:www-data /opt/opengnsys/ chown -R opengnsys:www-data /opt/opengnsys/ogcore systemctl daemon-reload systemctl enable og-mercure systemctl restart og-mercure systemctl restart nginx systemctl restart php8.3-fpm # Solo gestionar credenciales en instalación nueva if [ "$ADMIN_USER" == "ogadmin" ]; then BEARER=$(curl -sk -X 'POST' 'https://localhost:8443/auth/login' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "username": "ogadmin", "password": "12345678" }' | jq -r .token) echo ">>> Cambiando contraseña de ogadmin" OGADMIN_UUID=$(curl -skL "https://localhost:8443/users/?username=ogadmin" \ -H 'accept: application/json' \ -H "Authorization: Bearer $BEARER" | jq -r '.[0].uuid') curl -skL -X PUT "https://localhost:8443/users/$OGADMIN_UUID/reset-password" \ -H 'accept: application/ld+json' \ -H 'Content-Type: application/ld+json' \ -H "Authorization: Bearer $BEARER" \ -d "{ \"currentPassword\": \"12345678\", \"newPassword\": \"$ADMIN_PASS\", \"repeatNewPassword\": \"$ADMIN_PASS\" }" echo ">>> Contraseña de ogadmin cambiada." else echo ">>> Creando nuevo usuario administrador: $ADMIN_USER" curl -skL --location 'https://localhost:8443/users' \ --header 'Content-Type: application/json' \ --header "Authorization: Bearer $BEARER" \ --data "{ \"username\": \"$ADMIN_USER\", \"password\": \"$ADMIN_PASS\", \"roles\": [\"ROLE_SUPER_ADMIN\"] }" echo ">>> Usuario administrador $ADMIN_USER creado." fi elif [ "$1" = "configure" ] && [ -n "$2" ]; then echo ">>> Actualización detectada desde la versión $2" cd /opt/opengnsys/ogcore/api echo ">>> Aplicando migraciones de base de datos" php bin/console doctrine:migrations:migrate --no-interaction echo ">>> Configurando servidor web y servicios" ln -s /opt/opengnsys/ogcore/etc/nginx/sites-available/ogcore.conf /etc/nginx/sites-enabled/ogcore.conf ln -s /opt/opengnsys/ogcore/etc/php/8.3/fpm/pool.d/ogcore-fpm.conf /etc/php/8.3/fpm/pool.d/ogcore-fpm.conf ln -s /opt/opengnsys/ogcore/etc/systemd/system/og-mercure.service /etc/systemd/system/og-mercure.service echo ">>> Configurando permisos de archivos" chown opengnsys:www-data /opt/opengnsys/ chown -R opengnsys:www-data /opt/opengnsys/ogcore systemctl daemon-reload systemctl enable og-mercure systemctl restart og-mercure systemctl restart nginx systemctl restart php8.3-fpm fi # Recargar systemd y reiniciar servicios en ambos casos exit 0