Este documento presenta una guía académica y técnica para la implementación de Frappe y ERPNext en entornos basados en contenedores Docker. Su propósito es facilitar la instalación, configuración y despliegue de estas plataformas tanto en entornos de desarrollo como de producción.
Antes de iniciar, asegúrese de contar con los siguientes componentes instalados y configurados en su sistema:
Para obtener información detallada sobre buenas prácticas y fundamentos, consulte la documentación oficial de Docker.
Clone el repositorio oficial del proyecto frappe_docker y acceda al directorio correspondiente:
git clone https://github.com/frappe/frappe_docker
cd frappe_dockerEl archivo principal de configuración es pwd.yml, el cual contiene parámetros relevantes para el despliegue. Se recomienda revisarlo cuidadosamente antes de proceder.
Por defecto, el archivo pwd.yml incluye el valor frontend como dominio por defecto. Si desea configurar un dominio propio, como por ejemplo midominio.pe, modifique la sección de creación del sitio de la siguiente forma:
create-site:
...
command:
...
bench new-site --mariadb-user-host-login-scope='%'
--admin-password=admin
--db-root-username=root
--db-root-password=admin
--install-app erpnext
--set-default midominio.pe;Además, debe actualizar el valor de la variable de entorno FRAPPE_SITE_NAME_HEADER en la sección correspondiente al frontend:
frontend:
...
environment:
...
FRAPPE_SITE_NAME_HEADER: midominio.pehttp:// ni https://.
Ejecute el siguiente comando para levantar los servicios:
docker compose -f pwd.yml up -dEl proceso de creación del sitio ERPNext puede tardar entre 3 y 5 minutos. Se recomienda monitorear los logs del contenedor encargado de la creación del sitio:
docker compose -f pwd.yml logs -f create-siteUna vez completado, podrá acceder al sistema a través del puerto 8080 de su servidor:
- Usuario:
Administrator - Contraseña:
admin
Para entornos de producción, se recomienda utilizar un servidor proxy inverso como Nginx o Apache. Este debe redirigir el tráfico entrante desde su dominio público hacia el contenedor que ejecuta Frappe/ERPNext. Ejemplo con Nginx:
server {
listen 80;
server_name midominio.pe;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /socket.io/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:8080/socket.io/;
}
}El correcto funcionamiento de los módulos de notificación requiere configurar un servidor SMTP. Para ello, es necesario habilitar en el servidor los puertos adecuados (dependiendo del proveedor de correo), tales como: 25, 465, 587, o 993.
ERPNext utiliza WebSockets a través de Socket.IO para gestionar comunicaciones en tiempo real (por ejemplo, notificaciones y actualización dinámica de datos). Por ello, es fundamental que el servidor proxy permita conexiones persistentes en la ruta /socket.io/, como se mostró en la configuración de Nginx.
- Utilizar certificados SSL mediante Certbot o servicios de gestión de certificados (ejemplo: Let's Encrypt).
- Configurar reglas de firewall estrictas para exponer únicamente los puertos necesarios.
- Mantener los contenedores y dependencias actualizadas.
Para el primer acceso al sistema, las credenciales por defecto son:
- Usuario:
Administrator - Contraseña:
admin
Es altamente recomendable cambiar la contraseña de administrador inmediatamente después de la primera autenticación.
-
Reiniciar servicios en caso de error:
docker compose -f pwd.yml restart
-
Actualizar imágenes del contenedor:
docker compose -f pwd.yml pull docker compose -f pwd.yml up -d --build
-
Verificar estado de contenedores:
docker ps
Para acceder a la base de datos tiene dos opciones:
-
Conectandose a travez de un cliente de base de datos que soporte MySql/MariaDB con opciones de SSH mediante al puerto expuesto por el contenedor (revisar el archivo
pwd.ymlpuerto expuesto por defecto 3306). -
Entrando directamente al contenedor ej:
# listar los contenedores $ sudo docker ps -a # identificar el contenedor de mariadb $ 6242343232 mariadb:10.6 "docker-entrypoint.s…" # acceder a el por su id en este caso 6242343232 $ sudo docker exec -it 6242343232 /bin/bash # una vez dentro se puede usar los comandos # basicos para conectarse con el cliente de mysql $ mysql -u root -p # luego le pedira la contraseña revise # el archivo pwd.yml las secciones donde # se especifican las credenciales de # acceso a la base de datos. MariaDB [(none)]> show databases; # listar bases de datos +--------------------+ | Database | +--------------------+ | _5e5899d8398b5f7b | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.002 sec) # usar la base de datos. MariaDB [(none)]> use _5e5899d8398b5f7b; # listar las tablas en la base de datos MariaDB [_5e5899d8398b5f7b]> show tables; +---------------------------------------------------+ | Tables_in__5e5899d8398b5f7b | +---------------------------------------------------+ | __Auth | | __UserSettings | | __global_search | | bisect_nodes_id_seq | ``
- Autor: Ing. de Software Julian Martinez Lero
- Contacto: julian.martinezlero@gmail.com
Este documento está diseñado con fines académicos y prácticos, buscando proveer una guía clara, estructurada y segura para la implementación de Frappe/ERPNext en contenedores Docker.