Proyecto: Migración de ERP a Microservicios

Docker Compose Apache Reverse Proxy SSL/TLS Raspberry Pi Server

Resumen Técnico: Documentación de la implementación de Odoo ERP mediante arquitectura de contenedores, 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 "Servidor Host - 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=tu_contrasena_segura # Cambiar en producción restart: always db: image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=tu_contrasena_segura # Debe coincidir con la de Odoo - 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 del servidor 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) # Nota: También puedes crearlo desde VS Code y usar la terminal integrada
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 miproyecto-erp.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 # Importante: El dominio (-d) debe coincidir con tu ServerName
sudo certbot --apache -d miproyecto-erp.duckdns.org
# Reiniciar Apache para aplicar cambios
sudo systemctl reload apache2

6. Verificación Final