Cómo instalar ERPNext 14 en Debian 11

ERPNext es un sistema ERP (Planificación de Recursos Empresariales) de código abierto que puedes implantar en tu empresa. ERPNext se puede implantar en múltiples sectores, como fabricación, distribución, venta al por menor, comercio, servicios, educación, organizaciones sin ánimo de lucro y sanidad. Además, proporciona módulos como contabilidad, CRM, ventas, compras, sitio web, comercio electrónico, punto de venta, fabricación, almacén, gestión de proyectos, inventario y servicios.

ERPNext es una plataforma ERP empresarial con licencia GNU General Public Licence v3. Está escrita principalmente en Python y Javascript, y desarrollada por Frappe Technologies Pvt. ERPNext es una aplicación escrita bajo el framework Frappe, un framework web de código abierto en Python y Javascript.

ERPNext es una alternativa a servicios como NetSuite de Oracle, QAD, Tython, OpenBrave y Odoo. En cuanto a funcionalidad, ERPNext es similar a Odoo (antes OpenERP).

En este tutorial, instalarás ERPNext en un servidor Debian 11 y, a continuación, asegurarás ERPNext con certificados SSL/TLS mediante Certbot y Letsencrypt. También aprenderás a instalar dependencias para ERPNext, como Python 3.10, Redis, Nginx, Supervisor, Fail2ban, MariaDB Server, Node.js y Yarn, y Frappe Web Framework.

Requisitos previos

Necesitarás algunos de los siguientes requisitos para completar este tutorial:

  • Un servidor Debian 11 – Este ejemplo utiliza un servidor Debian con el nombre de host ‘erpnext-servidor‘.
  • Un usuario no root con privilegios de administrador sudo/root. Ejecutarás todos los comandos de esta guía como usuario no root.
  • Un nombre de dominio apuntando a la dirección IP del servidor.

Ahora pasemos a la instalación.

Configurar un nuevo usuario

El primer paso de este tutorial es crear un nuevo usuario que se utilizará para ejecutar la aplicación ERPNext. Además, añadirás el nuevo usuario al grupo ‘sudo’ y permitirás que este usuario ejecute comandos con privilegios de root.

Ejecuta el siguiente comando para crear un nuevo usuario y establecer la contraseña para el nuevo usuario. En este ejemplo, crearás un nuevo usuario ‘frappe‘ que se utilizará para ejecutar el ERPNext.

sudo useradd -m -s /bin/bash frappe
sudo passwd frappe

Ahora añade el usuario«frappe» al grupo «sudo» mediante el siguiente comando.

sudo usermod -aG sudo frappe

Por último, verifica el nuevo usuario ejecutando el siguiente comando. Iniciarás sesión como el usuario«frappe» y obtendrás privilegios de root mediante el comando«sudo su«.

su - frappe
sudo su

El símbolo del sistema de tu terminal debería cambiar a ‘root@hostname:/home/frappe..’. Ahora escribe ‘exit’ para salir del intérprete de comandos root.

configurar usuario

Con esto, habrás creado un nuevo usuario para ERPNext. En los siguientes pasos, instalarás Python 3.10 manualmente compilándolo desde el código fuente.

Instalar Python 3.10

ERPNext es una aplicación web creada con un frappeframework, que está basado en Python. En el momento de escribir esto, la última versión del frappeframework y ERPNext requerían al menos Python 3.10.

En este paso, instalarás Python 3.10 manualmente desde el código fuente. Porque el repositorio actual de Debian 11 aún no proporciona los paquetes de Python 3.10.

Antes de empezar, asegúrate de que has iniciado sesión en tu servidor Debian como el nuevo usuario«frappe«.

su - frappe

Para empezar, ejecuta el siguiente comando para actualizar el índice de paquetes de Debian.

sudo apt update

Ahora ejecuta el siguiente comando apt para instalar las dependencias para compilar Python.

sudo apt install wget build-essential libncursesw5-dev libssl-dev \
     libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

Introduce y cuando se te pida y pulsa ENTER para continuar.

instalar dependencias

A continuación, descarga el código fuente de Python 3.10 de la página de descargas de Python mediante el siguiente comando wget. En este ejemplo, descargarás e instalarás Python 3.10.9.

wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz

Una vez descargado el código fuente de Python, extráelo mediante el comando tar y traslada a él el directorio de trabajo.

tar xzf Python-3.10.9.tgz
cd Python-*/

Ahora ejecuta el siguiente comando para compilar Python 3.10 e instalarlo.

./configure --enable-optimizations
nproc
sudo make -j2
sudo make altinstall

