Saltar al contenido principal

Portainer

Puede usar cualquier gestor de contenedores, pero se recomienda usar Portainer. La documentación de Portainer se puede encontrar en Portainer y la instalacion en [Instalar Portainer](Instalar Portainer en cada uno de los servidores).

Instalación

Manager

En el ordenador que lleva el rol de manager, deberemos ejecutar los siguientes comandos:

Crea directorios para portainer y accede a ellos:

  sudo mkdir -p /opt/portainer && cd /opt/portainer

Dependiendo de que vayamos a instalar la version Portainer Community Edition (CE) o la version Portainer Business Edition (BE), usaremos uno u otro comando.

  • Portainer Community Edition (CE)

    sudo curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
    sudo docker stack deploy --compose-file=portainer-agent-stack.yml portainer
  • Portainer Business Edition (BE)

    curl -L https://downloads.portainer.io/ee2-19/portainer-agent-stack.yml -o portainer-agent-stack.yml
    docker stack deploy -c portainer-agent-stack.yml portainer

Con esto ya tendremos instalado Portainer en el servidor. Podemos acceder usando https://IP.SW.A.RM:9443 donde IP.SW.A.RM es la IP del servidor donde se ha instalado Portainer.

Workers

En cada uno de los workers, deberemos ejecutar el siguiente comando para unirlos al cluster de docker swarm:

docker network create \
--driver overlay \
portainer_agent_network

docker service create \
--name portainer_agent \
--network portainer_agent_network \
-p 9001:9001/tcp \
--mode global \
--constraint 'node.platform.os == linux' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \
--mount type=bind,src=//,dst=/host \
portainer/agent:2.19.4

PreConfiguración

Para la configuración del Portainer con el servidor de Docker:

  1. Ir a la seccion Enviroments.
  2. Pulsar en crear un nuevo Entorno.
  3. Añadir un enviroment con el nombre NOMBREDELCLUSTER a elegir y el Environment address IPDELDOCKER:9001.

Configurar el Entorno

Dentro de Registry, pulsar en el boton Add Entorno.

Agent

Dentro de Registry, pulsar en el botón Connect.

Configuración

Para la configuración de Portainer con ValerIA hay que seguir estos tres procesos:

  1. Configurar el Registry de Portainer para que apunte a mood Robotics.
  2. Crear el Stack de ValerIA.
  3. Configurar el Stack de ValerIA.

Configurar el Registry

Dentro de Registry, pulsar en el boton Add Registry.

Add Registry

Dentro de Registry, pulsar en el botón Custom Registry.

Custom Registry

