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

# Instalar OpenCart con Docker

Sigue la [guía de los stacks de Docker](https://www.billmysales.com/docs/stacks) para instalar OpenCart con nuestro [stack](https://github.com/BillMySales/billmysales-docker-opencart) y ten en cuenta lo propio de esta plataforma. El detalle completo está en el README del repositorio.

## Recursos

En reposo el stack usa unos 17 MiB en Caddy, entre 20 y 40 MiB en PHP-FPM y unos 120 MiB en MariaDB. El primer `up` construye la imagen de OpenCart, porque compila las extensiones de PHP.

## Variables obligatorias

| Variable | Qué debe contener |
|---|---|
| `OC_URL` | URL pública de la tienda, por ejemplo `https://tienda.example.com`. |
| `SITE_ADDRESS` | El dominio de la tienda, por ejemplo `tienda.example.com`. |
| `DB_PASSWORD` y `DB_ROOT_PASSWORD` | Contraseñas de la base de datos. |
| `OC_ADMIN_PASSWORD` y `OC_ADMIN_EMAIL` | Contraseña y correo del administrador. Solo se usan al instalar (igual que `OC_ADMIN_USER`): si los cambias después en el `.env`, la cuenta no cambia (hazlo desde el back office). |
| `OC_ADMIN_DIR` | Nombre del directorio del back office. Usa uno difícil de adivinar, por ejemplo `admin-$(openssl rand -hex 4)`. |
| `SMTP_HOST` | **Recomendada:** el stack arranca sin ella, pero la plataforma no podrá enviar correos. Servidor SMTP. Completa también `SMTP_PORT`, `SMTP_SECURE` (por defecto `tls`), `SMTP_USER`, `SMTP_PASSWORD` y `SMTP_FROM`. El cliente SMTP de OpenCart exige usuario y contraseña. |

## Configuración inicial de la tienda

La tienda se crea configurada para Chile (país `CL`, región `RM`, moneda `CLP` y zona horaria `America/Santiago`). Si vendes en otro país, cambia `OC_COUNTRY`, `OC_ZONE`, `OC_CURRENCY`, `OC_CURRENCY_TITLE` y `PHP_TIMEZONE` (y el nombre en `OC_STORE_NAME`) **antes** del primer arranque: estos valores solo se aplican en la instalación inicial y después se modifican desde el back office. `PHP_TIMEZONE` además define la zona horaria de PHP en cada arranque. La moneda configurada queda como la única habilitada.

El instalador de OpenCart siempre carga su catálogo de ejemplo (categorías, productos y fabricantes); elimínalo desde el back office si no lo necesitas. Solo viene instalado el inglés: otros idiomas son extensiones del marketplace de OpenCart.

## Acceso

Cuando `setup` termina, la tienda queda disponible en tu dominio y el back office en `/<OC_ADMIN_DIR>/`, con el usuario `admin` (configurable con `OC_ADMIN_USER`). Puedes cambiar el nombre del directorio en cualquier momento: `setup` lo renombra en el siguiente `up`.

## Actualizaciones

OpenCart se actualiza desde el back office (**Maintenance > Upgrade**), que modifica los archivos del volumen `code`. `OC_VERSION` solo se usa al crear el volumen. Respalda antes de actualizar.

## Restaurar un respaldo

Los respaldos incluyen la base de datos, el código, las imágenes, las extensiones y el almacenamiento de la tienda, sin cachés ni sesiones. Para restaurar uno:

```shell
docker compose stop opencart cron
docker compose run --rm --no-deps backup restore <fecha>
docker compose start opencart cron
```

## Notas

- Los archivos `config.php` se generan en cada arranque a partir del `.env`: cambia el `.env`, no esos archivos.
- La opción "Forgotten password" del back office no funciona en OpenCart 4.1.0.4 (siempre responde que el correo no existe). Cambia la contraseña de un administrador desde **Users** en el back office o directamente en la base de datos.

## Siguiente paso

Con la tienda funcionando, instala el plugin de BillMySales y conéctalo a tu pasarela de facturación siguiendo la [configuración inicial](https://www.billmysales.com/docs/datasources/opencart/configuracion-inicial).



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