descargar compilar python

Una vez finalizada la instalación de Python, deberías tener el binario de Python en el directorio‘/usr/local/bin/‘. Ejecuta el siguiente comando para verificar la instalación de Python 3.10.

ls /usr/local/bin

Deberías ver el archivo binario de los paquetes de Python 3.10 como ‘python3.10y ‘pip3.10‘.

A continuación, para asegurarte de que puedes ejecutar la nueva versión de los comandos de Python, debes añadir el directorio‘/usr/local/bin‘ al PATH del sistema y al secure_path de visudo.

Crea un nuevo archivo ‘/etc/profile.d/custom-path.sh ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/profile.d/custom-path.sh

Añade la siguiente línea al archivo.

export PATH=$PATH:/usr/local/bin/

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando para cargar el nuevo archivo ‘/etc/profile.d/custom-path.sh‘ y comprueba el PATH del sistema.

source /etc/profile.d/custom-path.sh
echo $PATH

Deberías ver que el directorio‘/usr/local/bin‘ se ha añadido a la variable de entorno PATH del sistema.

A continuación, ejecuta el siguiente comando para editar la configuración de sudoers.

sudo visudo

En la línea‘Defaults secure_path=‘, añade el nuevo secure_path binario‘/usr/local/bin‘.

Defaults secure_path=....:/usr/local/bin

Guarda y sal del editor cuando hayas terminado.

Con esto, ya puedes ejecutar el nuevo Python 3.10 mediante el comando sudo. Ejecuta el siguiente comando para verificar el Python3.10 y Pip3.10.

sudo python3.10 --version
sudo pip3.10 --version

A continuación se muestra la salida similar que recibirás en tu terminal.

configurar python

Ahora que ya has instalado Python 3.10, pasa a la siguiente instalación de las dependencias de ERPNext, que son el servidor web Nginx y Supervisor.

Instalación de Nginx y Supervisor

Para instalar ERPNext, debes instalar Nginx, que se utilizará como servidor web por defecto, y el Supervisor como gestor de procesos. Ambos paquetes, Nginx y Supervisor, están disponibles en el repositorio de Debian y puedes instalarlos fácilmente mediante APT.

Ejecuta el siguiente comando apt para instalar los paquetes Nginx y Supervisor.

sudo apt install git nginx supervisor

Introduce y cuando te lo pida y pulsa ENTER para continuar.

instalar nginx supervisor

A continuación, ejecuta el siguiente comando systemctl para verificar ambos servicios Nginx y Supervisor. Esto asegurará que ambos servicios, Nginx y Supervisor, se están ejecutando y están habilitados, lo que significa que ambos servicios deberían ejecutarse automáticamente al arrancar.

Comprueba el servicio Nginx.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Salida:

verificar nginx

Comprueba el servicio Supervisor.

sudo systemctl is-enabled supervisor
sudo systemctl status supervisor

Salida:

verificar supervisor

Con Nginx y Supervisor instalados y funcionando, pasa a la siguiente instalación Servidor Redis y Fail2ban.

Instalación de Redis y Fail2ban

Redis es una base de datos clave-valor que puede utilizarse para almacenar datos temporales, como sesiones. Fail2ban es una herramienta de seguridad para bloquear ataques de fuerza bruta contra tus aplicaciones ERPNext.

ERPNext requiere Redis, que se utilizará como gestor de sesiones, y Fail2ban para bloquear ataques de fuerza bruta en la página de inicio de sesión de usuario de ERPNext.

Ejecuta el siguiente comando apt para instalar Redis y Fail2ban en tu servidor Debian.

sudo apt install redis-server fail2ban

Introduce y cuando se te pida confirmación y pulsa ENTER para continuar.

instalar redis

instalar fail2ban

Una vez instalados Redis y Fail2ban, ejecuta el siguiente comando systemctl para verificar ambos servicios.

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server
sudo systemctl is-enabled fail2ban
sudo systemctl status fail2ban

Para el servicio Redis, deberías ver un resultado similar a éste: El servicio Redis está activado y se ejecutará automáticamente al arrancar. Y el estado actual de Redis es en ejecución.

verificar redis

El servicio Fail2ban está activado y se ejecutará automáticamente al arrancar. Y el estado actual de Fail2ban es en ejecución.

verificar fail2ban

Ya tienes el Servidor Redis y Fail2ban instalados y en ejecución. En los siguientes pasos, instalarás y configurarás el servidor de bases de datos MariaDB.

Instalar y configurar el servidor MariaDB

