Odoo
Odoo es un software de ERP integrado. Cuenta con una versión "comunitaria" de código abierto bajo licencia LGPLv3 y una versión empresarial bajo licencia comercial que complementa la edición comunitaria con características y servicios comerciales y desarrollada por la empresa belga Odoo S.A.
Enlaces de interés
Open Source ERP and CRM | Odoo
Requisitos Previos
- Docker instalado siguiendo los pasos de instalar Docker.
- Portainer configurado siguiendo los pasos de instalar portainer.
- Traefik configurado siguiendo los pasos de instalar Traefik.
Descargar imagen
Repositorio de Docker Hub:
docker pull postgres
docker pull odoo
Creando directorios
mkdir -pv /var/data/odoo/{pgdata,html,config,addons}
chown -Rv 101:101 /var/data/odoo/{html,config,addons} && chmod -Rv 750 /var/data/odoo/{html,config,addons}
Fichero de variables «.env»
# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=g88E56an^ztwMW
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=db
USER=$POSTGRES_USER
PASSWORD=$POSTGRES_PASSWORD
# traefik variable
DOMAIN=mydomain.com
Fichero docker-compose
version: '3.1'
services:
db:
image: postgres:15
env_file:
- stack.env
volumes:
- /var/data/odoo/pgdata:/var/lib/postgresql/data/pgdata
web:
image: odoo
depends_on:
- db
env_file:
- stack.env
volumes:
- /var/data/odoo/html:/var/lib/odoo
- /var/data/odoo/config:/etc/odoo
- /var/data/odoo/addons:/mnt/extra-addons
ports:
- "8069:8069"
Portainer- Agregar nuevo «stack»
Add a new stack – Portainer Documentation
Web editor
En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero «.env» modificando los valores necesarios
En este punto ya puedes ir a http://my.docker.ip.address:8069
Publicando con Traefik
Para publicar el contenedor detrás del proxy Traefik, modifica el fichero docker-compose.yml añadiendo las líneas correspondientes:
version: '3.1'
services:
db:
image: postgres:15
env_file:
- stack.env
volumes:
- /var/data/odoo/pgdata:/var/lib/postgresql/data/pgdata
networks:
- backend
labels:
- traefik.enable=false
web:
image: odoo
depends_on:
- db
env_file:
- stack.env
volumes:
- /var/data/odoo/html:/var/lib/odoo
- /var/data/odoo/config:/etc/odoo
- /var/data/odoo/addons:/mnt/extra-addons
networks:
- backend
- traefik_public
labels:
- traefik.enable=true
- traefik.http.routers.odoo.rule=Host(`odoo.$DOMAIN`)
- traefik.http.routers.odoo.tls=true
- traefik.http.routers.odoo.tls.certresolver=letsencrypt
networks:
backend:
traefik_public:
external: true

Protegiendo el «stack»
Solo IPs privadas
Para proteger el «stack» de manera que solo accedan las IPs de red privada, modifica en la sección de «labels» del fichero docker-compose.yml la siguiente línea para añadir el «middleware» «privateIPs@file»
- traefik.http.routers.odoo.middlewares=privateIPs@file
Authelia
Para proteger el «stack» con doble factor de autenticación con «Authelia«, modifica en la sección de «labels» del fichero docker-compose.yml la siguiente línea para añadir el «middleware» «authelia@file»
- traefik.http.routers.odoo.middlewares=authelia@file