Introducir los datos del registro (La clave solicitarla a [pablo@moodrobotics.com](mailto:pablo@moodrobotics.com) y pulsar Add Registry`.

Add Registry

Crear los secrets de ValerIA

Para su puesta en marcha, ValerIA necesita de 4 secretos que se deben crear en Portainer. Para ello, en el menú de la izquierda, pulsar en Secrets y después en Create Secret.

Add Secret

Introducir los siguientes secretos:

  • valeriaurldb con la URL de la base de datos de mongo. Cadena de texto como: mongodb://root:VALERIADBPASSWORD@database:27017 donde VALERIADBPASSWORD es la contraseña que se ha usara en la variable de entorno MONGO_INITDB_ROOT_PASSWORD.
  • valeriasecrettoken con el token secreto que se quiera para la aplicación. Codigo de unos 16 letras y numeros usado para encriptar los tokens del servidor y los clientes. Vale cualquier valor y no es necesario recordarlo, ya que se puede cambiar en cualquier momento.
  • valeriadbpassword con la contraseña que se quiera para el usuario root de mongo. Cadena de texto como: gdfps24dflsñfkjlsor32.
  • valeriapostgrespassword con la contraseña que se quiera para el usuario root de postgres. Cadena de texto como: tfn34h0esrt3464765rtf.
  • valerian8npassword con la contraseña que se quiera para el usuario admin de n8n. Cadena de texto como: sfn34h0esrt908esghfdu7F2.
  • valerian8njwt con el token secreto para las conexiones de n8n. Código de unos 16 letras y numeros usado para encriptar los tokens del servidor y los clientes. Vale cualquier valor y no es necesario recordarlo, ya que se puede cambiar en cualquier momento.

Crear el Stack de ValerIA

En el menu de la izquierda, pulsar en Stacks y después en + Add Stack.

Add Stack

Como nombre ponga en minusculas y sin espacios valeria u otro nombre descriptivo de la app.

Seleccione Web editor y en el campo Web editor pegue el siguiente código.

stack.yml
version: "3.8"
services:
database:
image: mongo:latest
user: "nobody"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD_FILE: /run/secrets/valeriadbpassword
secrets:
- valeriadbpassword
volumes:
- valeriadb:/data/db
- valeriadb:/data/configdb
ports:
- 27010:27017
networks:
- valeria
api:
image: registry.moodrob.com/valeria-api
depends_on:
- database
environment:
DATABASEURL_FILE: /run/secrets/valeriaurldb
SECRETTOKEN_FILE: /run/secrets/valeriasecrettoken
APIHOSTNAME: https://valeria.midominiodeempresa.com
APIHOSTDESC: MIEMPRESA ValerIA server
APIPORTPUBLIC: 80
TZ: Europe/Madrid
secrets:
- valeriaurldb
- valeriasecrettoken
ports:
- 5051:5000
volumes:
- public:/app/_public
- local:/app/_local
- internal:/app/_internal
- filesync:/app/_filesync
networks:
- valeria
conductor:
container_name: conductor
image: registry.moodrob.com/valeria-conductor
depends_on:
- api
ports:
- "1880:1880"
restart: always
volumes:
- conductor:/root
- local:/local
- public:/public
- internal:/internal
environment:
TZ: Europe/Madrid
# NODE_RED_ENABLE_PROJECTS: true
# NODE_RED_ENABLE_SAFE_MODE: true
# NODE_RED_ENABLE_CONTEXT_STORAGE: true
# NODE_RED_ENABLE_MODULE_LOADING: true
# NODE_RED_ENABLE_FLOW_CLUSTER: true
# NODE_RED_ENABLE_FLOW_CONFIGURATION: true
# NODE_RED_ENABLE_VERBOSE_LOGGING: true
# NODE_RED_ENABLE_DEBUGGING: true
# NODE_RED_ENABLE_EXTERNAL_MODULES: true
# NODE_RED_ENABLE_CUSTOM_CONTEXT: true
# NODE_RED_ENABLE_SESSIONS: true
# NODE_RED_ENABLE_OPTIMIZE_MEMORY: true
# NODE_RED_ENABLE_ADMIN_ROOT: true
networks:
- valeria
frontend:
container_name: frontend
image: registry.moodrob.com/valeria-frontend
ports:
- "3051:3000"
volumes:
- public:/app/public
environment:
TZ: Europe/Madrid
WDS_SOCKER_PORT: 0
REACT_APP_API_URL: https://valeria.midominiodeempresa.com
filesync:
image: rclone/rclone
container_name: filesync
restart: always
command: rcd --rc-web-gui --rc-allow-origin --rc-web-gui-update --rc-addr :5572 --rc-user admin --rc-pass admin
ports:
- "5572:5572"
volumes:
- filesync:/config/rclone
- filesync:/logs
environment:
PHP_TZ: Europe/Madrid
PUID: 1000
PGID: 1000

secrets:
valeriadbpassword:
external: true
valeriaurldb:
external: true
valeriasecrettoken:
external: true
volumes:
datadb:
external: true
conductor:
external: true
filesync:
external: true
public:
external: true
local:
external: true
internal:
external: true
networks:
valeria:
name: valeria

*En el caso de que el microprocesador del servidor no admita comandos Vx, se recomienda cambiar image: mongo:latest por image: mongo:4.4.10

En la sección de más abajo denominada Environment variables, se deben sustituir los valores de las variables por los valores deseados. Pulse en + Add an environment variable.

Add Enviroment variables

Añada las siguientes variables de entorno:

  • MONGO_INITDB_ROOT_PASSWORD con la contraseña que se quiera para el usuario root de mongo. Reduerde que la contraseña no puede contener los caracteres @, : o /. ej sfn34h0esrt908esghfdu7F2.
  • MONGO_INITDB_ROOT_USERNAME con el nombre del usuario root de mongo.ej root.
  • APIHOSTNAME con el dominio que se quiera usar para acceder a la aplicación.ej https://valeria.midominiodeempresa.com.
  • APIHOSTDESC con la descripción que se quiera para el servidor.ej MIEMPRESA ValerIA server.
  • APIPORTPUBLIC con el puerto que se quiera usar para acceder a la aplicación.ej 80.
  • REACT_APP_API_URL: con el puerto que se quiera usar para acceder a la aplicación.ej https://valeria.midominiodeempresa.com.
  • TZ con la zona horaria que se quiera usar.ej Europe/Madrid.

Y de manera opcional las siguientes variables de entorno:

  • mode: Con un valor de dev o prod para indicar si se quiere que las peticiones de una determinada IP no necesiten autenticación. por defecto "prod"
  • IPDEV: Con un valor de la IP que no necesitará autenticación. por defecto ""
  • developerPolicies: Con la lista de políticas que se quieran usar para el modo desarrollador. por defecto *.
  • APIhostname: Con la url publica que se quiera usar para acceder a la aplicación. por defecto "http://localhost"
  • APIhostdesc: Con la descripción que se quiera usar para el servidor. por defecto "ValerIA"
  • APIportpublic: Con el puerto publico que se quiera usar para acceder a la aplicación. por defecto "80"
  • TZ: Con la zona horaria que se quiera usar. por defecto "Europe/Madrid"

Y pulse en Deploy the stack.

Deploy the stack

Upgrade

documentación de instalación.