En la instalación por defecto, ERPNext utilizará MySQL/MariaDB como servidor de base de datos. ERPNext requiere una versión específica de MySQL/MariaDB para la instalación.

En este paso, instalarás el servidor MariaDB 10.6 desde el repositorio oficial de MariaDB. A continuación, añadirás configuraciones a tu Servidor MariaDB y asegurarás la instalación del Servidor MariaDB.

Ejecuta el siguiente comando para añadir el repositorio de MariaDB Server v10.6.

sudo curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.6"

Recibirás una salida similar a esta.

añadir repo mariadb

Ahora ejecuta el siguiente comando apt para instalar los paquetes MariaDB.

sudo apt install mariadb-server mariadb-client default-libmysqlclient-dev

Introduce y cuando se te pida la instalación y pulsa ENTER para continuar.

instalar mariadb

Una vez instalado el servidor MariaDB, ejecuta el siguiente comando systemctl para verificar el servicio MariaDB y asegurarte de que está activado y en funcionamiento.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Ahora deberías obtener un resultado como el siguiente: el servicio MariaDB está habilitado y se ejecutará automáticamente al arrancar. Y el estado actual del servicio MariaDB es en ejecución.

verificar mariadb

A continuación, abre el archivo de configuración del servidor MariaDB ‘/etc/alternatives/my.cnf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/alternatives/my.cnf

Añade las siguientes líneas al archivo. La siguiente configuración habilitará el formato ‘barruca’ en tu Servidor MariaDB y también establecerá el juego de caracteres por defecto tanto para el servidor como para el cliente en‘utf8mb4‘.

[mysqld]
innodb-file-format=barracuda
innodb-file-per-table=1
innodb-large-prefix=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio MariaDB y aplicar los cambios.

sudo systemctl restart mariadb

A continuación, asegura tu despliegue de MariaDB.

Ejecuta el siguiente comando‘mariadb-secure-installation‘ para proteger tu instalación de MariaDB. Se te pedirá que configures la contraseña raíz de MariaDB, así que asegúrate de introducir y repetir la nueva contraseña. Para el resto de configuraciones, introduce Y para confirmar y pulsa ENTER.

sudo mariadb-secure-installation

Con esto, ya has terminado la instalación y configuración del Servidor MariaDB. En el siguiente paso, instalarás el paquete wkhtmltopdf que ERPNext utilizará para generar informes PDF.

Instalación del paquete wkhtmltopdf

En este paso, instalarás el paquete Wkhtmltopdf que ERPNext utilizará para generar informes PDF. El paquete Wkhtmltopdf puede descargarse e instalarse manualmente mediante un archivo .deb o .rpm. Pero para Debian, puedes instalarlo desde el repositorio oficial de Debian mediante APT.

Ejecuta el siguiente comando para instalar el paquete wkhtmltopdf. Introduce Y cuando se te pida y pulsa ENTER para continuar.

sudo apt install xvfb libfontconfig wkhtmltopdf

instalar wkhtmltopdf

Una vez instalado Wkhtmltopdf, ejecuta el siguiente comando para verificarlo. El comando wkhtmltopdf se utiliza para convertir la página HTML a PDF, mientras que el wkhtmltoimage convierte la página HTML a varios formatos de imagen.

which wkhtmltopdf
wkhtmltopdf --version
which wkhtmltoimage
wkhtmltoimage --version

Recibirás un resultado similar a éste: Wkhtmltopdf v0.12 está instalado en tu sistema Debian.

verificar wkhtmltopdf

En los siguientes pasos, instalarás el gestor de paquetes Node.js y Yarn que se utilizarán para generar archivos estáticos para el ERPNext.

Instalar Nodejs 16 y Yarn

La última versión de ERPNext es la v14, que requiere al menos el gestor de paquetes Node.js 16 y Yarn. En este paso, instalarás Node.js 16 a través del repositorio Nodesource. A continuación, instala el gestor de paquetes Yarn.

Para empezar, ejecuta el siguiente comando para añadir el repositorio Nodesource para Node.js 16.

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash

Recibirás una salida similar a ésta.

añadir repositorio nodesource

A continuación, ejecuta el siguiente comando para añadir el repositorio de Yarn para la distribución Debian-Linux.

sudo curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

añadir repositorio yarn

Después, actualiza y refresca el índice de paquetes de Debian mediante el comando ‘apt update’. A continuación, instala el gestor de paquetes Node.js y yarn mediante el comando ‘apt install’.

sudo apt update
sudo apt install nodejs yarn

Ahora debería comenzar la instalación del gestor de paquetes Node.js y Yarn.

instala yarn y nodejs

