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_HOSTcon el mismo dominio deTRAEFIK_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-SecurityconincludeSubDomains; 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.