Búsqueda de sitios web

Cómo ejecutar el sistema ERP ERPNext en contenedores Docker |


ERPNext es una herramienta ERP (planificación de recursos empresariales) genérica, gratuita y de código abierto, desarrollada por Frappé Technologies Pvt. . Ltd. Está construido sobre la base de datos MariaDB con un marco del lado del servidor basado en Python. ERPNext ofrece una alternativa a QAD y NetSuite. Ofrece una funcionalidad similar a Odoo (anteriormente conocido como OpenERP), Openbravo y Tryton.

ERPNext es utilizado por empresas, fabricantes y distribuidores de todo el mundo. Admite varios módulos, como contabilidad, compras, fabricación, almacén, punto de venta, comercio y venta minorista de inventario, así como módulos de dominios específicos como agricultura, organizaciones sin fines de lucro, escuelas y atención médica.

Las increíbles características que ofrece el sistema ERP ERPNext son:

  • Luz sobre los recursos del sistema.
  • Soporte técnico 24/7/365
  • Actualizaciones automáticas de alojamiento
  • Garantía de reparación de errores
  • Copia de seguridad y redundancia
  • Plataforma en la nube Kubernetes
  • Correo electrónico de transacción
  • Instalación SSL gratuita para cada dominio utilizando Let's Encrypt.
  • Instalación con un clic
  • Herramienta GUI phpMyAdmin para gestión de bases de datos
  • Migración gratuita a la plataforma en la nube de hosting ERPNext.
  • Consola de monitoreo para acceder al panel de métricas para monitorear el uso de recursos en su plan de alojamiento ERPNext en la nube
  • Altamente modular para permitir una fácil personalización

En esta guía, explicaremos cómo ejecutar el sistema ERPNext ERP en Docker Containers.

#1. Instalar Docker y Docker Compose

Esta guía requiere que tenga Docker Engine instalado en su sistema. Esto se puede hacer usando la siguiente guía:

  • Cómo instalar Docker CE en sistemas Linux

Agregue el usuario de su sistema al grupo Docker,

sudo usermod -aG docker $USER
newgrp docker

Inicie y habilite el servicio:

sudo systemctl start docker && sudo systemctl enable docker

Además, instale Docker Compose:

  • Cómo instalar Docker Compose en Linux

Ahora clone el repositorio frappe_docker para los archivos YAML necesarios.

cd ~/
git clone https://github.com/frappe/frappe_docker
cd frappe_docker

Una vez en el directorio, cree un directorio para recursos y configuraciones.

mkdir ~/gitops

Asegúrese de que OpenSSL esté instalado:

##On Debian/Ubuntu
sudo apt install openssl

##On CentOS/Rocky/Alma Linux
sudo yum install openssl

#2. Instalar Traefik Ingress

Traefik Ingress actúa como un equilibrador de carga interno para múltiples bancos y sitios alojados en el servidor. Se utilizará para exponer el puerto 80 o 443 y también se encargará de la automatización de Letsencrypt para todos los sitios instalados en el servidor.

En esta guía, expondremos el puerto 80, pero también es posible proporcionar un FQDN para el cifrado SSL.

Primero, exporte las variables para el nombre de dominio y el correo electrónico de notificación de Letsencrypt:

echo 'TRAEFIK_DOMAIN=traefik.example.com' > ~/gitops/traefik.env
echo '[email ' >> ~/gitops/traefik.env
echo 'HASHED_PASSWORD='$(openssl passwd -apr1 Passw0rd | sed 's/\$/"$/g') >> ~/gitops/traefik.env

Esto creará un archivo en ~/gitops/traefik.env con las variables anteriores. Debe asegurarse de que su entrada DNS apunte a la IP del servidor.

$ sudo vim /etc/hosts
192.168.205.11 traefik.example.com

Una vez creado, puede usar el archivo para ejecutar un contenedor Traefik como se muestra.

