Skip to main content

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

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

image.png

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


image.png

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