ERP
    • ERP Frontend
    • ERP Backend
    • ERP Custom modules

    ERP Backend

    Tài liệu Backend (Odoo)#

    Tổng quan#

    Dự án Backend là Odoo 17 (Python) chạy theo mô hình 3-tier và được dựng môi trường dev bằng Docker Compose.
    Odoo app server: xử lý HTTP/Web, business logic, ORM, jobs/crons.
    PostgreSQL: lưu dữ liệu nghiệp vụ.
    Nginx proxy: reverse proxy để hỗ trợ longpolling/websocket và proxy header.

    Cấu trúc thư mục (liên quan BE)#

    odoo-server/: mã nguồn core Odoo (upstream).
    addons/: custom modules (extra addons).
    config/odoo.conf: cấu hình Odoo (DB, ports, addons_path, workers...).
    docker/docker-compose.yml: docker stack (web + postgres + nginx proxy).
    docker/config/odoo-nginx.conf: cấu hình reverse proxy.
    run_script.sh: script chạy docker compose.

    Cách chạy (dev)#

    Yêu cầu#

    Docker + Docker Compose

    Start stack#

    Tạo network external (được compose tham chiếu):
    Chạy stack:
    Tương đương:

    Ports quan trọng#

    Odoo (qua Nginx): http://localhost:8069
    Longpolling: được proxy qua http://localhost:8069/longpolling (upstream web:8072)
    Postgres (host): localhost:5433 → container 5432
    Debugpy (nếu dùng): localhost:5680

    Cấu hình Odoo#

    File cấu hình#

    Cấu hình chính nằm ở config/odoo.conf và được mount vào container web theo đường dẫn /etc/odoo/odoo.conf.
    Các điểm đáng chú ý:
    addons_path: /mnt/extra-addons,/var/lib/odoo/addons
    /mnt/extra-addons được mount từ ../addons
    db_name: db_core
    dbfilter: ^db_core$ (chỉ cho phép DB đúng tên)
    proxy_mode: True (phù hợp khi chạy sau Nginx)
    http_port: 8069
    gevent_port: 8072 (longpolling)
    workers: 5 (chạy multi-worker)

    Lưu ý bảo mật (dev-only)#

    config/odoo.conf đang chứa admin_passwd và thông tin DB. Nếu dùng ngoài dev, nên chuyển sang secret/ENV và không commit giá trị thật.
    docker/docker-compose.yml có POSTGRES_HOST_AUTH_METHOD=trust (không an toàn) — chỉ nên dùng cho môi trường dev.

    Database (PostgreSQL)#

    Thông số kết nối (theo compose + odoo.conf)#

    Host (từ Odoo container): winads_db_postgres
    Port: 5432
    User: odoo
    Password: odoo16@2022
    DB mặc định: postgres (service) và Odoo dùng DB db_core (cấu hình db_name)

    Kết nối từ máy host#

    Do compose map 5433:5432, kết nối host dùng:
    host: localhost
    port: 5433

    Reverse proxy (Nginx)#

    File docker/config/odoo-nginx.conf cấu hình:
    / → upstream web:8069 (odoo-backend)
    /longpolling → upstream web:8072 (odoo-lp)
    Có thêm route /vue → upstream frontend:5173 (nếu có service frontend trong stack khác hoặc compose mở rộng)

    API / Endpoints backend#

    Odoo cung cấp các endpoint chuẩn, thường được FE/3rd-party tích hợp:
    Web UI & HTTP controllers: GET/POST / và các route dạng /web/*
    JSON-RPC (Odoo Web client):
    POST /web/session/authenticate
    POST /web/dataset/call_kw
    POST /web/dataset/search_read
    POST /web/webclient/version_info
    XML-RPC (tuỳ cấu hình/enable):
    Thường dùng /xmlrpc/2/common, /xmlrpc/2/object
    Repo có ghi chú xmlrpc_port nhưng đang comment trong config/odoo.conf
    Gợi ý kiểm tra nhanh khi stack đang chạy:

    Dev workflow#

    Auto-reload khi dev addons#

    Repo có hướng dẫn dùng watchmedo để auto-restart khi code trong addons/ đổi (chạy trong container web):
    Lưu ý thay -d db_core theo DB local nếu khác.
    Ví dụ (tham khảo):

    Debug với VSCode (debugpy)#

    Image docker/Dockerfile-odoo đã cài debugpy. Bạn có thể attach debugger vào container theo cấu hình launch.json mà repo đang ghi trong README.md.

    Custom modules (addons)#

    Custom module nằm trong addons/. Ví dụ cấu trúc theme module:
    static/: assets (js/scss/images/snippets)
    views/: QWeb templates / views
    models/: python models (ORM)
    __manifest__.py: metadata module

    i18n/Translation#

    Repo đã có hướng dẫn tạo và export .po trong README.md. Khi viết module mới, đặt file dịch ở:
    your_module/i18n/vi.po

    Troubleshooting nhanh#

    Không vào được UI: kiểm tra proxy container map port 8069 và web container health/log.
    Không nhận longpolling: kiểm tra upstream web:8072 và route /longpolling trong Nginx.
    Odoo không thấy custom addons: kiểm tra mount ../addons:/mnt/extra-addons và addons_path trong config/odoo.conf.
    Không connect DB: kiểm tra winads_db_postgres up, và port mapping 5433:5432 (host) vs 5432 (trong network docker).
    Ngày cập nhật 2026-04-09 07:47:30
    Trước
    ERP Frontend
    Tiếp theo
    ERP Custom modules
    Built with