Cuando Node.js y yarn estén instalados, ya habrás terminado la instalación de las dependencias de paquetes para Frappe Web Framework y la aplicación ERPNext.

Instalación de frappe framework y frappe-bench

ERPNext es un software ERP de código abierto creado con frappeframework, que está escrito en Python y JavaScript. Para instalar ERPNext, debes instalar el frappeframework en tu sistema, y se puede instalar a través del «frappe-bench» o «bench».

Así que primero, debes instalar el banco. A continuación, instala el frappeframework a través del banco. Por último, instalarás la aplicación ERPNext dentro del frappeframework.

Para instalar el banco, ejecuta el siguiente comando pip3.10.

sudo pip3.10 install frappe-bench

Recibirás una salida similar a ésta durante la instalación del banco.

instalar banco

Una vez instalado el banco, ejecuta el siguiente comando para verificarlo. Recibirás la ruta binaria del comando‘bench‘ y la versión actual del bench que has instalado.

which bench
bench --version

verificar banco

Una vez instalado el banco, instala el frappeframework. Ejecuta el siguiente comando ‘bench’ para instalar el frappeframework en tu directorio de trabajo actual. Además, especificarás la versión de Python que se utilizará a Python 3.10, especificarás la versión del frappeframework a v14., y el directorio de destino de la instalación es ‘frappe-bench‘.

bench init --python python3.10 --frappe-branch version-14 frappe-bench

Recibirás una salida similar a ésta durante la instalación del frappeframework.

instala frappeframework a través de bench

Una vez instalado el frappeframework, deberías recibir la siguiente salida al final de la instalación.

frappeframework instalado

Por último, ejecuta el siguiente comando para permitir que otros usuarios lean y ejecuten en el directorio de instalación frappeframwprk. Esto es necesario para que el servidor web Nginx pueda leer y ejecutar el frappframework.

sudo chmod -R o+rx /home/frappe/frappe-bench
or
sudo chmod -R o+rx /home/frappe

Una vez instalado frappeframework, estarás listo para instalar y configurar ERPNext.

Configurar un nuevo sitio/proyecto en frappeframework

Antes de instalar ERPNext, debes crear un nuevo sitio/proyecto en el frappeframework. En este paso, crearás un nuevo sitio/proyecto y cambiarás el entorno al nuevo proyecto a través del banco.

Primero, mueve tu directorio de trabajo a ‘frappe-benchmediante el comando cd.

cd ~/frappe-bench

Ejecuta el comando bench que aparece a continuación para crear un nuevo sitio/proyecto para el ERPNext. En este ejemplo, crearás un nuevo sitio ‘erp.hwdomain.io‘, que es el nombre de dominio de destino de la instalación de ERPNext. Además, durante el proceso de configuración, se te pedirá que configures la contraseña de administrador para tu proyecto frappe, así que introduce tu contraseña y repite. Esta contraseña se utilizará para iniciar sesión en tu aplicación ERPNext.

bench new-site erp.hwdomain.io

Por último, ejecuta el siguiente comando para cambiar al nuevo sitio/proyecto ‘erp.hwdomain.io‘.

bench use erp.hwdomain.io

A continuación se muestra la salida durante la creación del sitio/proyecto y después de cambiar al nuevo sitio/proyecto.

crear un nuevo proyecto de sitio

Instalación de ERPNext mediante frappe-bench

Una vez creado el nuevo sitio/proyecto en frappeframework, ejecuta el siguiente comando para descargar la aplicación ‘pagosy el archivo ‘erpnext‘. En este ejemplo, descargarás el ERPNexxt v14.

bench get-app payments
bench get-app --branch version-14 erpnext

A continuación se muestra una salida similar que recibirás durante el proceso ‘pagos‘.

descargar app pagos

Y a continuación se muestra el proceso de descarga del ERPNext .

descargar app erpnext

A continuación, ejecuta el siguiente comando para instalar la aplicación ERPNext en el sitio/proyecto erp.hwdomain.io‘.

bench --site erp.hwdomain.io install-app erpnext

Recibirás una salida similar a ésta – También deberías ver que la aplicación‘pagos‘ se instala automáticamente como dependencia de la aplicación ERPNext.

instalar erpnext

Por último, ejecuta el siguiente comando de banco para activar el programador y desactivar el modo de mantenimiento en el sitio/proyecto ‘erp.hwdomain.io’.

bench --site erp.hwdomain.io enable-scheduler
bench --site erp.hwdomain.io set-maintenance-mode off

