From bea58371c11b34fcb242087fe4ecc2f229f03ace Mon Sep 17 00:00:00 2001 From: ActiveBlue Build Date: Sun, 12 Apr 2026 14:17:32 -0400 Subject: [PATCH] chore: add docker and traefik config for ai.activeblue.net --- docker-compose.odoo.yml | 53 ++++++++++++++++++++++++++++++++++++++++ odoo-ai-config/odoo.conf | 24 ++++++++++++++++++ traefik_dynamic_ai.yml | 33 +++++++++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 docker-compose.odoo.yml create mode 100644 odoo-ai-config/odoo.conf create mode 100644 traefik_dynamic_ai.yml diff --git a/docker-compose.odoo.yml b/docker-compose.odoo.yml new file mode 100644 index 0000000..32900a0 --- /dev/null +++ b/docker-compose.odoo.yml @@ -0,0 +1,53 @@ +version: "3.9" + +services: + odoo-ai-web: + image: odoo:18 + depends_on: + odoo-ai-db: + condition: service_healthy + environment: + - HOST=odoo-ai-db + - USER=odoo + - PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./odoo-ai-data:/var/lib/odoo + - ./odoo-ai-config:/etc/odoo + - ./odoo_module:/mnt/extra-addons + ports: [] + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.odoo-ai.rule=Host(`ai.activeblue.net`)" + - "traefik.http.routers.odoo-ai.entrypoints=websecure" + - "traefik.http.routers.odoo-ai.tls.certresolver=le" + - "traefik.http.services.odoo-ai.loadbalancer.server.port=8069" + networks: + - traefik-public + - odoo-ai-internal + + odoo-ai-db: + image: postgres:15 + environment: + - POSTGRES_USER=odoo + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=ai + volumes: + - odoo-ai-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U odoo -d ai"] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + networks: + - odoo-ai-internal + +networks: + traefik-public: + external: true + odoo-ai-internal: + driver: bridge + +volumes: + odoo-ai-db-data: diff --git a/odoo-ai-config/odoo.conf b/odoo-ai-config/odoo.conf new file mode 100644 index 0000000..462d46e --- /dev/null +++ b/odoo-ai-config/odoo.conf @@ -0,0 +1,24 @@ +[options] +; Odoo 18 Community configuration for ai.activeblue.net +addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons +admin_passwd = False +db_host = odoo-ai-db +db_port = 5432 +db_name = ai +db_user = odoo +dbfilter = ^ai$ + +; Performance +workers = 4 +max_cron_threads = 2 +limit_time_cpu = 300 +limit_time_real = 600 +limit_memory_hard = 2684354560 +limit_memory_soft = 2147483648 + +; Proxy +proxy_mode = True + +; Logging +log_level = info +logfile = /var/log/odoo/odoo.log diff --git a/traefik_dynamic_ai.yml b/traefik_dynamic_ai.yml new file mode 100644 index 0000000..2d2c5a3 --- /dev/null +++ b/traefik_dynamic_ai.yml @@ -0,0 +1,33 @@ +# ActiveBlue AI — Traefik dynamic config +# Place this file at: /opt/traefik/dynamic/traefik_dynamic_ai.yml + +http: + routers: + odoo-ai: + rule: "Host(`ai.activeblue.net`)" + entryPoints: + - websecure + tls: + certResolver: le + service: odoo-ai + middlewares: + - odoo-ai-headers + + services: + odoo-ai: + loadBalancer: + servers: + - url: "http://odoo-ai-web:8069" + healthCheck: + path: /web/health + interval: 30s + timeout: 5s + + middlewares: + odoo-ai-headers: + headers: + customRequestHeaders: + X-Forwarded-Proto: "https" + sslRedirect: true + forceSTSHeader: true + stsSeconds: 31536000