Setup Odoo 18 ใน Docker Compose ง่ายๆ ภายในไม่กี่ขั้นตอน

Odoo เป็น ERP/CRM แบบ Open Source ที่ครบเครื่อง ทั้งระบบขาย จัดซื้อ คลังสินค้า บัญชี และอื่นๆ
ในเวอร์ชันล่าสุด Odoo 18 มีฟีเจอร์ใหม่และปรับปรุงหลายอย่าง และเราสามารถติดตั้งให้พร้อมใช้งานได้ง่ายมากผ่าน Docker Compose โดยไม่ต้องลง Python, PostgreSQL หรือ Dependencies ให้ยุ่งยาก

ในบทความนี้ ผมจะแชร์วิธีการ Setup Odoo 18 บนเครื่องของคุณภายในไม่กี่นาทีอย่างแรกที่ต้องมี

1. 📂 สร้างโฟลเดอร์โปรเจกต์

โฟลเดอร์ addons/ คือที่เอาไว้เก็บ โมดูลที่เราสร้างเองหรือโมดูลจากภายนอก ที่ไม่ได้อยู่ในตัว Odoo มาตรฐาน

2. สร้างไฟล์ docker-compose.yml

services:
  db:
    image: postgres:17
    user: root
    environment:
      - POSTGRES_USER=odoo
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_DB=postgres
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data

  odoo:
    image: odoo:18
    container_name: odoo
    user: root
    depends_on:
      - db
    ports:
      - '8069:8069'
    tty: true
    environment:
      - HOST=db
      - USER=odoo
      - PASSWORD=odoo
      - PIP_BREAK_SYSTEM_PACKAGES=1
    volumes:
      - odoo-data:/var/lib/odoo
      - odoo-addons:/mnt/extra-addons
      - ./addons:/mnt/addons

volumes:
  odoo-data:
  odoo-addons:
  db-data:

อธิบายส่วนสำคัญในไฟล์

  • web >> คือ Container ของ Odoo 18
  • db >> คือ Container ของ PostgreSQL ที่ Odoo ใช้เป็นฐานข้อมูล
  • volumes >> ใช้เก็บข้อมูลถาวร แม้ปิด Container ก็ไม่หาย
  • Port 8069 >> คือ Default Port ของ Odoo ที่เราจะใช้เปิดใน Browser

3. สร้างไฟล์ odoo.conf

[options]
addons_path = /mnt/addons,
/mnt/extra-addons
admin_passwd = odoo
data_dir = /var/lib/odoo
log_level = debug

4. สร้างโฟลเดอร์ addons เพื่อจะ custom addons

addons_path >> บอก Odoo ว่าให้ไปโหลดโมดูล (Modules) จาก path ไหนบ้าง

  • /mnt/addons >> เป็น path ของ core modules ที่มาพร้อมกับ Odoo
  • /mnt/extra-addons >> ส่วนนี้มักใช้เก็บ custom modules ที่เราเพิ่มเอง

ถ้า dev คนไหนมีโมดูลที่โหลดจาก Git หรือเขียนเอง ก็ควรโยนไว้ใน extra-addons แล้วใส่ path นี้ลงไปด้วยใน config

admin_passwd >> เป็นรหัสผ่าน master password ที่ใช้เวลา

  • สร้าง/ลบ Database ผ่านหน้าเว็บ Odoo
  • เข้า Dev Mode

อย่าลืมเปลี่ยนรหัสนี้ก่อนขึ้น Production นะครับ ถ้าใช้ odoo เหมือนตัวอย่างนี่คือเปิดประตูให้ใครก็ได้เข้ามาจัดการระบบเลย

data_dir ตำแหน่งที่ Odoo จะใช้เก็บไฟล์ต่างๆ ที่ไม่ใช่ข้อมูลใน DB

  • ไฟล์แนบ (attachments)
  • Binary data
  • Filestore

ถ้าเราย้าย Server แล้ว copy โฟลเดอร์นี้ไปด้วย ก็สามารถ backup ข้อมูลบางส่วนที่ไม่อยู่ใน DB ได้เช่นกัน

log_level ระดับของ log ที่ Odoo จะเขียนออกมาที่ console หรือไฟล์ log

5. รัน Odoo ด้วยคำสั่งเดียว

หลังจากที่เตรียมไฟล์ docker-compose.yml, โฟลเดอร์ addons/, และไฟล์ odoo.conf เรียบร้อยแล้ว
เราสามารถ เริ่มต้นระบบ Odoo ทั้งหมด ได้ด้วยคำสั่งเดียว:

docker compose up -d

5. เมื่อ Container ทำงานแล้ว เปิด Browser ไปที่ http://localhost:8069

พอทุกอย่างเซ็ตครบแล้ว เราก็สามารถสร้าง database ใหม่ หรือจะ restore อันเก่าก็ได้ แล้วก็เริ่มใช้งานหรือจะ custom โมดูลต่างๆ ได้ทันที

Share the Post:

Related Posts

Odoo Budget Control และ Project Accounting สำหรับควบคุมงบ ต้นทุน และรายได้โครงการ

Odoo Budget Control และ Project Accounting: จากการคุมงบ ต้นทุน Job จนถึงการรับรู้รายได้ตาม % Progress

Odoo Budget Control ช่วยให้องค์กรควบคุมงบประมาณ ติดตาม Committed Cost และ Actual Cost พร้อมเชื่อม Accounting, Inventory, Asset, Job Cost และ Project Progress เข้าด้วยกัน บทความนี้อธิบายแนวทางใช้งานจริงตั้งแต่ Budget Control ไปจนถึง Revenue Recognition ตาม % Progress สำหรับธุรกิจที่ทำงานเป็น Project หรือ Job Order

Read More
odoo unit of measure packaging inventory

Odoo Unit of Measure: ขายเป็นชิ้น เป็นโหล เป็น Pack แต่ Stock นับเป็นชิ้นได้อย่างไร?

จัดการสินค้าใน Odoo ได้แม้มีหลายหน่วย ทั้งชิ้น โหล Pack หรือกล่อง เรียนรู้การใช้ Unit of Measure (UoM) และ Packaging เพื่อให้ฝ่ายขายขายเป็น Pack ฝ่ายจัดซื้อซื้อเป็นกล่อง แต่ Inventory ยังคงนับ Stock เป็นชิ้นได้อย่างถูกต้องและเป็นระบบ

Read More