Este proyecto entrega un stack productivo 100% dockerizado con estos servicios:
db→ PostgreSQL 16odoo19-web→ HTTP + websocket/geventodoo19-worker→ cron y background, sin HTTPnginx→ reverse proxy; arranca en HTTP temporal y luego pasa a HTTPScertbot→ emisión y renovación de certificados Let's Encryptbackup→ respaldo diario de base de datos y filestore
.
├── docker-compose.yml
├── Dockerfile
├── .env.example
├── requirements.txt
├── config/
│ └── odoo.conf.template
├── docker/
│ └── entrypoint/
│ ├── docker-entrypoint.sh
│ └── render-odoo-config.sh
├── nginx/
│ ├── templates/
│ │ └── default.conf.template
│ └── certs/
├── postgres/
│ └── init/
│ └── 01-init-odoo.sh
├── addons/
│ ├── apps_store/
│ └── manexware/
├── enterprise/
├── scripts/
└── docs/
- Linux x86_64
- Docker Engine
- Docker Compose Plugin
- DNS del dominio apuntando al servidor
- Puertos 80 y 443 abiertos
- Código Enterprise colocado en
./enterprise - Addons personalizados en
./addons/manexware - Addons de terceros en
./addons/apps_store
- Copie
.env.examplea.envy ajuste credenciales y dominio. - Coloque su código Enterprise y addons.
- Levante el stack base en modo HTTP temporal:
Ejecútelo con
./scripts/deploy.sh
basho directamente como binario. No usesh ./scripts/deploy.sh, porque estos scripts usan sintaxis de Bash. - Emita el certificado y cambie nginx a modo HTTPS:
./scripts/issue-cert.sh
- Ingrese a
https://<su-dominio>/web/database/managerpara crear o restaurar su base.
nginx: 80 / 443odoo19-web: 8069 interno, 8072 internoodoo19-worker: sin puertos publicadosdb: sin puerto publicado al host
odoo19-webatiende HTTP y websocket.odoo19-workerejecuta cron/background.- Ambos comparten
odoo-data, por lo que el filestore es único. - El archivo
config/odoo.conf.templatese renderiza automáticamente a/var/lib/odoo/odoo.confal arrancar cada contenedor Odoo. - El stack ya no crea una base de datos Odoo durante el despliegue inicial; la base se crea o restaura después desde el gestor de bases.
- El usuario PostgreSQL configurado para Odoo queda con permiso
CREATEDB, necesario para crear bases desde/web/database/manager. - El servicio
backupgenera un dump PostgreSQL y un archivo comprimido del filestore cada 24 horas. - Para entornos críticos, evalúe evolucionar a backups remotos y PITR.
docs/01_arquitectura.mddocs/02_despliegue.mddocs/03_operacion.mddocs/04_backup_restore.mddocs/05_checklist_go_live.md