ข้ามไปที่เนื้อหา

การติดตั้ง

หน้านี้จะอธิบายขั้นตอนการติดตั้ง HEMMS แบบครบถ้วนบน host ที่เป็น Linux หรือ macOS ที่มี Docker การติดตั้งอ้างอิงสองชุด — private และ gov — เป็น Compose stack ที่แยกจากกันซึ่งใช้อิมเมจ hemms-odoo:18.0 เดียวกัน เลือก ชุดที่ตรงกับโปรไฟล์ลูกค้า หรือรันทั้งสองชุดเคียงข้างกันบนพอร์ตคนละพอร์ตเพื่อการทดสอบ

กำลังมองหาคู่มือเริ่มต้นใช้งานอยู่หรือ?

เริ่มต้นใช้งาน → การติดตั้ง เป็นคู่มือ แบบเบากว่าซึ่งมุ่งเป้าไปที่ผู้ประเมินระบบ หน้านี้เป็นการติดตั้ง ระดับ operations: ครอบคลุมรายละเอียดที่เกี่ยวข้องกับ production (master password พอร์ต การ mount addons การตรวจสอบ) ที่คู่มือเริ่มต้นใช้งานกล่าวถึงเพียงผ่าน ๆ

ความต้องการของระบบ

ทรัพยากร ขั้นต่ำ (demo) แนะนำ (production)
OS macOS 13+ / Linux (Ubuntu 22.04+ / RHEL 8+) Linux (Ubuntu 22.04 LTS)
Docker 24+ พร้อม Compose v2 24+ พร้อม Compose v2
RAM ว่าง 4 GB 8–16 GB
ดิสก์ ว่าง 10 GB 50+ GB (ฐานข้อมูล + filestore + การสำรองข้อมูลจะโตขึ้น)
CPU 2 คอร์ 4+ คอร์
เครือข่าย HTTPS ขาออกสำหรับดึงอิมเมจ + Google Fonts HTTPS ขาออก รวมถึงขาเข้า 8069/8169 หากเข้าถึงระยะไกล

ไวยากรณ์ของ Docker Compose v2

Makefile และเอกสารชุดนี้ใช้ docker compose (ปลั๊กอิน v2 ที่มี เว้นวรรค) ไม่ใช่ ไบนารี docker-compose แบบเก่า (ที่มีขีดกลาง) หาก docker compose version แสดงข้อผิดพลาด ให้ติดตั้ง Docker Desktop หรือแพ็กเกจ docker-compose-plugin

ขั้นที่ 1 — โคลน repository

git clone https://github.com/jakapolr/hemms-demo.git
cd hemms-demo

repo มาพร้อมทุกสิ่งที่คุณต้องการ: Dockerfile ที่สร้างอิมเมจ Odoo ของ HEMMS (Odoo 18 + Sarabun + Noto Sans Thai) addons ของ OCA ที่ vendor ไว้ทั้งหมดภายใต้ addons/oca/ และโมดูลกำหนดเอง roots_hemms_* ทั้งหมด ภายใต้ addons/roots/

ขั้นที่ 2 — เริ่มต้น sandbox

เลือกโปรไฟล์การติดตั้ง:

make up-private

เปิด hemms_odoo_private (Odoo บน พอร์ต 8069) พร้อมกับ hemms_db_private (Postgres 15)

make up-gov

เปิด hemms_odoo_gov (Odoo บน พอร์ต 8169) พร้อมกับ hemms_db_gov (Postgres 15)

การรันครั้งแรกใช้เวลาสองสามนาที — Docker ต้องสร้างอิมเมจที่กำหนดเอง ดึงฟอนต์ไทยจาก Google Fonts ผ่าน Dockerfile และดึงอิมเมจ postgres:15 การรันครั้งต่อ ๆ ไปจะทันทีเพราะ อิมเมจถูกแคชไว้

ดู log แบบ tail เพื่อยืนยันว่า Odoo บูตเสร็จแล้ว:

make logs-private    # or logs-gov

คุณควรเห็น odoo.modules.loading: Modules loaded. ตามด้วยบรรทัด HTTP listener

ขั้นที่ 3 — ติดตั้งโมดูล HEMMS

Compose stack เริ่ม Odoo ด้วยฐานข้อมูลที่ ว่างเปล่า ขั้นถัดไป จะติดตั้ง leaf module สี่ตัว ซึ่งจะดึงโมดูล roots_hemms_* อื่น ๆ ทุกตัวและ OCA dependency ที่ vendor ไว้ทุกตัวมาด้วยแบบ transitive:

make install-private    # or install-gov

เบื้องหลังนี้จะรัน:

docker compose -f docker-compose.private.yml exec odoo_private \
    odoo -c /etc/odoo/odoo.conf \
    -d hemms_private \
    -i roots_hemms_mass_import,roots_hemms_spare_parts,roots_hemms_signature,roots_hemms_ha_report \
    --stop-after-init
Leaf module ดึง (แบบ transitive)
roots_hemms_mass_import Q6 + roots_hemms_ha_report + roots_hemms_pm + roots_hemms_asset_master
roots_hemms_spare_parts Q2 + roots_hemms_pm + roots_hemms_asset_master + roots_hemms_criticality
roots_hemms_signature Q4 + roots_hemms_asset_inspection + roots_hemms_service_contracts + sign_oca
roots_hemms_ha_report Q5 + roots_hemms_signature + roots_hemms_pm + roots_hemms_asset_inspection

