Skip to main content

Odoo

image.png

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

Imagen

Repositorio de Docker Hub:

Portainer- 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 de variables2.15-docker_add_stack_web_editor.gif

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

services:
  db:
    image: postgres:15
    restart: unless-stopped
    env_file:
      - stack.env
    volumes:
      - db:/var/lib/postgresql/data/pgdata
    networks:
      - backend
      
  web:
    image: odoo
    container_name: odoo
    restart: unless-stopped
    env_file:
      - stack.env
    depends_on:
      - db
    volumes:
      - html:/var/lib/odoo
      - config:/etc/odoo
      - addons:/mnt/extra-addons
    ports:
      - "8069:8069"
    networks:
      - backend
      - proxy

volumes:
  db:
  html:
  config:
  addons:

networks:
  backend:
  proxy:
    external: true

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 detrás de un proxy

Crear registro DNS

En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"

NGINX proxy

image.png

Para publicar el contenedor detrás de NGINX proxy, como el stack está en la red proxy solo deberás crear un nuevo host

Crear un nuevo "proxy host"

Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use:

image.png

Publicando con Traefik

traefik-concepts-1.webp

Para publicar el contenedor detrás del proxy Traefik, modificadeberás elañadir al fichero docker-compose.ymlyaml añadiendo las líneassiguientes correspondientes:etiquetas al servicio web

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