Instalar Odoo 13 con Traefik


Traefik tiene muchas ventajas a la hora de instalar y trabajar con Odoo... una de ellas es que te instala los certificados SSL de una forma más
fácil y obvias la compleja instalación del NGINX

Crea una carpeta llamada app con:

cd /
mkdir app
cd app

Crea ahí dentro un fichero llamado .env con 

sudo nano .env

ODOO_USER=odoo
ODOO_PASS=odoo
ODOO_TRAEFIK_URL=www.midominio.com    
TRAEFIK_DEFAULT_DOMAIN=www.midominio.com
ACME_EMAIL=pepe@midominio.com

Crea una carpeta llamada odoo/config

mkdir -p odoo/config

Crea un fichero llamado odoo.conf con:

sudo nano odoo/config/odoo.conf

y escribe:

[options]
addons_path = /mnt/extra-addons
csv_internal_sep = ,
data_dir = /var/lib/odoo
db_host = db
db_maxconn = 64
db_name = False
db_password = odoo
db_port = 5432
db_sslmode = prefer
db_template = template0
db_user = odoo
dbfilter =
demo = {}
email_from = False
geoip_database = /usr/share/GeoIP/GeoLite2-City.mmdb
http_enable = True
http_interface =
http_port = 8069
import_partial =
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 3600
limit_time_real = 3600
limit_time_real_cron = -1
list_db = True
log_db = False
log_db_level = warning
log_handler = :INFO
log_level = debug
logfile = /var/log/odoo/odoo.log
logrotate = True
longpolling_port = 8072
max_cron_threads = 2
osv_memory_age_limit = 1.0
osv_memory_count_limit = False
pg_path = None
pidfile = None
proxy_mode = 1
reportgz = False
server_wide_modules = base,web
smtp_password = False
smtp_port = 25
smtp_server = localhost
smtp_ssl = False
smtp_user = False
syslog = False
test_enable = False
test_file = False
test_tags = None
translate_modules = ['all']
unaccent = False
without_demo = False
workers = 2


Fijate en el usuario y clave que he puesto

Ahora escribe el fichero docker-compose.yml con

sudo nano docker-compose.yaml

version: "3.8" 
services:
  odoo:
    image: odoo:13.0
    container_name: odoo13
    depends_on:
      - db
    ports:
      - "8069:8069"
    tty: true
    command: -- --dev=reload
environment: - HOST=db - USER=${ODOO_USER} - PASSWORD=${ODOO_PASS} volumes: - /app/extra-addons:/mnt/extra-addons # Directorio para dejar los modulos: /app/extra-addons - /app/odoo/config:/etc/odoo restart: always # run as a service labels: - 'traefik.http.routers.odoo.rule=Host(`www.midominio.com`,`midominio.com`)' - 'traefik.http.routers.odoo.entrypoints=websecure' - 'traefik.http.routers.odoo.tls.certresolver=odoo' - "traefik.http.services.odoo.loadbalancer.server.port=8069" - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)" - "traefik.http.routers.http-catchall.entrypoints=web" - "traefik.http.routers.http-catchall.middlewares=redirect-to-https@docker" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" db: image: postgres:9.5 container_name: pstgres95 environment:  - POSTGRES_DB=postgres - POSTGRES_USER=${ODOO_USER} - POSTGRES_PASSWORD=${ODOO_PASS} ports: # <Puerto expuesto> : < Puerto dentro del container>  # Solo para desarrollo. Comentar en produccion - '5432:5432' expose: # Abre el puerto 5432 en el container al exterior sin tocar nada de la configuración del postgresql  # Solo para desarrollo. Comentar en produccion  - '5432' restart: always # run as a service traefik: image: traefik:v2.5 restart: unless-stopped ports: # The HTTP port - "80:80" - "443:443" # The Web UI (enabled by --api.insecure=true) - "8080:8080" volumes: - "./traefik/letsencrypt:/letsencrypt" - "./traefik/traefik.yml:/etc/traefik.yml" - "/var/run/docker.sock:/var/run/docker.sock" command: - "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker" - "--providers.docker.defaultRule=Host(`{{ trimPrefix `/` .Name }}.midominio.com`)" - "--entryPoints.web.address=:80" - "--entryPoints.websecure.address=:443" - "--certificatesResolvers.odoo.acme.httpchallenge=true" - "--certificatesresolvers.odoo.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.odoo.acme.email=pepe@midominio.com" - "--certificatesresolvers.odoo.acme.storage=/letsencrypt/acme.json" portainer: image: portainer/portainer-ce:2.11.1 command: -H unix:///var/run/docker.sock restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data labels: # Frontend - "traefik.enable=true" - "traefik.http.routers.frontend.rule=Host(`portainer.midominio.com`)" - "traefik.http.routers.frontend.entrypoints=websecure" - "traefik.http.services.frontend.loadbalancer.server.port=9000" - "traefik.http.routers.frontend.service=frontend" - "traefik.http.routers.frontend.tls.certresolver=odoo" # Edge - "traefik.http.routers.edge.rule=Host(`edge.midominio.com`)" - "traefik.http.routers.edge.entrypoints=websecure" - "traefik.http.services.edge.loadbalancer.server.port=8000" - "traefik.http.routers.edge.service=edge" - "traefik.http.routers.edge.tls.certresolver=odoo" volumes: portainer_data:
Finalmente puedes lanzarlo con docker-compose up -d

Y mirar el log por si hay algun problema en: docker-compose logs