La forma más fácil de correr Consultas Digitales es con Docker y Docker compose. Se probó exitósamente con las versiones 19.03.5 y 1.24.0 de las mismas, sobre un Ubuntu 18.04. Si quiere instalar localmente, sin Docker, puede ver el apartado Instalación directa.
En primer lugar debemos adecuar el docker-compose.yml
La aplicación utiliza las imagenes de Node 6 y Mongo 3.2
En el repositorio encontrará la plantilla docker-compose.example.yml
. Copie la plantilla a un nuevo archivo con el nombre docker-compose.override.yml
en su copia local del proyecto; este archivo será tomado automáticamente por el comando docker-compose
(pisará lo ya definido en docker-compose.yml
), y no molestará en git ya que se encuentra ignorado (en .gitignore
).
- Es muy importante que en
STAFF
agregues el email del admin o el de los administradores. Puede hacerlo incluso antes de haber creado las respectivas cuentas en la plataforma. - Podés comentar las variables
NOTIFICATION_*
si todavía no tenés un servidor de correo definido. - Podés configurar DemocraciaOS con cualquiera de las variables de entorno listadas acá: http://docs.democracyos.org/configuration.html
- Por defecto la aplicación se monta en el puerto 3000. Puede cambiar este puerto editando el número de la derecha bajo la llave
ports
(p. ej.:3000:9999
) - Si se prefiere conectar a una base de datos local, fuera del entorno, vea el apartado Conectar a una base de datos mongo local
- El puerto
27017
está expuesto para que puedas administrar la base de datos con algún cliente de MongoDB, por ejemplo con Robomongo. - Hay muchas vistas personalizadas de Consultas Digitales que se encuentran en
/ext
. Siguiendo el mismo patrón de carpetas que DemocraciaOS/democracyos. - Las variables de entorno se traducen a variables en código siguiendo la serialización descripta en DemocraciaOS/config.
Luego de que todo este definido, podemos arrancar el servidor ejecutando:
docker-compose up --build
Puede tardar un rato largo en buildear. Cuando haya terminado y si todo sale bien, el servidor y container estarán correctamente levantados y listos para poder trabajar.
Para entrar a la aplicacion a http://localhost:3000
Para abrir el server local
docker-compose up
Si cambia alguna dependencia del /ext/package.json
, tiene que volver a buildear la imagen de Docker
docker-compose up --build
Si desea utilizar otro archivo de compose:
docker-compose -f docker-compose-otro.yml up
Para poder entrar al container de DemocraciaOS:
docker exec -it miconsultapublica bash
Para entrar a la base de datos (acá nombrada mi-consultapublica
pero puede cambiar)
docker exec -it miconsultapublica-mongo mongo mi-consultapublica
Para inspeccionar rápidamente la base de datos (dentro de la consola de mongo):
# enumerar tablas
show tables
# volcar tabla forums
db.forums.find()
# volcar solo ids, names y titles
db.forums.find({}, {name:1, title:1})
# buscar por id
db.forums.find(ObjectId("5dbc5619a035c3000f2f1f45"))
# buscar por nombre
db.forums.find({name: 'un nombre'})
# borrar 1 usuario por mail
db.users.deleteOne({"email":"bungew@gmail.com"})
# borrar todos los usuarios
db.users.remove({})
Si lo prefiere, puede conectar la aplicacion a su mongo local. En primer lugar aseguresé que sea Mongo 3.2, si no, procure utilizar el container que se construye en el build del docker-compose.
Suponiendo que la base de datos esta en localhost:27017
cambiar el valor de la variable MONGO_URL
app:
[...]
environment:
[...]
- MONGO_URL=mongodb://localhost:27017/mi-consultapublica
Luego, debe comentar:
app:
[...]
# links:
# - mongo
[...]
Y agregar:
app:
[...]
network_mode: "host"
[...]
Por ultimo debemos comentar el servicio de mongo, para que no se construya el container
# mongo:
# container_name: miconsultapublica-mongo
# image: mongo:3.2
# ports:
# - 27017:27017
# volumes:
# - ./tmp/db:/data/db
Para esto podemos usar la imagen namshi/smtp.
Por ejemplo, si usamos una cuenta de Gmail de prueba, agregar en su compose:
mailserver:
image: namshi/smtp
environment:
- GMAIL_USER=mi-usuario@gmail.com
- GMAIL_PASSWORD=mi-contraseña-que-no-debo-publicar
Posteriormente, cambiar las variables de entorno correspondientes del contenedor app
:
- NOTIFICATIONS_MAILER_EMAIL=mi-usuario@gmail.com
- NOTIFICATIONS_NODEMAILER={"host":"mailserver","port":25,"secure":false}
Notar que si bien la conexión a este servidor SMTP no está cifrada, la conexión del servidor SMTP a Gmail sí lo está.
Para esto debe seguir las guías oficiales de DemocraciaOS sobre instalación y desarrollo.
De forma breve se puede resumir en:
- Asegurarse de tener la versión 6 de Node mirando lo que devuelve
node -v
. Si no, puede cambiar fácilmente entre versiones de node. - Asegurarse de tener una versión >=3 y <5 de Npm mirando lo que devuelve
npm -v
. Si no, puede cambiar fácilmente entre versiones de npm. - Ubicarse dentro de la carpeta raíz del proyecto
- Hacer
make packages
- Agregar algún mail de staff que será lx admin. Para esto crear el archivo
config/development.json
con contenido:
{ "staff": ["unmail@elmail.com"] }
- Levantar una base de datos mongo que escuche en
localhost:27017
. Por ejemplo con docker:docker run -p 27017:27017 --name mongodb-dos mongo:3.2
. De ser necesario puede cambiar la url del servidor mongo agregando la opciónmongoUrl
dentro deconfig/development.json
- Correr el script build-watch-serve de
gulp
(debe estar instalado) haciendoNODE_PATH=. DEBUG=democracyos* gulp bws
. Si esto no funciona pueden intentar corrermake run
- Ir a http://localhost:3000, registrar su cuenta con el mail de staff y entrar (no hace falta validar el mail)
Se requiere la versión de node
6.x.x para correr la plataforma. Recomendamos usar nvm
para cambiar fácilmente entre una versión y otra de node. Su instalación es ultrasimple, mirar su documentación. Si tenemos esta herramienta instalada, haríamos nvm install lts/boron
(que es la versión 6.17.1) para cambiar a la versión válida. Una vez instalada, ya podemos hacer directamente nvm use lts/boron
. Si no les gusta nvm
puede intentar usar n
.
Una vez cambiada la version de Node como explicado en el punto anterior puede ejecutar npm install -g 'npm@>=3 <5'
. Esto solo afectará a la versión de Node que esté activa.
Una vez cambiada la version de Node como explicado en el punto anterior, al anterior, puede ejecutar npm install -g gulp
para instalar Gulp. Esto solo afectará a la versión de Node que esté activa.
La configuración de la instancia local se hace en el archivo config/development.json
. Los valores por defecto se pueden ver en config/defaults.json
. Hay un ejemplo de configuración en config/development.json.example
. Estas opciones son las mismas que para docker-compose.yml
salvo que hay un proceso de renombramiento, como se explica en DemocraciaOS/config, que básicamente es renombrar UNA_VARIABLE_X
a unaVariableX
accesible desde el código.
El frontend no tiene acceso a todas las variables de configuración, sino solo a las que están enumeradas dentro de la opción "client"
dentro del archivo de configuración.
La plataforma cuenta con diversas formas de buildearse y correr.
Una es con make
. Esta utiliza el archivo Makefile
para correr scripts de npm
como se puede ver en su código. Notar como desde un script se salta a otro (p.ej. de run
salta a built
y de build
a packages
).
Otra forma es con gulp
. Este utiliza gulpfile.js
que simplemente importa el archivo lib/build/index.js
. Allí, se asignan todos los posibles scripts de gulp
con el comando .task(...)
. Siempre que se llame a un script de gulp
directamente deben suministrar la variable de entorno NODE_PATH=.
así encuentra los modulos, sino les saldrán errores del tipo Error: Cannot find module
.
Finalmente está la forma clásica con scripts de npm
definidos en el archivo package.json
bajo la llave scripts
. Estos, se corren haciendo npm run <nombre_del_script>
, p. ej. npm run serve
. Como verán, muchos de estos utilizan gulp
.
El único comando indispensable para buildear el sistema es gulp build
ya que compila todos los archivos js y css a la carpeta public
, y también copia los assets (imágenes, fonts, etc.).