En este punto, la instalación de ERPNext ha finalizado. Pero, si ejecutas ERPNext en producción, a continuación debes instalar y configurar el servidor web Nginx y el Supervisor, que se pueden configurar mediante el comando bench.

Despliegue de ERPNext para producción

En primer lugar, ejecuta el siguiente comando para empezar a configurar frappeframeowrk y ERPNext para el entorno de producción. Esto instalará Ansible y configurará el despliegue de ERPNext automáticamente mediante Ansible.

sudo bench setup production frappe

A continuación se muestra la salida durante la instalación de Ansible.

instalar dependencias

A continuación se muestra la salida una vez finalizada la configuración.

instalación finalizada

A continuación, ejecuta el siguiente comando de banco para configurar Nginx y Supervisor para ERPNext. Cuando se te pregunte si deseas sobrescribir la configuración actual, introduce y para confirmar y pulsa INTRO.

sudo bench setup supervisor
sudo bench setup nginx

Después, vuelve a ejecutar el comando de banco que aparece a continuación para asegurarte de que la configuración del Supervisor y de Nginx está instalada.

sudo bench setup production frappe

Introduce y para sobrescribir la configuración actual y pulsa INTRO para continuar.

reinstala para asegurarte de que todos los

Por último, ejecuta el siguiente comando ‘supervisorctl’ con privilegios sudo. Esto verificará todos los procesos y servicios utilizados por frappeframework y ERPNext.

sudo supervisorctl status

Si la instalación de ERPNext se ha realizado correctamente, deberías recibir una salida similar a la siguiente: Todos los servicios de frappeframework y ERPNext se están ejecutando.

verificar supervisorctl

En este punto, ya tienes la instalación de ERPNext terminada y se está ejecutando con Nginx como servidor web y Supervisor para el gestor de procesos. Ahora puedes acceder a tu instalación de ERPNext a través de tu nombre de dominio y el navegador web.

Configurar la instalación de ERPNext

Abre tu navegador web y visita el nombre de dominio de tu instalación de ERPNext (es decir: http://erp.hwdomain.io/). Verás la página de inicio de sesión de frappeframework.

Introduce el usuario por defecto«Administrador» e introduce la contraseña que has utilizado durante el proceso de creación del sitio/proyecto.

frappeframeowrk login

Ahora selecciona el idioma, la zona horaria y la moneda por defecto. A continuación, haz clic en Siguiente.

configuración básica de erpnext

Introduce el nuevo usuario administrador para tu instalación de ERPNext. Introduce tu nombre completo, dirección de correo electrónico y contraseña, y haz clic en Siguiente.

crear usuario administrador

Introduce el nombre de la empresa y sube el logotipo de tu empresa, luego haz clic en Siguiente.

organización

Introduce detalles sobre tu organización y haz clic en Finalizar configuración.

organización

Ahora deberías ver el panel de administración de tu instalación de ERPNext.

Panel ERPNExt

Protección con certificados SSL/TLS mediante Certbot y Letsencrypt

En este paso, asegurarás la instalación de ERPNext con certificados SSL/TLS que se pueden generar mediante la herramienta Certbot de Letsencrypt. Antes de empezar, asegúrate de que tu nombre de dominio apunta a la dirección IP de tu servidor, y asegúrate de que tienes una dirección de correo electrónico que utilizarás para registrarte en Letsencrypt.

Ejecuta el siguiente comando apt para instalar la herramienta certbot y el plugin certbot para el servidor web Nginx. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

sudo apt install certbot python3-certbot-nginx

Una vez instalado certbot, ejecuta el siguiente comando certbot para generar certificados SSL para tu nombre de dominio ERPNext. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.

sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email protected] -d erp.hwdomain.io

Con esto, la instalación de ERPNext está ahora protegida con certificados SSL/TLS a través de Certbot y Letsencrypt. También has configurado la redirección automática HTTP a HTTPS en tu nombre de dominio ERPNext, que Certbot gestiona automáticamente.

Conclusión

En este tutorial has aprendido a instalar ERPNext, un software ERP de código abierto, en un servidor Debian 11. También has aprendido a instalar algunas dependencias, como Python 3.10, que se instala manualmente compilando e instalando el código fuente. Instalaste otras dependencias en tu servidor Debian, como MariaDB, Nginx, Supervisor, Redis y Fail2ban.

También aprendiste a instalar el framework Frappe y a construir ERPNext sobre él. A continuación, aprendiste la configuración básica de ERPNext como software ERP.

Por último, configuraste ERPNext para producción configurando Nginx como servidor web y Supervisor como gestor de procesos. También aseguraste el uso de ERPNext con Certbot y Letsencrypt.

También te podría gustar...