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​

De acuerdo a la instalación para swarm, 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)
curl -L https://downloads.portainer.io/ce-lts/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/ee-lts/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.