114 lines
4.4 KiB
Bash
114 lines
4.4 KiB
Bash
#!/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/nginx/sites-available/mercure.conf /etc/nginx/sites-enabled/mercure.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
|