การติดตั้ง Odoo เพื่อทดลองใช้งานอาจใช้เวลาไม่นาน แต่การติดตั้งเพื่อให้บริการจริงในองค์กรมีรายละเอียดมากกว่าการทำให้หน้า Login เปิดได้ เพราะต้องวางแผนทั้งฐานข้อมูล พื้นที่เก็บไฟล์ Domain, SSL, Backup, Security, Monitoring และวิธีอัปเดตระบบในอนาคต
องค์กรบางแห่งต้องการเก็บข้อมูลไว้ภายในบริษัท จึงเลือกติดตั้งแบบ On-Premise ขณะที่หลายบริษัทเลือกใช้ Public Cloud เช่น AWS, Microsoft Azure, Google Cloud หรือผู้ให้บริการ Cloud ในประเทศไทย เพื่อให้ขยายทรัพยากรได้ง่ายขึ้น ส่วนองค์กรที่มีข้อกำหนดด้านความปลอดภัยสูงอาจเลือกใช้ Private Cloud ซึ่งแยก Infrastructure สำหรับองค์กรโดยเฉพาะ
บทความนี้จะอธิบายโครงสร้างและขั้นตอนติดตั้ง Odoo บน Server สำหรับทั้ง 3 รูปแบบ โดยใช้แนวทาง Docker เป็นตัวอย่าง เนื่องจากช่วยแยก Odoo, PostgreSQL และส่วนประกอบต่าง ๆ ออกจากกัน ทำให้บริหารเวอร์ชัน สำรองข้อมูล และย้ายระบบได้สะดวกขึ้น
หมายเหตุ: ตัวอย่างนี้เหมาะสำหรับ Odoo Community และสามารถประยุกต์ใช้กับ Odoo Enterprise ได้ แต่การติดตั้ง Enterprise จำเป็นต้องมีสิทธิ์เข้าถึง Source Code และ Subscription ที่ถูกต้องจาก Odoo
Odoo On-Premise, Public Cloud และ Private Cloud ต่างกันอย่างไร
ก่อนเริ่มติดตั้ง ควรเลือกรูปแบบ Infrastructure ให้เหมาะกับข้อกำหนดของธุรกิจ
1. Odoo On-Premise
On-Premise คือการติดตั้ง Odoo บน Server ที่ตั้งอยู่ภายในสำนักงาน โรงงาน หรือ Data Center ขององค์กรเอง
องค์กรเป็นผู้ดูแลทั้งหมด ตั้งแต่ Hardware, Network, Firewall, Operating System, Backup ไปจนถึงการเปลี่ยนอุปกรณ์เมื่อเกิดความเสียหาย
เหมาะกับองค์กรที่:
- มีนโยบายห้ามเก็บข้อมูลบน Public Cloud
- มีทีม Infrastructure ภายใน
- มีระบบภายในที่ต้องเชื่อมต่อผ่าน Local Network
- โรงงานหรือพื้นที่ใช้งานมีอินเทอร์เน็ตไม่เสถียร
- ต้องการควบคุม Server และข้อมูลด้วยตนเอง
ข้อควรระวังคือองค์กรต้องเตรียมระบบไฟสำรอง อินเทอร์เน็ตสำรอง การป้องกัน Hardware เสียหาย และการสำรองข้อมูลออกนอกสถานที่ หาก Backup อยู่บน Server เครื่องเดียวกับระบบหลัก เมื่อเครื่องเสียหรือถูกโจมตี ข้อมูลหลักและข้อมูลสำรองอาจสูญหายพร้อมกันได้
2. Odoo Public Cloud
Public Cloud คือการสร้าง Virtual Machine หรือ Cloud Server บน Infrastructure ของผู้ให้บริการ เช่น AWS, Azure, Google Cloud, DigitalOcean หรือ Cloud Provider ในประเทศไทย
แม้จะเรียกว่า Public Cloud แต่ Server ของแต่ละองค์กรยังสามารถกำหนด Network, Firewall และสิทธิ์การเข้าถึงแยกออกจากผู้ใช้งานรายอื่นได้
เหมาะกับองค์กรที่:
- ต้องการเริ่มระบบได้เร็ว
- ไม่มีทีมดูแล Hardware
- ต้องการเพิ่ม CPU, RAM หรือ Storage ในอนาคต
- มีผู้ใช้งานจากหลายสาขาหรือทำงานจากภายนอก
- ต้องการระบบ Snapshot, Backup และ Monitoring จาก Cloud Provider
ค่าใช้จ่ายมักเป็นรายเดือนตามขนาดเครื่อง พื้นที่เก็บข้อมูล ปริมาณ Backup และ Network Traffic
3. Odoo Private Cloud
Private Cloud คือ Infrastructure ที่จัดสรรให้องค์กรหนึ่งโดยเฉพาะ อาจติดตั้งอยู่ใน Data Center ขององค์กรเอง หรือใช้บริการ Dedicated Infrastructure จากผู้ให้บริการภายนอก
Private Cloud อาจประกอบด้วย VMware, Proxmox, OpenStack, Kubernetes หรือระบบ Virtualization อื่น โดยองค์กรสามารถแบ่ง Network, Compute และ Storage ตามนโยบายของตนเอง
เหมาะกับองค์กรที่:
- มีข้อกำหนดด้าน Data Governance หรือ Compliance
- ต้องการแยก Network ออกจากระบบสาธารณะ
- มีหลายระบบที่ต้องทำงานร่วมกันภายใน Private Network
- ต้องการควบคุม Infrastructure มากกว่า Public Cloud
- มีทีม Cloud หรือ Infrastructure ที่สามารถดูแลระบบได้
ไม่ว่าจะเลือกรูปแบบใด ขั้นตอนติดตั้ง Odoo ภายใน Operating System มีหลักการใกล้เคียงกัน สิ่งที่แตกต่างคือผู้รับผิดชอบ Infrastructure, Network, Backup และระดับการควบคุมระบบ
สถาปัตยกรรม Odoo สำหรับใช้งานจริง
ระบบ Odoo Production ไม่ควรมีเพียง Odoo Application อย่างเดียว แต่ควรประกอบด้วยองค์ประกอบหลักดังนี้
Users
│
▼
Domain / DNS
│
▼
Firewall / Load Balancer
│
▼
Nginx Reverse Proxy + SSL
│
▼
Odoo Application
│
├── Custom Add-ons
├── Odoo Filestore
└── Log Files
│
▼
PostgreSQL Database
│
▼
Backup Storage / Object Storage
Odoo ใช้ PostgreSQL เป็นฐานข้อมูล และยังมี Filestore สำหรับเก็บไฟล์แนบ รูปสินค้า เอกสาร และข้อมูล Binary บางประเภท ดังนั้นการ Backup เฉพาะ PostgreSQL โดยไม่สำรอง Filestore อาจทำให้กู้ระบบกลับมาแล้วเอกสารแนบไม่ครบ
Official Odoo Docker Image ระบุว่าต้องเชื่อมต่อกับ PostgreSQL และแนะนำให้ใช้ Named Volume เพื่อเก็บข้อมูล Odoo อย่างถาวร เพราะข้อมูลภายใน Container อาจหายเมื่อ Container ถูกลบหรือสร้างใหม่
สิ่งที่ต้องเตรียมก่อนติดตั้ง Odoo
ตัวอย่างในบทความนี้ใช้ Linux Server โดยแนะนำให้ใช้ Ubuntu Server รุ่นที่ยังได้รับ Security Update
สิ่งที่ควรเตรียมประกอบด้วย:
- Server หรือ Virtual Machine
- Public IP หรือ Private IP ตามรูปแบบการใช้งาน
- Domain เช่น
erp.company.com - สิทธิ์ SSH ผ่าน User ที่มีสิทธิ์
sudo - Firewall
- Docker Engine
- Docker Compose Plugin
- SSL Certificate
- พื้นที่สำหรับ Database, Filestore และ Backup
- Repository สำหรับ Custom Add-ons
- SMTP Server สำหรับส่งอีเมล
สำหรับ Server ที่เปิดให้เข้าถึงจากอินเทอร์เน็ต ไม่ควรเปิด PostgreSQL Port 5432 หรือ Odoo Port 8069 ให้ Public เข้าถึงโดยตรง ควรเปิดเฉพาะ Port ที่จำเป็น เช่น:
22สำหรับ SSH โดยจำกัด Source IP80สำหรับ Redirect ไป HTTPS443สำหรับ HTTPS
ขั้นตอนติดตั้ง Odoo บน Server ด้วย Docker
ขั้นตอนที่ 1: เตรียม Operating System
เชื่อมต่อ Server ผ่าน SSH
ssh administrator@SERVER_IP
อัปเดต Package ของระบบ
sudo apt update
sudo apt upgrade -y
ติดตั้ง Utility ที่จำเป็น
sudo apt install -y ca-certificates curl git nano ufwตั้ง Timezone ให้ตรงกับประเทศไทย
sudo timedatectl set-timezone Asia/Bangkok
timedatectlควรตรวจสอบด้วยว่า Server มีเวลาแม่นยำ เพราะเวลาเกี่ยวข้องกับ Transaction, Scheduled Action, Log, Accounting Date และการตรวจสอบปัญหาในระบบ
ขั้นตอนที่ 2: ติดตั้ง Docker Engine และ Docker Compose
ควรติดตั้ง Docker ผ่าน Official Repository ตามคู่มือของ Docker แทนการใช้ Script ที่ไม่ทราบแหล่งที่มา โดย Docker แนะนำการติดตั้งผ่าน Package Repository เพื่อให้จัดการการอัปเดตได้ง่ายกว่า
หลังติดตั้งแล้วตรวจสอบสถานะ
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
ตรวจสอบเวอร์ชัน
docker --version
docker compose version
Docker Compose Plugin ใช้สำหรับกำหนด Odoo, PostgreSQL, Volume และ Network ไว้ในไฟล์เดียว ทำให้เปิด ปิด และอัปเดตระบบได้เป็นขั้นตอนมากขึ้น คู่มือการติดตั้ง Compose Plugin มีอยู่ในเอกสารอย่างเป็นทางการของ Docker
ขั้นตอนที่ 3: สร้างโครงสร้าง Directory
สร้าง Directory สำหรับระบบ Odoo
sudo mkdir -p /opt/odoo/{config,addons,nginx,backup}
sudo chown -R $USER:$USER /opt/odoo
cd /opt/odoo
โครงสร้างที่ได้จะมีลักษณะดังนี้
/opt/odoo
├── addons
├── backup
├── config
├── nginx
└── docker-compose.yml
หน้าที่ของแต่ละ Directory:
addonsเก็บ Custom Modulebackupเก็บไฟล์สำรองชั่วคราวconfigเก็บไฟล์odoo.confnginxเก็บ Configuration ของ Reverse Proxy- PostgreSQL และ Filestore ควรใช้ Docker Named Volume หรือ Dedicated Storage
ขั้นตอนที่ 4: สร้างรหัสผ่านที่ปลอดภัย
สร้างรหัสผ่านแบบสุ่มสำหรับ PostgreSQL และ Odoo Master Password
openssl rand -base64 32
openssl rand -base64 32
ควรได้รหัสผ่านแยกกันอย่างน้อย 2 ค่า:
- PostgreSQL Password
- Odoo
admin_passwd
admin_passwd ไม่ใช่รหัสผ่านของผู้ใช้งาน Administrator แต่เป็น Master Password สำหรับจัดการ Database เช่น Create, Duplicate, Backup หรือ Drop Database จึงไม่ควรใช้รหัสผ่านง่าย ๆ หรือเปิดเผยให้ผู้ใช้งานทั่วไปทราบ
ขั้นตอนที่ 5: สร้างไฟล์ Odoo Configuration
สร้างไฟล์:
nano /opt/odoo/config/odoo.confตัวอย่าง Configuration:
[options]
admin_passwd = CHANGE_TO_STRONG_MASTER_PASSWORD
db_host = db
db_port = 5432
db_user = odoo
db_password = CHANGE_TO_STRONG_DATABASE_PASSWORD
addons_path = /mnt/extra-addons
proxy_mode = True
list_db = False
workers = 4
max_cron_threads = 1
limit_time_cpu = 600
limit_time_real = 1200
limit_memory_soft = 2147483648
limit_memory_hard = 2684354560
log_level = info
logfile = /var/log/odoo/odoo.log
ประเด็นสำคัญ:
proxy_mode = Trueใช้เมื่อ Odoo อยู่หลัง Reverse Proxy เท่านั้นlist_db = Falseซ่อนหน้าแสดงรายชื่อ Databaseworkersต้องกำหนดตามจำนวน CPU, RAM และลักษณะงาน- ค่า Memory และ Timeout ต้องปรับตาม Report, Import และ Custom Module
- ไม่ควรคัดลอกจำนวน Worker จากระบบอื่นโดยไม่ประเมินทรัพยากร
Odoo ระบุว่า Proxy Mode ควรเปิดเฉพาะเมื่อระบบอยู่หลัง Reverse Proxy และระบบ Production ที่เปิดให้เข้าถึงผ่านอินเทอร์เน็ตควรใช้ HTTPS
ขั้นตอนที่ 6: สร้างไฟล์ Docker Compose
สร้างไฟล์:
nano /opt/odoo/docker-compose.ymlตัวอย่างสำหรับ Odoo 19:
services:
db:
image: postgres:17
container_name: odoo-db
restart: unless-stopped
environment:
POSTGRES_DB: postgres
POSTGRES_USER: odoo
POSTGRES_PASSWORD: CHANGE_TO_STRONG_DATABASE_PASSWORD
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data
networks:
- odoo-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U odoo -d postgres"]
interval: 10s
timeout: 5s
retries: 5
odoo:
image: odoo:19.0
container_name: odoo-app
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "127.0.0.1:8069:8069"
- "127.0.0.1:8072:8072"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config/odoo.conf:/etc/odoo/odoo.conf:ro
- ./addons:/mnt/extra-addons
- odoo-logs:/var/log/odoo
networks:
- odoo-network
volumes:
odoo-db-data:
odoo-web-data:
odoo-logs:
networks:
odoo-network:
driver: bridge
จุดที่ควรสังเกตคือ Port 8069 และ 8072 ถูก Bind ไว้กับ 127.0.0.1 เท่านั้น หมายความว่าไม่เปิดให้ภายนอกเข้าถึงโดยตรง แต่ให้ Nginx ซึ่งอยู่บน Server เครื่องเดียวกันเป็นผู้รับ Request ผ่าน HTTPS
ก่อนนำไปใช้จริง ต้องเปลี่ยนรหัสผ่านใน docker-compose.yml และ odoo.conf ให้ตรงกัน
จากนั้นตรวจสอบ Syntax:
docker compose config
เริ่มระบบ:
docker compose up -d
ตรวจสอบ Container:
docker compose ps
ตรวจสอบ Log:
docker compose logs -f odoo
docker compose logs -f db
ขั้นตอนที่ 7: ตั้งค่า Nginx Reverse Proxy
ติดตั้ง Nginx
sudo apt install -y nginx
สร้าง Configuration
sudo nano /etc/nginx/sites-available/odoo
ตัวอย่าง:
upstream odoo_backend {
server 127.0.0.1:8069;
}
upstream odoo_websocket {
server 127.0.0.1:8072;
}
server {
listen 80;
server_name erp.company.com;
client_max_body_size 100m;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
location /websocket {
proxy_pass http://odoo_websocket;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://odoo_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
เปิดใช้งาน Site
sudo ln -s /etc/nginx/sites-available/odoo \
/etc/nginx/sites-enabled/odoo
sudo nginx -t
sudo systemctl reload nginx
เมื่อ Odoo ทำงานแบบ Multi-Processing จะมี Worker สำหรับการเชื่อมต่อแบบ Real-time และ Reverse Proxy ต้อง Route การเชื่อมต่อ WebSocket ไปยัง Port ที่กำหนดอย่างถูกต้อง
ขั้นตอนที่ 8: ตั้งค่า Domain และ SSL
สร้าง DNS Record:
Type: A
Name: erp
Value: PUBLIC_SERVER_IP
จากนั้นติดตั้ง Certbot
sudo apt install -y certbot python3-certbot-nginx
ขอ SSL Certificate
sudo certbot --nginx -d erp.company.com
ทดสอบการต่ออายุอัตโนมัติ
sudo certbot renew --dry-run
หลังติดตั้งแล้วควรทดสอบ:
https://erp.company.com
Odoo แนะนำให้ Deployment ที่เปิดใช้งานผ่านอินเทอร์เน็ตใช้ HTTPS เพราะข้อมูลการยืนยันตัวตนจำเป็นต้องได้รับการป้องกันระหว่าง Client และ Server
ขั้นตอนที่ 9: ตั้งค่า Firewall
ตัวอย่าง UFW:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from YOUR_OFFICE_IP to any port 22 proto tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
ไม่ควรเปิด Port ต่อไปนี้ออกสู่ Public Internet หากไม่มีเหตุผลที่ชัดเจน:
5432 PostgreSQL
8069 Odoo HTTP
8072 Odoo WebSocket
สำหรับ On-Premise หรือ Private Cloud อาจกำหนดให้เข้าถึง Odoo ได้เฉพาะผ่าน VPN, MPLS, Zero Trust Network หรือ Private IP
ขั้นตอนที่ 10: สร้าง Database และตั้งค่า Odoo
ในกรณีที่ตั้ง list_db = False ตั้งแต่เริ่มต้น อาจต้องเปิดชั่วคราวเพื่อสร้าง Database แรก หรือสร้าง Database ผ่าน Command Line
วิธีง่ายสำหรับการติดตั้งครั้งแรกคือ:
- เปลี่ยน
list_db = Trueชั่วคราว - Restart Odoo
- เปิดหน้า
/web/database/manager - สร้าง Database
- กำหนดภาษาและข้อมูลตัวอย่าง
- เปลี่ยนกลับเป็น
list_db = False - Restart ระบบอีกครั้ง
Restart Odoo:
cd /opt/odoo
docker compose restart odoo
ไม่ควรเปิด Database Manager ทิ้งไว้โดยไม่จำเป็น โดยเฉพาะระบบที่เข้าถึงจากอินเทอร์เน็ต
วิธีติดตั้ง Custom Add-ons
นำ Custom Module ไว้ใน Directory:
/opt/odoo/addons
ตัวอย่าง Clone Repository:
cd /opt/odoo/addons
git clone -b 19.0 git@github.com:company/odoo-custom-addons.git .
Restart Odoo:
cd /opt/odoo
docker compose restart odoo
จากนั้นเข้า Odoo:
Apps → Update Apps List
ก่อนนำ Module ขึ้น Production ควรตรวจสอบอย่างน้อย:
- Module รองรับ Odoo Version ที่ใช้งาน
- Dependency ครบ
- ไม่มี Error ใน Log
- ผ่านการทดสอบบน Staging
- มีขั้นตอน Rollback
- มี Database Backup ก่อน Upgrade
ไม่ควรแก้ Source Code ภายใน Container โดยตรง เพราะเมื่อ Recreate Container การแก้ไขจะหาย ควรเก็บ Custom Module ใน Git Repository และ Mount เข้าสู่ Container
การ Backup Odoo ที่ถูกต้อง
Backup Odoo ควรมีอย่างน้อย 3 ส่วน:
- PostgreSQL Database
- Odoo Filestore
- Custom Add-ons และ Configuration
สำรอง PostgreSQL
mkdir -p /opt/odoo/backup
docker exec odoo-db pg_dump \
-U odoo \
-Fc DATABASE_NAME \
> /opt/odoo/backup/DATABASE_NAME_$(date +%F_%H-%M).dump
สำรอง Filestore
ตัวอย่างสำรอง Named Volume:
docker run --rm \
-v odoo-web-data:/data:ro \
-v /opt/odoo/backup:/backup \
alpine \
tar czf /backup/odoo-filestore_$(date +%F_%H-%M).tar.gz -C /data .
สำรอง Configuration
tar czf /opt/odoo/backup/odoo-config_$(date +%F_%H-%M).tar.gz \
/opt/odoo/config \
/opt/odoo/addons \
/opt/odoo/docker-compose.yml
Backup ที่ดีไม่ควรอยู่เฉพาะบน Server หลัก ควรส่งไปยัง Storage อื่น เช่น:
- Object Storage
- NAS คนละเครื่อง
- Backup Server คนละ Data Center
- Cloud Backup
- Immutable Storage
ควรมีนโยบาย Retention เช่น:
- Daily Backup 7–14 วัน
- Weekly Backup 4–8 สัปดาห์
- Monthly Backup 6–12 เดือน
สิ่งสำคัญกว่าการมีไฟล์ Backup คือการทดสอบ Restore เพราะ Backup ที่ไม่เคยทดสอบอาจพบว่า Database, Filestore หรือ Encryption Key ไม่ครบเมื่อเกิดเหตุจริง
ขั้นตอนการอัปเดต Odoo Container
ก่อนอัปเดตทุกครั้ง:
- สำรอง Database
- สำรอง Filestore
- บันทึก Version เดิม
- ทดสอบบน Staging
- ตรวจสอบ Custom Module
- เตรียมแผน Rollback
ตัวอย่างคำสั่ง:
cd /opt/odoo
docker compose pull
docker compose up -d
docker compose ps
docker compose logs -f odoo
ไม่ควรใช้ Tag latest ใน Production เพราะอาจทำให้ Version เปลี่ยนโดยไม่ได้ควบคุม ควรระบุ Version ให้ชัดเจน เช่น:
image: odoo:19.0
สำหรับการอัปเกรดข้าม Major Version เช่น Odoo 18 ไป Odoo 19 ไม่ใช่เพียงการเปลี่ยน Docker Image แต่ต้องมีขั้นตอน Migration Database และตรวจสอบ Compatibility ของ Custom Module ด้วย
การติดตั้ง Odoo แบบ High Availability
สำหรับระบบที่มีผู้ใช้งานจำนวนมากหรือไม่สามารถหยุดบริการได้นาน สถาปัตยกรรมอาจขยายเป็น:
Internet
│
Web Application Firewall
│
Load Balancer
│
┌───────────────┐
│ │
Odoo Node 1 Odoo Node 2
│ │
└───────┬───────┘
│
Managed PostgreSQL / HA Database
│
Shared Filestore / Object Storage
แต่การเพิ่ม Odoo หลาย Node ไม่ได้ทำให้ระบบเป็น High Availability โดยอัตโนมัติ ต้องจัดการเรื่อง:
- Session และ Proxy
- Shared Filestore
- Database Connection
- Cron Worker
- Load Balancing
- Deployment Version
- Health Check
- Database Failover
- Backup และ Disaster Recovery
สำหรับองค์กรขนาดเล็กถึงกลาง การเริ่มจาก Single Production Server ที่ออกแบบ Backup และ Monitoring อย่างถูกต้อง มักเหมาะสมกว่าการสร้าง Cluster ที่ซับซ้อนเกินความจำเป็น
แนวทางติดตั้งตามแต่ละ Environment
แนวทางสำหรับ On-Premise
ควรเตรียมเพิ่มเติม:
- UPS และ Generator
- RAID หรือ Redundant Storage
- Internet Link สำรอง
- Firewall ภายในองค์กร
- VPN สำหรับผู้ใช้งานภายนอก
- Off-site Backup
- Spare Hardware หรือ Recovery Server
- ระบบควบคุมอุณหภูมิและการเข้าถึงห้อง Server
On-Premise ไม่ได้แปลว่าปลอดภัยกว่า Cloud เสมอไป ความปลอดภัยขึ้นอยู่กับการออกแบบ Firewall, Patch Management, Backup, Access Control และการตรวจสอบเหตุการณ์
แนวทางสำหรับ Public Cloud
ควรใช้:
- Private Network สำหรับ Database
- Security Group หรือ Cloud Firewall
- Static IP
- Automated Snapshot
- Object Storage สำหรับ Backup
- Monitoring และ Alert
- Managed Database เมื่อระบบมีความสำคัญสูง
- Multi-Zone หรือ Disaster Recovery ตาม SLA
ควรหลีกเลี่ยงการใช้ Root Account สำหรับงานประจำ และควรเปิด Multi-Factor Authentication บนบัญชี Cloud Provider
แนวทางสำหรับ Private Cloud
ควรกำหนด:
- Network Segment สำหรับ Production
- Resource Reservation
- Storage Redundancy
- Backup Policy ระดับ Platform และ Application
- Template สำหรับสร้าง VM
- Monitoring ของ Host และ Guest VM
- Patch Management
- Disaster Recovery Site
- สิทธิ์ของ Infrastructure Administrator แยกจาก Odoo Administrator
Checklist ก่อนเปิดใช้งาน Odoo Production
ก่อน Go-Live ควรตรวจสอบรายการต่อไปนี้
Infrastructure
- CPU, RAM และ Disk เพียงพอ
- Disk มีพื้นที่สำหรับ Database, Filestore และ Log
- Server Timezone ถูกต้อง
- มี Monitoring CPU, RAM, Disk และ Service
- มี Alert เมื่อ Disk ใกล้เต็ม
Security
- ใช้งาน HTTPS
- ปิด Public Access ของ PostgreSQL
- ไม่เปิด Port 8069 โดยตรง
- จำกัด SSH ด้วย IP หรือ VPN
- ปิด Password Login และใช้ SSH Key เมื่อเป็นไปได้
- ตั้ง Master Password ที่คาดเดายาก
- ปิด Database List
- อัปเดต Security Patch สม่ำเสมอ
Backup
- Backup Database
- Backup Filestore
- Backup Custom Add-ons
- Backup ถูกส่งออกนอก Server
- มี Retention Policy
- ทดสอบ Restore แล้ว
Odoo Application
- ตั้งค่า SMTP
- ตรวจสอบ Scheduled Actions
- ตรวจสอบ Timezone ของบริษัทและผู้ใช้งาน
- ทดสอบ Report และ Font ภาษาไทย
- ทดสอบ Upload และ Download Attachment
- ทดสอบ Email
- ทดสอบ Cron
- ทดสอบ Custom Module
- มี Staging Environment
Operations
- มีผู้รับผิดชอบระบบ
- มีขั้นตอน Incident Management
- มี Change Log
- มี Maintenance Window
- มี Rollback Plan
- กำหนด SLA และเวลาตอบสนอง
ควรเลือกติดตั้ง Odoo แบบไหน
ไม่มีรูปแบบใดดีที่สุดสำหรับทุกองค์กร การเลือกควรพิจารณาจากนโยบายข้อมูล ความพร้อมของทีม IT จำนวนผู้ใช้งาน การเชื่อมต่อกับระบบภายใน งบประมาณ และระดับความต่อเนื่องที่ธุรกิจต้องการ
เลือก On-Premise เมื่อองค์กรต้องควบคุม Hardware และข้อมูลภายในสถานที่ของตนเอง พร้อมมีทีม Infrastructure ดูแล
เลือก Public Cloud เมื่อต้องการเริ่มระบบเร็ว ขยายทรัพยากรง่าย และลดภาระการดูแล Hardware
เลือก Private Cloud เมื่อต้องการความยืดหยุ่นแบบ Cloud แต่ยังต้องแยก Infrastructure และ Network ตามข้อกำหนดเฉพาะขององค์กร
สำหรับหลายองค์กร แนวทางที่เหมาะสมคือเริ่มจาก Public Cloud หรือ Private Cloud แบบ Single Production Server ที่มี Backup, Security และ Monitoring ครบถ้วน แล้วจึงขยาย Architecture เมื่อจำนวนผู้ใช้งาน Transaction หรือข้อกำหนดด้าน SLA เพิ่มขึ้น
สรุป
การติดตั้ง Odoo สำหรับใช้งานจริงไม่ควรพิจารณาเฉพาะขั้นตอน Install Application แต่ต้องออกแบบระบบตั้งแต่ Domain, SSL, PostgreSQL, Filestore, Custom Add-ons, Firewall, Backup, Monitoring และกระบวนการอัปเดต
ไม่ว่าจะติดตั้งแบบ On-Premise, Public Cloud หรือ Private Cloud หลักสำคัญคือ:
- ไม่เปิด Database และ Odoo Backend Port สู่ Public โดยตรง
- ใช้ HTTPS และ Reverse Proxy
- แยก Database, Filestore และ Custom Add-ons อย่างเป็นระบบ
- สำรองข้อมูลครบทั้ง Database และ Filestore
- ทดสอบ Restore
- มี Staging ก่อนอัปเดต Production
- มีผู้รับผิดชอบด้าน Security และ Operations อย่างชัดเจน
การวาง Infrastructure ที่ถูกต้องตั้งแต่ต้นจะช่วยลดปัญหาระบบช้า ข้อมูลสูญหาย อัปเดตไม่ได้ และ Downtime เมื่อธุรกิจเติบโตขึ้น
IMOTIF Odoo Hosting & Managed Cloud
IMOTIF ให้บริการติดตั้งและดูแล Odoo สำหรับองค์กรในประเทศไทย ครอบคลุมทั้ง:
- Odoo On-Premise
- Odoo บน AWS และ Public Cloud
- Private Cloud
- Docker Deployment
- PostgreSQL และ Performance Tuning
- SSL, Domain และ Reverse Proxy
- Automated Backup
- Monitoring และ Incident Support
- Odoo Version Upgrade
- Security Hardening
- Disaster Recovery Planning
องค์กรที่กำลังวางระบบ Odoo ใหม่ หรือมีระบบเดิมที่พบปัญหาด้านความเสถียร Backup และ Performance ควรเริ่มจากการประเมินจำนวนผู้ใช้งาน ปริมาณ Transaction, Custom Module, Integration และ SLA ก่อนกำหนดขนาด Server และรูปแบบ Cloud