การติดตั้ง¶
หน้านี้จะอธิบายขั้นตอนการติดตั้ง 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¶
repo มาพร้อมทุกสิ่งที่คุณต้องการ: Dockerfile ที่สร้างอิมเมจ Odoo ของ HEMMS (Odoo 18 + Sarabun + Noto Sans Thai) addons ของ OCA ที่ vendor ไว้ทั้งหมดภายใต้ addons/oca/ และโมดูลกำหนดเอง roots_hemms_* ทั้งหมด ภายใต้ addons/roots/
ขั้นที่ 2 — เริ่มต้น sandbox¶
เลือกโปรไฟล์การติดตั้ง:
การรันครั้งแรกใช้เวลาสองสามนาที — Docker ต้องสร้างอิมเมจที่กำหนดเอง ดึงฟอนต์ไทยจาก Google Fonts ผ่าน Dockerfile และดึงอิมเมจ postgres:15 การรันครั้งต่อ ๆ ไปจะทันทีเพราะ อิมเมจถูกแคชไว้
ดู log แบบ tail เพื่อยืนยันว่า Odoo บูตเสร็จแล้ว:
คุณควรเห็น odoo.modules.loading: Modules loaded. ตามด้วยบรรทัด HTTP listener
ขั้นที่ 3 — ติดตั้งโมดูล HEMMS¶
Compose stack เริ่ม Odoo ด้วยฐานข้อมูลที่ ว่างเปล่า ขั้นถัดไป จะติดตั้ง leaf module สี่ตัว ซึ่งจะดึงโมดูล roots_hemms_* อื่น ๆ ทุกตัวและ OCA dependency ที่ vendor ไว้ทุกตัวมาด้วยแบบ transitive:
เบื้องหลังนี้จะรัน:
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 ที่รันยาว ๆ รับรู้โมดูลใหม่:
ขั้นที่ 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 — ตรวจสอบการติดตั้ง¶
หลังเข้าสู่ระบบ:
- ไปที่ Settings → Apps ตั้งตัวกรองเป็น Installed และค้นหา
roots_hemmsคุณควรเห็นโมดูลroots_hemms_*ทั้งสิบตัวพร้อมกับ OCA dependency ของพวกมัน (maintenance_plan,maintenance_stock,sign_oca, ฯลฯ) - เปิดแอป Maintenance คุณควรเห็นเมนูสองภาษา kanban ห้าขั้นตอนแบบ Thai BME (PM Scheduled / Submitted / Pending Review / In Repair / Awaiting Pickup) และเมนูเฉพาะของ HEMMS (Asset Inspection, Service Contracts, HA Report, Mass Import, Spare Parts)
- ไปที่ 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 แล้วเริ่มใหม่ทั้งหมด (ทำลายข้อมูลทั้งหมด!):
คำสั่งนั้นจะลบ Docker volume (db_private_data, odoo_private_data) และ เริ่ม stack ใหม่ด้วยฐานข้อมูลว่าง คุณจะต้องรัน make install-private ใหม่อีกครั้งหลังจากนั้น
ขั้นตอนถัดไป¶
- การตั้งค่าครั้งแรก — การตั้งค่า Odoo เริ่มต้น (timezone ภาษา ข้อมูล demo)
- ผู้ใช้และสิทธิ์การเข้าถึง — นำบุคลากรของโรงพยาบาลเข้าระบบ
- การสำรองข้อมูลและการกู้คืน — ตั้งค่าการสำรองข้อมูลรายคืน ก่อน การเปิดใช้งานจริงครั้งแรก
- คู่มือการอัปเกรด — รักษาการติดตั้งให้ทันสมัย