---
title: "Instalación con Docker"
description: "Instalar ERPNext con Docker"
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-09-25"
last_update: "2026-09-25"
time_minutes: 4
draft: false
unlisted: false
url: "https://www.billmysales.com/docs/datasources/erpnext/docker"
---

# Instalar ERPNext con Docker

Sigue la [guía de los stacks de Docker](https://www.billmysales.com/docs/stacks) para instalar ERPNext con nuestro [stack](https://github.com/BillMySales/billmysales-docker-erpnext) 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:

```shell
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](https://www.billmysales.com/docs/datasources/erpnext/configuracion-inicial).



---
Última actualización el 25/09/2026

