Skip to content

Commit

Permalink
doc
Browse files Browse the repository at this point in the history
  • Loading branch information
vtamara committed Mar 20, 2024
1 parent 03e86d9 commit 4e3059b
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 88 deletions.
108 changes: 51 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,21 @@ o necesitas un sistema de información o incluir y adaptar SIVeL 2.1 en el
sistema de información de tu organización por favor revisa
<https://defensor.info>.

Si tienes una idea de como mejorar SIVeL 2.1 te invitamos a proponerla con la
categoría Idea en <https://github.com/pasosdeJesus/sivel2/discussions>

Si quieres votar para que se implemente el requerimiento que necesitas más
rápido te invitamos a suscribirte y votar en <https://cifrasdelconflicto.org>

Si quieres desplegar tu propia instalación de SIVeL 2.1 mira más adelante este
documento.

Si desea reportar un problema con sivel 2.1 o conocer del desarrollo de esta
aplicación por favor revisa:
* Reportar problemas: <https://github.com/pasosdeJesus/sivel2_gen/issues>
* Reportar problemas: <https://gitlab.com/pasosdeJesus/sivel2_gen/-/issues>
* Reportar una falla de seguridad:
<https://github.com/pasosdeJesus/sivel2/blob/main/SECURITY.md>
<https://gitlab.com/pasosdeJesus/sivel2/-/blob/main/SECURITY.md>
* Tableros de seguimiento al desarrollo:
<https://github.com/pasosdeJesus/sivel2_gen/projects>
<https://gitlab.com/pasosdeJesus/sivel2_gen/-/milestones>

