Có bản đồ trong đầu từ phần 3 rồi, giờ ta dựng một Odoo 19 của riêng mình để nghịch thoải mái. Cách gọn nhất, sạch máy nhất là dùng Docker — và tin vui là bạn chỉ cần một file cấu hình với đúng một câu lệnh.

Vì sao Docker mà không cài trực tiếp

Odoo cần hai thứ chạy cùng nhau: bản thân Odoo và một cơ sở dữ liệu PostgreSQL. Cài tay cả hai lên máy Windows/Mac thì lỉnh kỉnh, dễ đụng phiên bản, và lúc muốn gỡ đi thì rác còn vương khắp nơi. Docker đóng mỗi thứ vào một "hộp" (container) riêng:

  • Sạch máy: không cài Python/Postgres lung tung vào hệ điều hành.
  • Xoá làm lại trong vài giây: nghịch hỏng thì down rồi up lại.
  • Giống hệt máy tôi: bạn làm theo sẽ ra đúng kết quả trong bài.

Việc chuẩn bị duy nhất: cài Docker Desktop (Mac/Windows) hoặc Docker Engine (Linux) và mở nó lên. Gõ thử docker version thấy có phản hồi là xong.

Bước 1 — Một file docker-compose.yml

Tạo một thư mục trống, ví dụ odoo19/, rồi tạo trong đó file docker-compose.yml với nội dung:

services:
  odoo19-db:
    image: postgres:16
    container_name: odoo19-db
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=odoo
      - POSTGRES_PASSWORD=odoo
    volumes:
      - odoo19-db-data:/var/lib/postgresql/data
  odoo19:
    image: odoo:19
    container_name: odoo19
    depends_on: [odoo19-db]
    ports:
      - "127.0.0.1:8069:8069"
    environment:
      - HOST=odoo19-db
      - USER=odoo
      - PASSWORD=odoo
    volumes:
      - odoo19-web-data:/var/lib/odoo
volumes:
  odoo19-db-data:
  odoo19-web-data:

Đọc nhanh để hiểu, không cần thuộc:

  • odoo19-db là container PostgreSQL 16 — cái tủ chứa toàn bộ dữ liệu.
  • odoo19 là container Odoo 19. Ba biến HOST/USER/PASSWORD bảo Odoo tìm database ở đâu, tên đăng nhập và mật khẩu nào — phải khớp với ba dòng của Postgres phía trên.
  • ports: "127.0.0.1:8069:8069" mở cổng 8069 để bạn vào Odoo qua trình duyệt. Đặt 127.0.0.1 nghĩa là chỉ máy bạn vào được, người ngoài mạng không chạm tới — an toàn cho bản chạy thử.
  • volumes giữ dữ liệu lại kể cả khi container bị xoá và dựng lại.

Bước 2 — Một câu lệnh để chạy

Mở terminal ngay trong thư mục vừa tạo, gõ:

docker compose -p odoo19 up -d

Lần đầu, Docker sẽ tải image odoo:19 và postgres:16 về (khoảng vài trăm MB, đợi một chút). Xong, cả hai container bật lên ở chế độ nền:

Terminal: docker compose up khởi động 2 container, docker ps hiện odoo19 và odoo19-db đang chạy

Hình 1: Sau up -d, lệnh docker compose -p odoo19 ps cho thấy odoo19 (image odoo:19) đang chạy và mở cổng 127.0.0.1:8069, cùng odoo19-db (image postgres:16). Hai container này là toàn bộ hệ thống Odoo của bạn.

Vài lệnh hữu ích cho về sau, gõ trong cùng thư mục:

docker compose -p odoo19 ps       # xem đang chạy gì
docker compose -p odoo19 logs -f  # xem log Odoo (Ctrl+C để thoát)
docker compose -p odoo19 stop     # tạm dừng
docker compose -p odoo19 up -d    # bật lại
docker compose -p odoo19 down     # tắt và xoá container (dữ liệu vẫn còn nhờ volume)

Bước 3 — Mở Odoo trên trình duyệt

Vào địa chỉ http://localhost:8069. Nếu máy đã có sẵn một database, Odoo đưa bạn tới màn hình đăng nhập:

Màn hình đăng nhập Odoo tiếng Việt: ô Email, Mật khẩu và nút Đăng nhập

Hình 2: Màn hình đăng nhập Odoo 19. Thấy được nó nghĩa là máy chủ web đã chạy ngon. Ở góc dưới có "Quản lý cơ sở dữ liệu" — chính là trang bạn đã gặp ở phần 2.

Một lưu ý thật thà: nếu đây là lần đầu hoàn toàn, chưa có database nào, thì Odoo sẽ không đưa bạn tới màn hình đăng nhập mà tới màn hình tạo database — vì chưa có "tủ hồ sơ" nào để đăng nhập vào. Bước tạo database đó (đặt tên, đặt mật khẩu chủ, chọn có nạp dữ liệu mẫu hay không) tôi để dành nguyên phần 5 làm cho kỹ, vì nó có vài lựa chọn quan trọng cần hiểu đúng ngay từ đầu.

Nếu gặp trục trặc

  • Cổng 8069 bận (máy đang chạy Odoo khác): đổi dòng ports thành "127.0.0.1:8070:8069" rồi vào localhost:8070.
  • Trang trắng / lỗi kết nối lúc mới bật: Odoo cần vài giây để khởi động sau up. Chờ 5–10 giây rồi tải lại. Xem logs -f để biết nó đã sẵn sàng chưa.
  • Cannot connect to the Docker daemon: Docker Desktop chưa mở — mở nó lên rồi thử lại.

Xong bài này, bạn đã có một Odoo 19 chạy thật trên máy, sạch sẽ, xoá-làm-lại dễ dàng. Phần sau ta tạo cơ sở dữ liệu đầu tiên và đăng nhập vào bên trong.