Instalar ERPNext con Docker

Sigue la guía de los stacks de Docker para instalar ERPNext con nuestro stack y ten en cuenta lo propio de esta plataforma. El detalle completo está en el README del repositorio.

Recursos

El stack necesita unos 3,5 GB de disco para las imágenes y 2 GB de RAM o más. En reposo usa unos 780 MiB en total (unos 280 MiB Gunicorn y 250 MiB MariaDB, y el resto los workers, el scheduler, Socket.IO, Redis, Caddy y nginx). El primer arranque tarda cerca de un minuto y medio.

Variables obligatorias

Variable Qué debe contener
ERPNEXT_URL URL pública de tu ERP, por ejemplo https://erp.example.com.
ERPNEXT_HOST El nombre de host de ERPNEXT_URL, por ejemplo erp.example.com. Los PDF cargan sus estilos e imágenes a través de la URL pública.
SITE_ADDRESS El dominio de tu ERP, por ejemplo erp.example.com.
DB_ROOT_PASSWORD Contraseña de root de MariaDB.
ERPNEXT_ADMIN_PASSWORD Contraseña del usuario Administrator y del primer usuario. Esta contraseña y ERPNEXT_ADMIN_EMAIL solo se usan en la instalación inicial: cambiarlos después en el .env no modifica las cuentas.
ERPNEXT_ADMIN_EMAIL Correo real del primer usuario (no admin@example.com, al que Frappe nunca envía correos).
SMTP_HOST Recomendada: el stack arranca sin ella, pero la plataforma no podrá enviar correos. Servidor SMTP. Completa también SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASSWORD y SMTP_FROM según tu proveedor. Sin SMTP_HOST (ni una Email Account en ERPNext), ERPNext no puede enviar documentos, recuperaciones de contraseña ni notificaciones.

Configuración inicial

La empresa se crea configurada para Chile (país Chile, moneda CLP, idioma es-CL y zona horaria America/Santiago), con el plan de cuentas Standard (Chile no tiene uno verificado en ERPNext) y el año fiscal comenzando el 01-01. Estos ajustes de la empresa son opcionales. Si quieres, cambia ERPNEXT_COMPANY_NAME (por defecto My Company) y ERPNEXT_COMPANY_ABBR (la abreviatura que se agrega a los nombres de cuentas y bodegas, por defecto MC) y, si operas en otro país, también ERPNEXT_COUNTRY (el nombre del país en ERPNext, no su código ISO), ERPNEXT_CURRENCY, ERPNEXT_TIMEZONE, ERPNEXT_LANG, ERPNEXT_CHART_OF_ACCOUNTS y ERPNEXT_FISCAL_YEAR_START antes del primer arranque: estos valores solo se aplican en la instalación inicial y después se modifican desde ERPNext.

No cambies ERPNEXT_SITE (el nombre interno del sitio) después de la primera instalación.

Acceso

Cuando setup termina, ERPNext queda disponible en tu dominio. Puedes entrar con el correo de ERPNEXT_ADMIN_EMAIL (un System Manager) o con el usuario Administrator, ambos con la contraseña de ERPNEXT_ADMIN_PASSWORD.

Actualizaciones

ERPNext se actualiza cambiando ERPNEXT_VERSION en el .env (no solo en la línea de comandos) y ejecutando docker compose up -d: setup vacía la caché de Redis y ejecuta bench migrate, también entre versiones mayores (por ejemplo, de v15 a v16). Respalda antes. Mientras setup migra, el sitio no responde (error 502); una imagen más antigua que el sitio se rechaza.

Si la migración falla, los servicios de la aplicación no arrancan: corrige la causa y vuelve a ejecutar docker compose up -d (bench migrate continúa), o vuelve a la ERPNEXT_VERSION anterior y restaura el respaldo tomado antes de actualizar.

Restaurar un respaldo

Los respaldos incluyen la base de datos, los archivos públicos y privados, y la configuración del sitio con la clave que cifra las contraseñas guardadas. Para restaurar uno:

docker compose stop backend websocket frontend queue-short queue-long scheduler
docker compose run --rm --no-deps backup restore <fecha>
docker compose up -d

La restauración ejecuta bench migrate, así que también sirve para un respaldo de una versión anterior o para llevarlo a un servidor nuevo con una instalación limpia del stack.

Notas

  • Detrás de Traefik, además de las variables que indica la guía general, deja ERPNEXT_HOST con el mismo dominio de TRAEFIK_HOST: los PDF cargan sus estilos e imágenes a través de él.
  • El servidor de correo que configura el stack admite STARTTLS (SMTP_SECURE=tls, el valor por defecto, puerto 587), pero no SMTPS (puerto 465); para eso, agrega una Email Account en ERPNext. Los correos se envían desde la cola cada 4 minutos.
  • El nginx de ERPNext envía Strict-Transport-Security con includeSubDomains; preload: por HTTPS, se aplica a todos los subdominios del dominio del sitio.

Siguiente paso

Con ERPNext funcionando, configúralo como origen de datos en BillMySales siguiendo la configuración inicial.

En esta página

Última actualización el 25/09/2026 por Anonymous