Manual Instalacion.md
1 - [[#Introducción|Introducción]] 2 - [[#Requisitos|Requisitos]] 3 - [[#Configuración de la Base de Datos MySQL|Configuración de la Base de Datos MySQL]] 4 - [[#Configuración de la Base de Datos MySQL#Opción 1. Configuración con Docker Compose|Opción 1. Configuración con Docker Compose]] 5 - [[#Configuración de la Base de Datos MySQL#Opción 2. Configuración de MySQL local|Opción 2. Configuración de MySQL local]] 6 - [[#Configuración de SGOC-INBOX|Configuración de SGOC-INBOX]] 7 - [[#Configuración de SGOC-NG|Configuración de SGOC-NG]] 8 - [[#Configuración de SGOC-NG#Creación de un usuario responsable técnico|Creación de un usuario responsable técnico]] 9 - [[#Configuración de SGOC-NG#Generación de claves GPG|Generación de claves GPG]] 10 - [[#Configuración de SGOC-NG#Migración de documentos desde Legacy SGOC a MySQL SGOC-NG|Migración de documentos desde Legacy SGOC a MySQL SGOC-NG]] 11 - [[#Configuración de SGOC-NG#Migración de datos desde ORACLE Legacy SGOC a MySQL SGOC-NG|Migración de datos desde ORACLE Legacy SGOC a MySQL SGOC-NG]] 12 - [[#Procedimientos adicionales|Procedimientos adicionales]] 13 - [[#Procedimientos adicionales#Cambio de IP para máquinas virtuales|Cambio de IP para máquinas virtuales]] 14 - [[#Procedimientos adicionales#Procedimiento para editar el montaje de la carpeta compartida mediante SAMBA para uso en SGOC-NG|Procedimiento para editar el montaje de la carpeta compartida mediante SAMBA para uso en SGOC-NG]] 15 - [[#Procedimientos adicionales#Procedimiento para utilizar una ubicación local para los documentos en lugar del NAS|Procedimiento para utilizar una ubicación local para los documentos en lugar del NAS]] 16 - [[#Procedimientos adicionales#Apagado y encendido seguro de la aplicación usando ESXI|Apagado y encendido seguro de la aplicación usando ESXI]] 17 - [[#Apagado y encendido seguro de la aplicación usando ESXI#Proceso de apagado|Proceso de apagado]] 18 - [[#Apagado y encendido seguro de la aplicación usando ESXI#Proceso de encendido|Proceso de encendido]] 19 - [[#Apagado y encendido seguro de la aplicación usando ESXI#Docker|Docker]] 20 - [[#Procedimientos adicionales#Modificación del texto y traducciones|Modificación del texto y traducciones]] 21 - [[#Procedimientos adicionales#Creación de endpoint para uso interno|Creación de endpoint para uso interno]] 22 - [[#Procedimientos adicionales#Envío de traza de errores|Envío de traza de errores]] 23 - [[#Procedimientos adicionales#Despliegue de parches de código|Despliegue de parches de código]] 24 - [[#Procedimientos adicionales#Despliegue de certificados SSL|Despliegue de certificados SSL]] 25 - [[#Procedimientos adicionales#Recargar configuración|Recargar configuración]] 26 - [[#Nota: Contraseñas configuradas|Nota: Contraseñas configuradas]] 27 28 29 ## Introducción 30 31 En esta guía se explica cómo desplegar una instancia funcional del software **SGOC-NG** desde cero. Además, se cubre la instalación y configuración del servicio **SGOC-INBOX** y de la base de datos **MySQL** necesaria para ambos. Al finalizar, se habrán configurado correctamente todos los componentes para que el sistema funcione sin problemas. 32 33 Se recomienda realizar una lectura completa de la guía antes de comenzar la instalación para entender de manera general los pasos a seguir para configurar y lanzar la aplicación. 34 35 No dude en hacernos saber cualquier duda que pueda tener. 36 37 ## Requisitos 38 39 Una máquina virtual con: 40 - Ubuntu 24:04 41 - Recomendados 40-50 Gigabytes de espacio. 42 - Recomendados al menos 4 GB de RAM. 43 44 Partimos desde una carpeta con todos los ficheros .tar.gz y .image entregados. 45 46 ## Configuración de la Base de Datos MySQL 47 48 Para el posterior funcionamiento de **SGOC-NG** y **SGOC-INBOX**, se necesita una instancia de **MySQL** con acceso a dos bases de datos. Aunque estos nombres son modificables, en esta guía se utilizará el siguiente esquema de referencia: 49 50 - **Usuario:** `sgoc` 51 - **Bases de datos:** `sgoc` e `inbox` 52 53 Estos valores se especificarán posteriormente en los archivos de configuración `.env` de **SGOC** y **SGOC-INBOX**, lo que permitirá el acceso de ambas aplicaciones a la base de datos. 54 55 A continuación mostramos las dos opciones que consideramos para instalar MySQL, directamente sobre el OS, o de manera más sencilla utilizando docker. 56 57 ### Opción 1. Configuración con Docker Compose 58 59 1. Descomprima con `tar xvf mysql.tar.gz` 60 2. Situese sobre el nuevo directorio `cd sgoc_mysql` 61 3. Modifique el fichero .env si fuese necesario, en él se definen las credenciales de acceso que las aplicaciones utilizarán para conectarse a la base de datos **MySQL**. Estos valores deberan ser utilizados durante la configuracion de las aplicaciones. 62 63 ```.env 64 MYSQL_ROOT_PASSWORD=rootpassword 65 MYSQL_USER=sgoc 66 MYSQL_PASSWORD=sgocpassword 67 MYSQL_DATABASE=sgoc # Base de datos que se creará automáticamente 68 ``` 69 70 3. Creamos la red, cargamos la imagen y lanzamos el contenedor con: 71 72 ```bash 73 docker network create sgoc 74 docker load -i mysql.image 75 docker compose up -d 76 ``` 77 78 Podremos volver a la capeta anterior con `cd ..` 79 80 ### Opción 2. Configuración de MySQL local 81 82 1. Prepare una instalación de MySQL 8 en una máquina virtual de Ubuntu 24.04 83 84 ```bash 85 sudo apt update 86 sudo apt install mysql-server -y 87 sudo systemctl enable mysql 88 sudo systemctl start mysql 89 ``` 90 2. Lanzamos el script de configuración. Siga las instrucciones del script para: 91 1. Establecer una contraseña para **root**, 92 2. Deshabilitar el acceso remoto con **root** y 93 3. Borrar las bases de datos de prueba 94 95 ```bash 96 sudo mysql_secure_installation 97 sudo systemctl restart mysql 98 ``` 99 3. Accedemos con `sudo mysql -u root -p` y ejecutamos los siguientes instrucciones para crear las bases de datos **sgoc** e **inbox** y el usuario de aplicación **sgoc** con acceso a ambas. **** 100 101 ```sql 102 mysql> CREATE DATABASE sgoc; 103 mysql> CREATE DATABASE inbox; 104 mysql> CREATE USER 'sgoc'@'%' IDENTIFIED BY 'sgocpassword'; 105 mysql> GRANT ALL PRIVILEGES ON sgoc.* TO 'sgoc'@'%'; 106 mysql> GRANT ALL PRIVILEGES ON inbox.* TO 'sgoc'@'%'; 107 mysql> FLUSH PRIVILEGES; 108 ``` 109 110 4. Hacemos MySQL accesible modificando la configuración. 111 ```txt 112 # /etc/mysql/mysql.conf.d/mysqld.cnf 113 bind-address = 0.0.0.0 114 ``` 115 5. Reiniciamos MySQL para que tenga efecto: 116 ```bash 117 sudo systemctl restart mysql 118 ``` 119 120 ## Configuración de SGOC-INBOX 121 122 Una vez conectada la máquina que contiene la base de datos de **mysql**, pasaremos a preparar el **Inbox**. 123 1. Cargue la imagen de docker correspondiente con `docker load -i sgoc-inbox.image` 124 2. Descomprima con `tar xvf sgoc-inbox.tar.gz` 125 3. Sitúese sobre el nuevo directorio `cd sgoc_inbox` 126 4. Prepare el fichero .env con `cp .env.example .env` 127 5. Modifique el fichero .env según necesite: 128 129 En caso de haber preparado la instalación de MySQL con docker, podremos hacer referencia a ella en el *.env* usando **sgoc_mysql** en DB_HOST, si se instaló de manera local, DB_HOST tendrá que ser asignado con la dirección IP que le permita el acceso. 130 131 ``` env 132 APP_URL=http://localhost 133 134 ... 135 136 DB_HOST=sgoc_mysql 137 DB_PASSWORD=sgocpassword 138 139 ... 140 141 SGOC_API_KEY="ABSCDVTOIUNBYTUN" 142 SGOC_HOST="https://sgoc_app" 143 144 SFTP_HOST="sgoc_sftp" 145 SFTP_USER=foo 146 SFTP_PWD=pass 147 ``` 148 149 5. Arranque la imagen con `docker compose -f docker-compose-prod.yml up` 150 6. Usando `docker ps` para comprobarlo deberíamos algo así 151 ``` bash 152 docker ps 153 CONTAINER ID NAMES IMAGE STATUS 154 52310c333501 sgoc_inbox sail-8.2/app Up 2 hours 155 21d10ae347eb sgoc_mysql mysql:8.0 Up 2 hours 156 ``` 157 158 7. Entramos al contenedor **sgoc_inbox** con `docker exec -it sgoc_inbox bash`y ejecutamos lo siguiente: 159 160 ``` bash 161 php artisan migrate:fresh 162 ``` 163 164 Con esto habríamos terminado de configurar y ejecutar el contenedor de **SGOC-INBOX**. 165 166 ## Configuración de SGOC-NG 167 168 Una vez tenemos sgoc_mysql y sgoc_inbox lanzados podemos continuar con sgoc_app. 169 1. Cargue la imagen de docker correspondiente con `docker load -i sgoc.image` 170 2. Cargue además la imagen para sftp `docker load -i sftp.image` 171 3. Descomprime con `tar xvf sgoc.tar.gz` 172 4. Sitúese sobre la nueva carpeta `cd sgoc` 173 5. Prepare el fichero .env con `cp .env.example .env` 174 6. Modifique el fichero .env según necesite. 175 176 Modifique APP_URL y ASSET_URL para que contengan la IP de la máquina. En caso de haber preparado la instalación de MySQL con docker, podremos hacer referencia a ella en el *.env* usando DB_HOST=sgoc_mysql, si se instaló de manera local, DB_HOST tendrá que ser asignado con la dirección IP que permita el acceso. 177 178 ```env 179 APP_URL=https://localhost 180 ASSET_URL=https://localhost 181 182 ... 183 184 DB_HOST=sgoc_mysql 185 DB_PASSWORD=sgocpassword 186 187 ... 188 189 INBOX_HOST="http://sgoc_inbox" 190 INBOX_API_KEY="ABSCDVTOIUNBYTUN" 191 192 SFTP_HOST=sftp 193 SFTP_USER=foo 194 SFTP_PWD=pass 195 ``` 196 5. Arranque la imagen con `docker compose -f docker-compose-prod.yml up` 197 6. Comprobamos con `docker ps` que tenemos algo así. 198 199 ```bash 200 docker ps 201 CONTAINER ID NAMES IMAGE STATUS 202 52310c333501 sgoc_inbox sail-8.2/app Up 2 hours 203 0f189ca1cc99 sgoc_app sgoc-app Up 2 hours 204 21d10ae347eb sgoc_mysql mysql:8.0 Up 2 hours 205 7d25b7c61c80 sgoc_sftp antrea/sftp Up 2 hours 206 ``` 207 208 7. Entramos al contenedor **sgoc_app** con `docker exec -it sgoc_app bash` y ejecutamos lo siguiente: 209 210 ```bash 211 php artisan migrate:fresh --seed 212 ``` 213 214 Tras este paso tanto SGOC-NG como SGOC-INBOX deberían de estar accesibles en el puerto 443 y en el 8080 respectivamente (Si no han sido modificados en el .env/docker-compose-prod.yml) 215 216 Si tras seguir load pasos obtenemos en *storage/log/laravel.log* un error 500 por falta de permisos en *storage* o en *bootstrap/cache*, reiniciaremos la aplicación con: 217 218 ```bash 219 docker compose -f docker-compose-prod.yml down 220 docker compose -f docker-compose-prod.yml up 221 ``` 222 223 Vea la sección [[#Migración de datos desde ORACLE Legacy SGOC a MySQL SGOC-NG]], si necesita traer datos desde una instalación previa del SGOC original (legacy). 224 225 ### Creación de un usuario responsable técnico 226 227 Para comenzar a cargar ficheros necesitamos un usuario con rol Responsable Técnico. Si no existe tal usuario, se tendrá que asignar el rol a un usuario existente o crear el usuario de forma manual desde la interfaz de **SGOC-NG**. Para crearlo tendremos que hacer login con el usuario **root** *CERT10* y de contraseña *password*. 228 229 Una vez dentro de la aplicación, en el menú de la izquierda pulsaremos en el botón de *Usuarios* y en la cabecera de la sección *Personal* pulsaremos el icono de los tres puntos y posteriormente en el botón de *Crear usuario*. 230 231 ![[Pasted_image_20241111121531.png]] 232 233 Aparecerá desde el margen derecho de la aplicación un formulario donde tendremos que poner los datos del usuario. 234 ![[Pasted_image_20241111120138.png]] 235 236 **Nota**: es importante que el tipo del usuario sea *Interno*, que esté marcado que pueda *acceder a SGOC* y el rol asignado sea *Responsable técnico*. 237 ### Generación de claves GPG 238 Con las mismas credenciales del usuario **root** *CERT10* pulsaremos en la esquina superior derecha, en el icono del usuario, y posteriormente en el botón de ajustes. 239 ![[Pasted_image_20241111134634.png]] 240 241 Esto nos llevará a la pantalla de ajustes de **SGOC-NG** donde, entre otras cosas, podremos generar las claves *GPG* que se usarán para desencriptar todos los documentos que lleguen a **SGOC-NG**. En la sección de *claves GPG* pulsaremos en los 3 puntos que aparecen en el margen superior derecho y luego en el botón que aparece en el desplegable. 242 243 ![[Pasted_image_20241111134326.png]] 244 245 Desde el margen derecho de la aplicación aparecerá un panel donde pegar la clave *GPG* que se quiera importar ó se podrá pulsar en el botón de *Generar* para crear una nueva. 246 247 ![[Pasted_image_20241111134410.png]] 248 249 **Nota**: Las base de datos *GPG* está dentro de la máquina **SGOC-NG** en la ruta `/home/sgoc/sgoc/.gnupg`. Si tuviéramos que mover las *GPG* de sitio, habría que copiar todo el contenido de esta carpeta y establecer la ruta de la nueva carpeta en el archivo de parámetros de configuración de la aplicación (`.env`). Abriremos el directorio donde se encuentra **SGOC-NG** y con el editor que queramos, cambiaremos la siguiente línea con la nueva ruta donde estarán las *GPGs* 250 251 ```env 252 GPG_HOMEDIR='/home/sgoc/sgoc/.gnupg' 253 ``` 254 255 Una vez establecido deberemos limpiar la caché de la configuración con el siguiente comando: 256 257 ```bash 258 php artisan o:c 259 ``` 260 261 Para que la nueva ruta surta efecto también deberemos reiniciar la instancia de docker que se está ejecutando como hemos explicado anteriormente. Desde el directorio de **SGOC-NG** ejecutamos los comandos 262 ```bash 263 docker compose down 264 docker compose -f docker-compose-prod-yml up -d 265 ``` 266 267 Una vez lanzado, ya estaría operativa la nueva ruta de las *GPG*. 268 269 270 ### Migración de documentos desde Legacy SGOC a MySQL SGOC-NG 271 272 ^7dfe8f 273 274 En esta sección se explica como migrar los documentos y los datos de la base de datos Oracle al nuevo sistema. Para ello se tomará en cuenta la distribución actual en el que SGOC Legacy está instalado y los servicios disponibles del la oficina del OC. ^8dc0e4 275 276 **Nota**: las siguientes anotaciones fueron tomadas desde el entorno de producción en la red interna durante la segunda visita a las oficinas donde se desplegaría SGOC. 277 278 Para copiar los archivos del servidor antiguo al nuevo, se utilizará un directorio temporal en el NAS. Mediante **rsync**, se sincronizarán todos los archivos desde el servidor antiguo. Este proceso consta de dos pasos: 279 280 1. **Sincronización inicial con rsync** 281 282 Primero, se ejecutará un comando `rsync` desde el servidor antiguo **SGOC** (dirección IP `192.168.3.80`) que copiará únicamente los archivos que no existan en el destino o que hayan sido modificados desde la última sincronización. Esto se realizará desde la máquina **SGOC** antigua ejecutando el siguiente comando: 283 284 ```bash 285 rsync -azP --delete --perms --chmod=ugo=rwx /var/www/docs/ admin@192.168.3.50:/volume1/oc/docs-sgoc-rsync/ 286 ``` 287 288 Este comando sincronizará los archivos en la carpeta temporal del NAS (`/volume1/oc/docs-sgoc-rsync/`), manteniendo los permisos de los archivos y asignando permisos completos de lectura, escritura y ejecución para todos los usuarios. 289 290 2. **Organización de los documentos con un script de Python** 291 292 Una vez sincronizados los documentos, se utilizará un script de Python (`ejecutaCopy.py`) para organizar y copiar los documentos de forma ordenada (por expediente, año, etc.) en el NAS. Los documentos quedarán organizados de manera que SGOC-NG pueda hacer uso de ellos y asignarlos a su expediente correspondiente. Para ejecutar este script, será necesario ubicarse en el directorio donde se encuentra (`C:` en este caso) y ejecutarlo con **Python 2.7** especificando los parámetros deseados. Algunos ejemplos de uso del script son los siguientes: 293 294 ```bash 295 python .\ejecutaCopy.py ">2018" # copiar documentos desde el año 2018 en adelante (incluido) 296 python .\ejecutaCopy.py 2018 # copier unicamente los documentos del año 2018 297 python .\ejecutaCopy.py 2018-1 # copiar únicamente los documentos del expediente 2018-01 298 ``` 299 300 Este script se encargará de copiar los archivos antiguos del servidor **SGOC Legacy** al NAS de manera ordenada, facilitando la organización y posterior consulta de los documentos en función de los criterios indicados. 301 302 Dentro del script `ejecutaCopy.py` se pueden configurar los parámetros de origen y destino de los datos mediante las variables `original` y `destination`. Es importante recordar que tanto `original` como `destination` deben ser rutas **locales** en el equipo donde se ejecuta el script. Para ello, se montarán como unidades locales las rutas de los servidores remotos. 303 304 - La ruta de **origen** ya se encuentra montada en `S:\sgoc-rsync`. 305 - Para la ruta de **destino**, será necesario montarla como una unidad local de Windows con el usuario `SGOC-NG-2\sgoc`, especificando como host remoto `192.168.3.50` y utilizando la contraseña `Abcdef12345!`. 306 307 Para montar una ruta remota de Linux en un equipo con Windows, se requiere instalar **WinFSP** y **SSHFS-Win**. Estos componentes se pueden descargar desde [https://winfsp.dev](https://winfsp.dev). 308 309 Una vez copiados los archivos, se debe ejecutar otro script para procesar los documentos que no sean del tipo `EXT` y cuya extensión sea `DOC`, `doc`, `DOCX`, o `docx`. Este proceso evitará el parseo de otros formatos y se centrará en actualizar los campos automáticos de estos documentos específicos desde SGOC Legacy. 310 311 3. **Ejecutar el script de parseo de documentos** 312 313 Al igual que el script anterior, `ejecutaParser.py` permite procesar todos los expedientes de un año en adelante (incluido), los documentos de un año específico, o bien, los de un expediente en particular. A continuación se muestran algunos ejemplos de ejecución del script: 314 ```bash 315 python .\ejecutaParser.py ">2018" 316 python .\ejecutaParser.py 2018 317 python .\ejecutaParser.py 2018-01 318 ``` 319 --- 320 321 Finalmente, recuerde leer la sección de [[#Inicialización de la base de datos de SGOC-NG]] para continuar con los pasos de migración de la base de datos y asegurar que todos los datos se encuentren correctamente transferidos. 322 323 ### Migración de datos desde ORACLE Legacy SGOC a MySQL SGOC-NG 324 325 Para realizar la migración de datos desde la base de datos ORACLE Legacy de **SGOC** a la nueva base de datos **MySQL** en **SGOC-NG**, se seguirán los siguientes pasos: 326 327 1. Preparación de la base de datos de SGOC-NG, se habrán seguido los pasos definidos en [[#Configuración de la Base de Datos]] 328 2. **Exportación de la variable de entorno de ORACLE** 329 330 A continuación, se debe exportar la variable de entorno necesaria para **ORACLE** con el siguiente comando: 331 ```bash 332 export TNS_ADMIN=/home/sgoc/sgoc/oracle/tnsnames 333 ``` 334 335 5. **Ejecución del comando de migración de datos** 336 337 Para iniciar la migración de datos, asegúrese de estar en el directorio `/home/sgoc/sgoc` dentro del contenedor de Docker y ejecute el siguiente comando. Este proceso puede tardar entre 15 y 20 minutos en completarse: 338 339 ``` 340 php artisan oracle:migrate 341 ``` 342 343 6. **Migración de documentos desde el servidor antiguo** 344 345 Antes de continuar con los pasos siguientes, es necesario copiar los archivos (evidencias de expedientes, ETR, etc.) desde el servidor antiguo al nuevo. Consulte el apartado [[#Migración de documentos desde Legacy SGOC a MySQL SGOC-NG]] para seguir las instrucciones correspondientes. 346 347 7. **Enlace de documentos Legacy con la nueva aplicación** 348 349 Una vez finalizada la migración de la base de datos y la copia de archivos, se procederá a enlazar los documentos legacy con la nueva aplicación ejecutando el siguiente comando: 350 ```bash 351 php artisan documents:dossier [AÑO] [NUMERO EXPEDIENTE] 352 php artisan documents:dossier [AÑO] # enlaza todos los componentes de ese año 353 ``` 354 355 8. **Limpieza de la caché** con `php artisan o:c` 356 357 Con estos pasos, se completará la migración de datos y documentos desde ORACLE Legacy a MySQL SGOC-NG, enlazando correctamente la información y asegurando su integración con la nueva aplicación. 358 359 360 361 362 ## Procedimientos adicionales 363 364 ### Cambio de IP para máquinas virtuales 365 366 En caso de instalar directamente sobre máquinas virtuales en lugar de utilizar un unico sistema para todo el despliegue, es posible que sea necesario modificar las IP a las que haremos referencia a SGOC, INBOX o MySQL. 367 368 Para una máquina con Ubuntu 24.04 LTS: 369 370 1. Accede con a la máquina objetivo con SSH. 371 2. Edita el fichero /etc/netplan/01-netcfg.yaml 372 373 Este archivo está en formato **YAML**, por lo que es necesario ser cuidadoso con la indentación. 374 375 - Cambie la IP bajo la clave `addresses`, ubicada después del identificador del adaptador de red. 376 - Si cambia la puerta de enlace, también debe modificar la clave `via` bajo `routes`, especificando la nueva dirección de la puerta de enlace. 377 378 Para aplicar los cambios de red, ejecute el siguiente comando: 379 380 ```bash 381 netplan apply 382 ``` 383 384 3. A continuación será necesario visitar los ficheros `.env` que hagan referencia a la máquina cuya IP fue modificada con el objetivo de editar las entradas de `SGOC_HOST`, `INBOX_HOST`, `DB_HOST`, `SFTP_HOST`. De manera que las aplicaciones puedan seguir comunicándose con la máquina actualizada. 385 4. Recuerda recargar el `.env`en el software utilizando `php artisan o:c` 386 387 Con estos pasos, la nueva IP quedará configurada tanto en las máquinas como en los parámetros de la aplicación, asegurando que **SGOC-NG** y **SGOC-INBOX** se comuniquen correctamente en la red actualizada. 388 389 ### Procedimiento para editar el montaje de la carpeta compartida mediante SAMBA para uso en SGOC-NG 390 391 Para habilitar el montaje de la carpeta compartida mediante **SAMBA** en la aplicación **SGOC**, es necesario realizar modificaciones en dos archivos: `fstab` y `docker-compose-prod.yml` desde la máquina que ejecuta SGOC-NG. 392 393 1. Modificación del archivo `fstab` 394 ```txt 395 //192.168.3.50/sgoc-docs /mnt/samba cifs username=sgoc,password=Abcdef12345!,uid=1001,gid=1001 0 0` 396 ``` 397 398 Este cambio hace que se monte automáticamente el directorio `/mnt/samba` cada vez que se reinicie el sistema. Configurar según su IP, usuario y contraseña del NAS. 399 400 2. Para aplicar los cambios, es posible que necesite ejecutar el siguiente comando: 401 ```bash 402 sudo umount -a && sudo mount -a 403 ``` 404 405 **Nota:** La aplicación **SGOC** usa `/mnt/samba` como punto de montaje. Si se cambia este punto de montaje, también debe modificarse en el archivo `docker-compose-prod.yml` ubicado en la máquina **SGOC** (fuera del contenedor Docker), en la línea 9. 406 407 3. Actualizar el `docker-compose-prod.yml` de SGOC-NG. En él sera necesario modificar o añadir la linea que monte el volumen sobre `/home/sgoc/sgoc-docs` 408 409 ``` 410 volumes: 411 - "./:/home/sgoc/sgoc" 412 - "gpg:${GPG_HOMEDIR}" 413 - "/mnt/samba/:/home/sgoc/sgoc-docs" 414 ``` 415 416 417 4. Para que el nuevo punto de montaje surta efecto, es necesario reiniciar el contenedor. 418 419 ```bash 420 cd /home/sgoc/sgoc/ && docker compose down && docker compose up -d 421 ``` 422 423 424 ### Procedimiento para utilizar una ubicación local para los documentos en lugar del NAS 425 426 Para usar una ubicación local para almacenar los documentos en lugar del NAS, siga estos pasos: 427 428 1. Copie el contenido de la carpeta montada en `/mnt/samba`. 429 2. Pegue el contenido en una carpeta local de la nueva máquina. 430 3. Modifique la configuración de **Laravel** en `config/filesystems.php`, cambiando el valor de la clave `disks.local.root` (línea 35) para especificar la ruta completa donde se encuentran los documentos. Se recomienda hacer copia de seguridad del fichero o de la linea modificada. 431 4. Finalmente, recargue la configuración para aplicar los cambios con `php artisan o:c` desde dentro del contenedor. 432 433 ### Apagado y encendido seguro de la aplicación usando ESXI 434 435 #### Proceso de apagado 436 437 1. Pausaremos las maquinas desde el ESXi y procederemos al apagador de éstas. 438 2. Apagaremos el NAS de forma segura. 439 440 441 #### Proceso de encendido 442 443 1. Encenderemos primero el NAS y esperaremos a que esté totalmente operativo 444 2. Volvemos a encender las maquinas desde el ESXi quitando el estado de PAUSA. 445 #### Docker 446 447 En caso de querer pausar las máquinas desde docker directamente podremos hacer uso de los siguientes comandos para SGOC-NG, INBOX y MySQL : 448 449 ```bash 450 docker compose stop 451 docker compose start 452 ``` 453 454 **Nota**: es posible configurar docker para que lance **ciertos** contenedores tras reiniciar la máquina de manera completa (En tal caso tener cuidado con el orden de reinicio, puede ser necesario comprobar si se inicia antes o después del mount de fstab) 455 456 457 ### Modificación del texto y traducciones 458 459 Es posible editar el texto que se muestra en la interfaz de la aplicación accediendo a los ficheros de traducción situados en el directorio `lang` de SGOC-NG o INBOX. 460 461 Todos los ficheros siguen el siguiente formato: 462 463 ```php 464 <?php 465 return [ 466 'referencia1' => [ 467 'referencia2' => 'texto modificable' 468 ] 469 ]; 470 ``` 471 472 ### Creación de endpoint para uso interno 473 474 Véase https://laravel.com/docs/9.x/routing para entender como funciona Laravel y la creación de Controladores y Endpoints. 475 476 **Importante.** Se recomienda que cualquier modificación al código se realice en un entorno de pruebas apartado del entorno de producción. 477 478 ### Envío de traza de errores 479 480 Tanto SGOC-NG como SGOC-INBOX mantienen un fichero de log para errores en `storage/logs/laravel.log`, dentro de sus respectivos directorios de aplicación. 481 482 Adjunte un fragmento de la traza, reduciendo por hora, o adjunte el fichero completo en un correo o bajo un nuevo Issue en [Linear](https://linear.app/jtsec/team/CAB/active). Es importante que junto a la traza se describa los pasos realizados para que el equipo de desarrollo trate de producir el problema. 483 484 ### Despliegue de parches de código 485 486 En ocasiones para evitar re-desplegar todo el sistema, el equipo de desarrollo enviará solo el código actualizado. 487 488 Utilizando WinSCP en la carpeta destino, podremos copiar solo los ficheros modificados. 489 490 Es importante al hacerlo evitar modificar o borrar los siguientes ficheros, a menos que sea de manera consciente e intencionada: 491 - El certificado de firma del OC (.p12) 492 - .env 493 - deploy/certs/ 494 - node_modules/ 495 496 ### Despliegue de certificados SSL 497 498 Sustituir los 2 archivos en la ruta `deploy/certs/` en la máquina de SGOC-NG. 499 500 - fullchain.pem 501 - privkey.pem 502 503 Una vez copiados, hay que reiniciar docker para que se copien los nuevos certificados y se apliquen. Reinicie desde la carpeta con el código de SGOC. 504 505 ```bash 506 docker compose down && docker compose up -d 507 ``` 508 509 Una vez hecho esto se podrá acceder a SGOC-NG utilizando HTTPS con los nuevos SSL. 510 511 ### Recargar configuración 512 513 ```bash 514 php artisan o:c 515 ``` 516 517 ## Nota: Contraseñas configuradas 518 519 - /etc/fstab, En este fichero se encuentra el usuario y la clave del NAS o del dispositivo montado 520 521 - En el .env de las aplicaciones (SGOC y SGOC-INBOX) están parametrizados todas las claves tales como: MySQL, SFTP, P12, INBOX API KEY, SGOC API KEY 522 523 - MYSQL: Se debe cambiar la contraseña del usuario en instancia donde se esté ejecutando la base de datos. Una vez cambiada la clave, ésta deberá ser actualizada en el .env bajo la key DB_PASSWORD 524 525 - SFTP: Esta clave debe cambiarse dentro del .env bajo la key SFTP_PASS. Una vez modificada la clave hay que reiniciar la instancia de docker para que surta efecto. 526 527 - P12: Aqui solo hay que modificar la clave en el .env bajo la key P12_PASSWORD, si se modifica el fichero .p12 será necesario actualizar la configuración, su ruta y su contraseña. 528 529 - INBOX & SGOC API KEY: Estas claves son las que usamos en la aplicación para el intercambio de datos mediante API (ojo, no confundir con documentos, esto es mediante SFTP). Para cambiar estas claves se realizará directamente en el .env y luego se lanzará el comando `php artisan o:c`