Proyecto: Migración de ERP a Microservicios
Docker Compose
Apache Reverse Proxy
SSL/TLS
Raspberry Pi 5 8GB
Resumen Técnico: Documentación de la implementación de Odoo ERP mediante arquitectura de contenedores en Raspberry Pi 5, incluyendo persistencia de datos y seguridad SSL automatizada.
1. Arquitectura Lógica
El sistema desacopla la base de datos de la aplicación mediante una red interna de Docker, exponiendo solo el puerto seguro a internet a través de Apache.
graph LR
User((Usuario Remoto)) -- HTTPS/443 --> Apache[Apache Proxy Inverso]
subgraph "Raspberry Pi 5 - Docker Network"
Apache -- Port 8069 --> Odoo[Contenedor Odoo Web]
Odoo -- Port 5432 --> DB[(Contenedor PostgreSQL)]
end
style Apache fill:#ffecb3,stroke:#fbc02d,stroke-width:2px
style Odoo fill:#e1bee7,stroke:#714b67,stroke-width:2px
style DB fill:#b3e5fc,stroke:#0277bd,stroke-width:2px
2. Infraestructura como Código (Docker Compose)
Definición del stack de servicios. Se utilizan volúmenes nombrados para garantizar que los datos no se pierdan al reiniciar los contenedores.
version: '3.1'
services:
web:
image: odoo:16.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./addons:/mnt/extra-addons
environment:
- HOST=db
- USER=odoo
- PASSWORD=secure_password # tu contraseña segura
restart: always
db:
image: postgres:15
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=secure_password # tu contraseña segura, la misma que en Odoo para conexión
- POSTGRES_USER=odoo
volumes:
- odoo-db-data:/var/lib/postgresql/data
restart: always
volumes:
odoo-web-data:
odoo-db-data:
3. Comandos de Despliegue y Arranque
Pasos ejecutados en la terminal de la Raspberry Pi para levantar la infraestructura.
mkdir -p ~/docker-apps/odoo
cd ~/docker-apps/odoo
nano docker-compose.yml
docker compose up -d
docker compose ps
docker compose logs -f
4. Configuración del Proxy Inverso
Apache gestiona la redirección del subdominio hacia el puerto local de Docker.
<VirtualHost *:80>
ServerName pi5odoo.duckdns.org
# Logs
ErrorLog ${APACHE_LOG_DIR}/odoo-error.log
CustomLog ${APACHE_LOG_DIR}/odoo-access.log combined
# Proxy hacia Docker
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8069/
ProxyPassReverse / http://localhost:8069/
RequestHeader set "X-Forwarded-Proto" "https"
</VirtualHost>
5. Automatización SSL (Certbot)
Comando final para asegurar la conexión y generar certificados.
sudo certbot --apache -d pi5odoo.duckdns.org
sudo systemctl reload apache2
6. Verificación Final
- ✅ Persistencia: Datos de BD seguros en volúmenes Docker.
- ✅ Alta Disponibilidad:
restart: always configurado.
- ✅ Seguridad: HTTPS forzado y aislamiento de red.