Si quieres ayudar a mejorar esta aplicación de fuentes abiertas te
recomendamos el repositorio del motor
[sivel2_gen](https://github.com/pasosdeJesus/sivel2_gen).

Desde Pasos de Jesús estaremos atentos a quienes hagan aportes para
proponerles oportunidades labores cuando las haya.

Expand All @@ -55,19 +50,19 @@ proponerles oportunidades labores cuando las haya.

### Requisitos 📋

Ver <https://github.com/pasosdeJesus/msip/blob/main/doc/requisitos.md>
Ver <https://gitlab.com/pasosdeJesus/msip/-/blob/main/doc/requisitos.md>
Además si vas a desplegar en producción:
* nginx (>=1.18)

### Probar operación en modo de desarrollo 🔧

* Crea un usuario para PostgreSQL como se explica en
<https://github.com/pasosdeJesus/msip/blob/main/doc/aplicacion-de-prueba.md>
(si dejas el nombre `sipdes` se te facilitarán los siguientes pasos)
<https://gitlab.com/pasosdeJesus/msip/-/blob/main/doc/aplicacion-de-prueba.md>
(si dejas el nombre `sipdes` se te facilitarán los siguientes pasos
* Ubica las fuentes en un directorio, por ejemplo en `/var/www/htdocs/sivel2/`
* Asegura que las gemas estén instaladas. En el caso de adJ en
`/var/www/bundler/ruby/3.1/` siguiendo las instrucciones de
<http://pasosdejesus.github.io/usuario_adJ/conf-programas.html#ruby>
`/var/www/bundler/ruby/3.3/` siguiendo las instrucciones de
<https://pasosdejesus.org/doc/usuario_adJ/conf-programas.html#ruby>
y en el directorio con fuentes asegúrate de tener el archivo `.bundle/config`
con contenido:
```
Expand All @@ -87,14 +82,14 @@ Además si vas a desplegar en producción:
Si se interrumpe el proceso por problemas de permisos en instalación de una
gema, instálala como en el siguiente ejemplo (cambiando la gema y la versión):
```sh
doas gem install --install-dir /var/www/bundler/ruby/3.1/ bindex -v 0.7.0
doas gem install --install-dir /var/www/bundler/ruby/3.3/ bindex -v 0.7.0
```
* Copia la plantilla del archivo `.env` y editalo:
```sh
cp .env.plantilla .env
$EDITOR .env
```
Las variables definidas dejan la aplicación en el URL `/sivel2/` (tendrías
Las variables definidas dejan la aplicación en el URL `/sivel2_1/` (tendrías
que modificar `RUTA_RELATIVA` si prefieres una raíz de URL diferente).

Lo mínimo que debes establecer es el usuario PostgreSQL, su clave y
Expand All @@ -111,46 +106,35 @@ Además si vas a desplegar en producción:
copia en `config/database.yml` y ejecuta:
```sh
bin/rails db:migrate
bin/rails msip:indices
bin/rails sip:indices
```
Si vas a empezar con una base nueva `sivel2gen_des` con el usuario de
Si vas a empezar con una base nueva `sivel21gen_des` con el usuario de
PostgreSQL `sipdes`:
```sh
createdb -U sipdes -h /var/www/var/run/postgresql/ sivel2gen_des
createdb -U sipdes -h /var/www/var/run/postgresql/ sivel21gen_des
```
y desde el directorio de la aplicación:
```sh
bin/rails db:setup
bin/rails db:migrate
bin/rails msip:indices
bin/rails sip:indices
```
* Si no lo has hecho instala `yarn` para manejar paquetes javascript:
```sh
doas pkg_add bash
ftp -o- https://yarnpkg.com/install.sh | bash
. ~/.profile
doas npm install -g yarn
```
* Instala las librerías Javascript requeridas al lado del cliente con:
```sh
CXX=c++ yarn install
```
* Crea un enlace a `public/packs` desde la carpeta `public` apropiada para el
punto de montaje.
Por ejemplo si está empleando el punto de montaje por omisión `/sivel2/`
sería:
```sh
mkdir -p public/sivel2
cd public/sivel2
ln -s ../packs .
cd ../..
yarn install
```
* Para verificar que se están generando bien los recursos ejecuta:
```sh
rm -rf public/sivel2/assets/* public/sivel2/packs/*
rm -rf public/sivel2_1/assets/*
bin/rails sip:stimulus_motores
bin/rails assets:precompile --trace
```
y después verifica que se están poblando bien los directorios
`public/sivel2/assets` y `public/sivel2/packs`
y después verifica que se está poblando el directorio
`public/sivel2_1/assets`
* Lanza la aplicación en modo de desarrollo. En el siguiente ejemplo el
parámetro `-p` indica el puerto por el cual escuchará la aplicación
y el parámetro `-b` indica la dirección IP como **0.0.0.0**
Expand All @@ -165,20 +149,16 @@ Además si vas a desplegar en producción:
```
que eliminará y recreará recursos y lanzará la aplicación.
* Examina con un navegador que tenga habilitadas las galletas (cookies) en el
puerto 2300: `http://127.0.0.1:2300/sivel2`. (Por eso si usas el
puerto 2300: `http://127.0.0.1:2300/sivel2_1`. (Por eso si usas el
navegador `w3m` añade la opción `-cookie`)
* Si al ejecutarse te aprece un mensaje indicando que pongas el dominio
que usaste en config.hosts edita el archivo .env y pon el dominio en la
variable `CONFIG_HOSTS`
* Cuando quieras detener basta que presiones Control-C o que busques el
proceso con ruby que corre en el puerto 3000 y lo elimines con `kill`:
proceso con ruby que corre en el puerto 2300 y lo elimines con `kill`:
```sh
ps ax | grep "ruby.*2300"
kill 323122
```
* En este modo es recomendable que borres recursos pre-compilados
```sh
rm -rf public/assets/*
kill 323122 # Cambia por el número de proceso
```

### Pruebas ⚙️
Expand All @@ -189,11 +169,12 @@ minitest y pruebas al sistema con sideex.

Puede ejecutar las pruebas de control de acceso con:
```sh
RAILS_ENV=test bin/rails db:drop db:create db:setup db:seed sip:indices
CONFIG_HOSTS=www.example.com bin/rails test
```
Al respecto de modificar o crear pruebas con mini-test
recomendamos
<https://github.com/pasosdeJesus/msip/blob/main/doc/pruebas-con-minitest.md>.
<https://gitlab.com/pasosdeJesus/msip/-/blob/main/doc/pruebas-con-minitest.md>.

Para ejecutar las pruebas del sistema con Sideex, ejecuta la aplicación en
modo de desarrollo y desde el navegador compatible con Chrome en el que la
Expand All @@ -209,10 +190,10 @@ entre ambos, deberían pasar).
* Se recomienda que dejes fuentes en `/var/www/htdocs/sivel2`
* Sigue los mismos pasos para configurar un servidor de desarrollo --excepto
lanzar
* Crea la base de datos `sivel2gen_pro` con dueño `sipdes`. Por ejemplo en adJ
desde el usuario `_postgresql`:
* Crea la base de datos `sivel21gen_pro` con dueño `sipdes`.
Por ejemplo en adJ desde el usuario `_postgresql`:
```sh
createdb -Upostgres -h/var/www/var/run/postgresql -Osipdes sivel2gen_pro
createdb -Upostgres -h/var/www/var/run/postgresql -Osipdes sivel21gen_pro
```
* Edita credenciales cifradas con:
```sh
Expand All @@ -227,7 +208,7 @@ entre ambos, deberían pasar).
```sh
RAILS_ENV=production bin/rails db:setup
RAILS_ENV=production bin/rails db:migrate
RAILS_ENV=production bin/rails msip:indices
RAILS_ENV=production bin/rails sip:indices
```
* El punto de montaje configúralo en la variable `RUTA_RELATIVA` del archivo
`.env`
Expand All @@ -236,7 +217,7 @@ entre ambos, deberían pasar).
respaldes con periodicidad.
* Configura la ruta para la nube (preferible donde quede también respaldada
con periodicidad) en la variable `HEB412_RUTA` del archivo `.env`
* Elige un puerto local no usado (digamos `2009`) y configuralo en la
* Elige un puerto local no usado (digamos `2009`) y configúralo en la
variable `PUERTOUNICORN` del archivo `.env`
* Como servidor web recomendamos nginx, suponiendo que el puerto elegido es
2009, en la sección http agrega:
Expand Down Expand Up @@ -269,13 +250,26 @@ entre ambos, deberían pasar).
keepalive_timeout 10;
}
location ~ ^/sivel2/(assets|csv|images)/ {
location ^~ /sivel2/assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /var/www/htdocs/sivel2/public/;
}
location ^~ /sivel2/images/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /var/www/htdocs/sivel2/public/;
}
location ^~ /sivel2/packs/ {
gzip_static on;
add_header Cache-Control public;
root /var/www/htdocs/sivel2/public/;
}
}
```
* Precompila los recursos
Expand All @@ -285,15 +279,15 @@ entre ambos, deberían pasar).
* Instala de manera global `unicorn` y el enlace `/usr/local/bin/rails_unicorn`:
```sh
doas gem install unicorn
doas ln -sf /usr/local/bin/unicorn_rails31 /usr/local/bin/unicorn_rails
doas ln -sf /usr/local/bin/unicorn_rails33 /usr/local/bin/unicorn_rails
```

* Tras reiniciar nginx, inicia unicorn desde el directorio con fuentes con
algo como (cambiando la llave, el servidor y el puerto):
```sh
DIRAP=/var/www/htdocs/sivel2 SECRET_KEY_BASE=9ff0ee3b245d827293e0ae9f46e684a5232347fecf772e650cc59bb9c7b0d199070c89165f52179a531c5c28f0d3ec1652a16f88a47c28a03600e7db2aab2745 ./bin/u.sh
```
* Para iniciar en cada arranque, por ejemplo en adJ crea /etc/rc.d/sivel2
* Para iniciar en cada arranque, por ejemplo en adJ crea /etc/rc.d/sivel21
```sh

servicio="DIRAP=/var/www/htdocs/sivel2 SECRET_KEY_BASE=9ff0ee3b245d827293e0ae9f46e684a5232347fecf772e650cc59bb9c7b0d199070c89165f52179a531c5c28f0d3ec1652a16f88a47c28a03600e7db2aab2745 /var/www/htdocs/sivel2/bin/u.sh"
Expand All @@ -314,7 +308,7 @@ entre ambos, deberían pasar).
```
Inicialo con:
```
doas sh /etc/rc.d/sivel2 -d start
doas sh /etc/rc.d/sivel21 -d start
```
Y una vez opere bien, incluye `sivel2` en la variable `pkg_scripts`
de `/etc/rc.conf.local`
Expand All @@ -329,7 +323,7 @@ entre ambos, deberían pasar).
```
* Aplica cambios a base de datos: `bin/rails db:migrate`
* Actualiza tablas básicas: `bin/rails sivel:actbasicas`
* Actualiza índices: `bin/rails msip:indices`
* Actualiza índices: `bin/rails sip:indices`
* Lanza nuevamente el servidor de desarrollo: `bin/rails s -p 2300 -b 0.0.0.0`

### Actualización de servidor de producción :arrows_clockwise:
Expand All @@ -344,7 +338,7 @@ debe usar `bin/railsp`
En el sitio de producción se recomienda agregar una tarea `cron` con:

``` sh
cd /var/www/htdocs/sivel2/; bin/railsp msip:vuelca
cd /var/www/htdocs/sivel2/; bin/railsp sip:vuelca
```

## Desarrollo y documentación para desarrolladores :abc:
Expand All @@ -353,7 +347,7 @@ El desarrollo debe centrarse en los motores que constituyen esta aplicación,
particularmente `sivel2_gen`.

La documentación general para desarrolladores que mantenemos está en:
<https://github.com/pasosdeJesus/msip/blob/main/doc/README.md>
<https://github.com/pasosdeJesus/sip/blob/main/doc/README.md>


## Autores ✒️
Expand Down
48 changes: 41 additions & 7 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
# Política de seguridad
(English version below)

## Versiones soportadas

| Version | Soportada |
| Versión | Soportada |
| ------- | ------------------ |
| 1.x | :x: |
| 2.0.x | :heavy_check_mark: |
| 2.1.x | :x: (en desarrollo)|
| 2.0.x y anteriores | :x: |
| 2.1.x | :heavy_check_mark: |
| 2.2.x | :x: (en desarrollo)|


## Reportar vulnerabilidades

Por favor sigue estos 3 pasos en orden:
Por favor sigue estos 3 pasos en ese orden:

1. Envía por correo un reporte describiendo la falla y como explotarla
a <[email protected]>.
Expand All @@ -25,5 +26,38 @@ Por favor sigue estos 3 pasos en orden:
el reporte detallado y referenciando la solicitud de cambio.

Hay una retribución monetaria para la primera falla que se reporte a la rama
sivel2.0, ver detalles en
<https://github.com/pasosdeJesus/sivel2/blob/sivel2.0/doc/Llamado.md>
sivel2.1, ver detalles en
<https://github.com/pasosdeJesus/sivel2/blob/v2.1/doc/Llamado.md>

----

# Security policy

## Supported versions

| Version | Supported |
| ------- | ------------------ |
| 2.0.x and previous | :x: |
| 2.1.x | :heavy_check_mark: |
| 2.2.x | :x: (en desarrollo)|


## Report vulnerabilites

Please follow the next 3 steps in that order:

1. Send an email to <[email protected]> with the report describing
the vulnerability and how to exploit it.
2. The same day that you send your report, if it is possible,
open a Pull Request, releasing it to the public domain and solving
the security bug but withouth giving hints that it is a vulnerability
neither how to exploit it.
3. Ten days after, please, open an issue in the
[Public Tracking System](https://github.com/pasosdeJesus/sivel2_gen/issues)
with a title starting with "Vulnerability" including
the detailed report and referring the Pull Request you created.

There is an economical reward for the first person who reports a
vulnerability in the branch `sivel2.1`, see details at
<https://github.com/pasosdeJesus/sivel2/blob/sivel2.1/doc/Calling.md>

Loading

0 comments on commit 4e3059b

Please sign in to comment.