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.comTRAEFIK_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:
Y mirar el log por si hay algun problema en: docker-compose logs