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.

📄 docker-compose.yml
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.

# 1. Crear directorio de trabajo
mkdir -p ~/docker-apps/odoo
cd ~/docker-apps/odoo
# 2. Crear y editar el fichero de configuración (pegar contenido de arriba).. o puedes crear el archivo desde Visual Studio Code. Y meter los comandos por terminal
nano docker-compose.yml
# 3. Arrancar los contenedores en segundo plano (Detached)
docker compose up -d
# 4. Verificar estado y logs
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.

📄 /etc/apache2/sites-available/odoo-docker.conf
<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.

# Generar certificado y configurar redirección HTTPS automática, acuerdate de que debe coincidir con tu URL, o subdominio.
sudo certbot --apache -d pi5odoo.duckdns.org
# Reiniciar Apache para aplicar cambios
sudo systemctl reload apache2

6. Verificación Final