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