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.
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.
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
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.
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.
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:
Comprueba el servicio Supervisor.
sudo systemctl is-enabled supervisor sudo systemctl status supervisor
Salida:
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.
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.
El servicio Fail2ban está activado y se ejecutará automáticamente al arrancar. Y el estado actual de Fail2ban es en ejecución.
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.
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.
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.
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
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.
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 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
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.
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.
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
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.
Una vez instalado el frappeframework, deberías recibir la siguiente salida al final de la instalación.
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.
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‘.
Y a continuación se muestra el proceso de descarga del 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.
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.
A continuación se muestra la salida una vez finalizada la configuración.
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.
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.
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.
Ahora selecciona el idioma, la zona horaria y la moneda por defecto. A continuación, haz clic en Siguiente.
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.
Introduce el nombre de la empresa y sube el logotipo de tu empresa, luego haz clic en Siguiente.
Introduce detalles sobre tu organización y haz clic en Finalizar configuración.
Ahora deberías ver el panel de administración de tu instalación de 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.