docker compose --project-name traefik \
  --env-file ~/gitops/traefik.env \
  -f overrides/compose.traefik.yaml up -d

Si tiene un FQDN y desea ejecutar el contenedor con automatización SSL (exponer el puerto 443), debe incluir compose.traefik-ssl.yaml . como se muestra:

docker compose --project-name traefik \
  --env-file ~/gitops/traefik.env \
  -f overrides/compose.traefik.yaml \
  -f overrides/compose.traefik-ssl.yaml up -d

Verifique si el contenedor se está ejecutando:

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                               NAMES
f4c7000a029c   traefik:v2.6   "/entrypoint.sh --pr…"   24 seconds ago   Up 22 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   traefik-traefik-1

#3. Instalar la base de datos MariaDB

En esta configuración, implementaremos una única instancia de base de datos MariaDB que servirá como servicio de base de datos para todos los bancos y proyectos instalados en el servidor.

Cree un archivo de entorno en ~/gitops

echo "DB_PASSWORD=StrongPassw0rd" > ~/gitops/mariadb.env

Cambie StrongPassw0rd a una contraseña preferida para la base de datos.

Ahora inicie el contenedor usando Docker Compose como se muestra:

docker compose --project-name mariadb --env-file ~/gitops/mariadb.env -f overrides/compose.mariadb-shared.yaml up -d

Una vez creado, verifique si el contenedor se está ejecutando:

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                            PORTS                               NAMES
18692eeb5c15   mariadb:10.6   "docker-entrypoint.s…"   7 seconds ago    Up 6 seconds (healthy)   3306/tcp                            mariadb-database
f4c7000a029c   traefik:v2.6   "/entrypoint.sh --pr…"   About a minute ago   Up About a minute                 0.0.0.0:80->80/tcp, :::80->80/tcp   traefik-traefik-1

Todos tendrán los datos persistidos en el directorio $ {HOME}/data/mariadb

#4. Crear volúmenes persistentes

Para que ERPNext conserve sus datos, debemos crear y asignar los volúmenes correctamente. Para esta guía, crearé un directorio de datos en /mnt/data

Cree el volumen persistente:

sudo mkdir -p /mnt/data/sites  

Establezca los permisos necesarios:

sudo chmod 775 -R /mnt/data
sudo chown -R $USER:docker /mnt/data

En sistemas basados en RHEL, configure SELinux en modo permisivo:

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Ahora cree el volumen acoplable para sitios

docker volume create --driver local \
     --opt type=none \
     --opt device=/mnt/data/sites \
     --opt o=bind sites

Una vez creado, verifique con el comando:

$ docker volume list
DRIVER    VOLUME NAME
local     sites 
.......

#5. Ejecute el sistema ERP ERPNext en Docker

La instancia de ERPNext crea su Redis, socketio, Gunicorn, Nginx, trabajadores y programador. Utilizará la red interna MariaDB para conectarse a la instancia en ejecución y exponer el servicio usando Traefik.

Comenzaremos creando un banco con el nombre erpnext-one con dos sitios llamados one.example.com y two.example.com.

cp example.env ~/gitops/erpnext-one.env
sed -i 's/DB_PASSWORD=123/DB_PASSWORD=StrongPassw0rd/g' ~/gitops/erpnext-one.env
sed -i 's/DB_HOST=/DB_HOST=mariadb-database/g' ~/gitops/erpnext-one.env
sed -i 's/DB_PORT=/DB_PORT=3306/g' ~/gitops/erpnext-one.env
echo 'ROUTER=erpnext-one' >> ~/gitops/erpnext-one.env
echo "SITES=\`one.example.com\`,\`two.example.com\`" >> ~/gitops/erpnext-one.env
echo "BENCH_NETWORK=erpnext-one" >> ~/gitops/erpnext-one.env

Después de estos comandos, tendrá un archivo de entorno creado como ~/gitops/erpnext-one.env.

Además, cree un archivo YAML en el directorio ~/gitops.

  • Para HTTP:
docker compose --project-name erpnext-one \
  --env-file ~/gitops/erpnext-one.env \
  -f compose.yaml \
  -f overrides/compose.redis.yaml \
  -f overrides/compose.multi-bench.yaml config > ~/gitops/erpnext-one.yaml
  • Para HTTPS
docker compose --project-name erpnext-one \
  --env-file ~/gitops/erpnext-one.env \
  -f compose.yaml \
  -f overrides/compose.redis.yaml \
  -f overrides/compose.multi-bench.yaml \
  -f overrides/compose.multi-bench-ssl.yaml config > ~/gitops/erpnext-one.yaml

Modifique su archivo YAML de redacción para acomodar los volúmenes creados:

vim compose.yaml

Al final del archivo, realice las siguientes modificaciones en los volúmenes:

# ERPNext requires local assets access (Frappe does not)
volumes:
  sites:
    external: true

Ahora puedes girar el contenedor usando las configuraciones:

docker compose --project-name erpnext-one -f ~/gitops/erpnext-one.yaml up -d

Compruebe si los contenedores creados se están ejecutando:

$ docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS                   PORTS                               NAMES
da4cfc1b874f   frappe/erpnext:v14.29.1   "nginx-entrypoint.sh"    21 seconds ago   Up 4 seconds                                                 erpnext-one-frontend-1
1a999b50b096   frappe/erpnext:v14.29.1   "node /home/frappe/f…"   21 seconds ago   Up 6 seconds                                                 erpnext-one-websocket-1
b0fae8a010ba   frappe/erpnext:v14.29.1   "/home/frappe/frappe…"   21 seconds ago   Up 6 seconds                                                 erpnext-one-backend-1
a566f522bbc2   frappe/erpnext:v14.29.1   "bench schedule"         21 seconds ago   Up 5 seconds                                                 erpnext-one-scheduler-1
a974b313570b   frappe/erpnext:v14.29.1   "bench worker --queu…"   21 seconds ago   Up 5 seconds                                                 erpnext-one-queue-short-1
4b88d00b8b2b   frappe/erpnext:v14.29.1   "bench worker --queu…"   21 seconds ago   Up 6 seconds                                                 erpnext-one-queue-default-1
380d8ae1399d   frappe/erpnext:v14.29.1   "bench worker --queu…"   21 seconds ago   Up 6 seconds                                                 erpnext-one-queue-long-1
4c14b3e32141   redis:6.2-alpine          "docker-entrypoint.s…"   21 seconds ago   Up 19 seconds            6379/tcp                            erpnext-one-redis-socketio-1
3388eba79163   redis:6.2-alpine          "docker-entrypoint.s…"   21 seconds ago   Up 19 seconds            6379/tcp                            erpnext-one-redis-cache-1
eb140fd2bcfa   redis:6.2-alpine          "docker-entrypoint.s…"   21 seconds ago   Up 19 seconds            6379/tcp                            erpnext-one-redis-queue-1
18692eeb5c15   mariadb:10.6              "docker-entrypoint.s…"   7 minutes ago    Up 7 minutes (healthy)   3306/tcp                            mariadb-database
700b6fb1b9ac   traefik:v2.6              "/entrypoint.sh --pr…"   8 minutes ago    Up 8 minutes             0.0.0.0:80->80/tcp, :::80->80/tcp   traefik-traefik-1

Ahora crea los sitios.

  • Para uno.ejemplo.com
docker compose --project-name erpnext-one exec backend \
  bench new-site one.example.com --mariadb-root-password StrongPassw0rd --install-app erpnext --admin-password StrongPassw0rd
  • Para dos.ejemplo.com

Solo puede continuar con esta opción si necesita una configuración de banco único multisitio.

docker compose --project-name erpnext-one exec backend \
  bench new-site two.example.com --mariadb-root-password StrongPassw0rd --install-app erpnext --admin-password StrongPassw0rd

#6. Acceda a la interfaz de usuario web del sistema ERP ERPNext