การติดตั้งจะรันครั้งเดียวแล้วออก (--stop-after-init) เริ่ม stack ใหม่เพื่อให้ กระบวนการ Odoo ที่รันยาว ๆ รับรู้โมดูลใหม่:

make down-private && make up-private

ขั้นที่ 4 — เข้าสู่ระบบครั้งแรก

เปิด http://localhost:8069 (private) หรือ http://localhost:8169 (gov)

ข้อมูลรับรอง ค่าเริ่มต้น กำหนดไว้ที่ไหน
ชื่อฐานข้อมูล hemms_private / hemms_gov Makefile (PRIVATE_DB / GOV_DB)
Login admin ค่าเริ่มต้นของ Odoo
รหัสผ่าน admin ค่าเริ่มต้นของ Odoo
Master password (DB Manager) hemms_private_master (private) config/odoo.private.conf (admin_passwd)

เปลี่ยนค่าเริ่มต้นทุกค่าก่อนใช้งานจริง

master password, admin password และข้อมูลรับรอง Postgres ใน repo นี้ เป็นค่าเริ่มต้นสำหรับ demo — เปลี่ยนทั้งหมด ก่อนเปิดให้เข้าถึง instance จาก อะไรก็ตามที่เกินกว่าแล็ปท็อปของคุณ master password อยู่ใน config/odoo.private.conf (และไฟล์เทียบเท่าของ gov) ส่วน Postgres user และรหัสผ่านตั้งไว้ใน docker-compose.private.yml (POSTGRES_USER / POSTGRES_PASSWORD) ทำให้ทั้งสองตรงกันหากคุณเปลี่ยนอันใดอันหนึ่ง

ขั้นที่ 5 — ตรวจสอบการติดตั้ง

หลังเข้าสู่ระบบ:

  1. ไปที่ Settings → Apps ตั้งตัวกรองเป็น Installed และค้นหา roots_hemms คุณควรเห็นโมดูล roots_hemms_* ทั้งสิบตัวพร้อมกับ OCA dependency ของพวกมัน (maintenance_plan, maintenance_stock, sign_oca, ฯลฯ)
  2. เปิดแอป Maintenance คุณควรเห็นเมนูสองภาษา kanban ห้าขั้นตอนแบบ Thai BME (PM Scheduled / Submitted / Pending Review / In Repair / Awaiting Pickup) และเมนูเฉพาะของ HEMMS (Asset Inspection, Service Contracts, HA Report, Mass Import, Spare Parts)
  3. ไปที่ HA Report → Annual Reports โมเดลรายงาน PM ประจำปีของ HA Thailand ควรพร้อมใช้งานพร้อมข้อมูล demo ที่เพาะไว้เมื่อคุณโหลดโปรไฟล์ demo

หากมีโมดูลใดขาดหายไป ให้รัน make install-private ใหม่ และตรวจ log หา traceback

ปัญหาที่พบบ่อย

พอร์ต 8069 / 8169 ถูกใช้อยู่แล้ว

Odoo instance อื่น Airflow หรืออะไรก็ตามที่ผูกกับ :8069 จะทำให้ การเริ่มต้นคอนเทนเนอร์ล้มเหลว ให้หยุดกระบวนการที่ขัดแย้ง หรือแก้ไข การแมป ports: ใน docker-compose.private.yml พอร์ตภายใน ถูกตรึงไว้ที่ 8069 ปรับได้เฉพาะพอร์ตฝั่ง host เท่านั้น

การเชื่อมต่อฐานข้อมูลถูกปฏิเสธ

หาก Odoo บันทึก log ว่า could not connect to server: Connection refused แสดงว่า Postgres ยังเริ่มต้นไม่เสร็จ ไฟล์ Compose ใช้ depends_on: service_started ไม่ใช่ service_healthy ดังนั้นบนดิสก์ที่ช้า Odoo อาจ แซงหน้า ให้รอ 10 วินาทีแล้ว make down-private && make up-private หรือรัน docker logs hemms_db_private เพื่อยืนยันว่า database system is ready to accept connections

ไม่เห็น OCA addons ใน Apps

addons_path ใน config/odoo.private.conf ชี้ไปที่ /mnt/extra-addons/oca,/mnt/extra-addons/roots ไดเรกทอรีนั้นถูก bind- mount มาจาก ./addons หากคุณโคลน repo แล้วแต่ OCA addons ไม่ อยู่ภายใต้ addons/oca/ ให้ตรวจสอบว่าขั้นตอน submodule หรือ vendoring เสร็จสมบูรณ์แล้ว — ดู addons/oca/README.md ใน repo

default_productivity_apps = False

HEMMS ปิดการใช้งานแอป productivity เริ่มต้นของ Odoo (CRM ฯลฯ) อย่างจงใจ ผ่าน config/odoo.private.conf หากคุณต้องการเปิดใช้งานให้ลูกค้า ให้ตั้งกลับเป็น True แล้ว เริ่มใหม่ — อย่า ลบบรรทัดนั้น

การรีเซ็ต sandbox

หากต้องการล้างฐานข้อมูลและ filestore แล้วเริ่มใหม่ทั้งหมด (ทำลายข้อมูลทั้งหมด!):

make reset-private    # or reset-gov

คำสั่งนั้นจะลบ Docker volume (db_private_data, odoo_private_data) และ เริ่ม stack ใหม่ด้วยฐานข้อมูลว่าง คุณจะต้องรัน make install-private ใหม่อีกครั้งหลังจากนั้น

ขั้นตอนถัดไป