En este punto, puedes acceder a cualquiera de tus sitios creados en la playa con la URL. Por ejemplo http://one.example.com o https://one.example.com

Supongo que tiene una entrada DNS que apunta a la IP del servidor. Por ejemplo:

$ sudo vim /etc/hosts
192.168.205.11 one.example.com

Debe iniciar sesión con la contraseña de administrador creada para el sitio como se muestra:

Una vez que haya iniciado sesión, comience por realizar configuraciones básicas. Seleccione el idioma, país y zona horaria preferidos.

A continuación, cree su primer usuario.

Crear la empresa/organización

Definir el tipo de organización.

Una vez proporcionado, el sistema se inicializará

¡Y ahí lo tienes! Este es el panel del sistema ERPNext ERP.

Desde este panel, puede realizar las actividades deseadas.

#7. Primeros pasos con el sistema ERP ERPNext

Demostraré cómo comenzar con el sistema ERP ERPNext y realizar transacciones. Comience haciendo clic en empresa.

Ya tenemos una empresa creada, también puedes crear otras empresas si lo necesitas.

Una vez creada la empresa deseada con moneda, regrese a la pestaña de contabilidad y seleccione Plan de cuentas

Esto muestra los libros contables de cada transacción de su empresa. Una vez que tenga una cuenta con el plan de cuentas, ahora puede volver a la página Inicio y crear el elemento deseado.

Puede ser un producto o un servicio ofrecido por la empresa.

Cree el artículo deseado haciendo clic enCrear un nuevo artículo

Una vez guardado, actualice para ver los elementos.

Ahora cree un cliente con el que desee hacer negocios en contabilidad->Cliente.

Proporcionar los datos del cliente.

Una vez agregado, el cliente aparecerá como se muestra.

A continuación, cree un proveedor para los artículos creados en contabilidad->Proveedor.

Una vez que se hayan agregado los detalles del artículo, cliente y proveedor, estará listo para realizar transacciones utilizando ERPNext.

Creemos un pedido de ventas buscando como se muestra.

Una orden de venta tiene el cliente, la fecha de entrega, el código de artículo y la cantidad.

Al hacer clic en guardar, se guarda la transacción en modo borrador y se puede editar. Una vez enviado, no podrá realizar ningún cambio.

Ahora puede imprimir el pedido de venta y también puede enviar la transacción mediante SMS, correo electrónico, etc.

#8. Administrar los contenedores Docker del sistema ERP ERPNext

Los contenedores Docker del sistema ERPNext ERP se pueden administrar con los siguientes comandos:

cd ~/frappe_docker
  • Para Traefik
##Stop
docker-compose --project-name traefik \
--env-file ~/gitops/traefik.env \
-f overrides/compose.traefik.yaml stop

##Start
docker-compose --project-name traefik \
--env-file ~/gitops/traefik.env \
 -f overrides/compose.traefik.yaml start
  • Para MaríaDB
##Stop
docker compose --project-name mariadb \
--env-file ~/gitops/mariadb.env \
-f  overrides/compose.mariadb-shared.yaml stop

##Start 
docker compose --project-name mariadb \
--env-file ~/gitops/mariadb.env \
-f  overrides/compose.mariadb-shared.yaml start
  • Para ERPNiguiente
##Stop
docker compose --project-name erpnext-one -f ~/gitops/erpnext-one.yaml stop

##Start
docker compose --project-name erpnext-one -f ~/gitops/erpnext-one.yaml start

Veredicto

Esto marca el final de esta guía sobre cómo ejecutar el sistema ERP ERPNext en contenedores Docker. Ahora puede realizar transacciones con opciones de contabilidad, compras, fabricación, almacén, punto de venta, comercio y venta minorista de inventario. Espero que esto haya sido significativo para ti.

Ver más:

  • Instale el sistema de contabilidad Ledger en Ubuntu
  • Instale el software de contabilidad Akaunting en Ubuntu

Artículos relacionados: