Diskusi: Tips & Strategi Optimal Menjalankan Odoo di Server Produksi
Diposting pada 08 Mar 2026, 05:35
Ditanyakan oleh: Kurniawan
Halo teman-teman komunitas Odoo!
Saya Kurniawan, bagian dari tim IT di perusahaan kami di Indonesia. Saat ini kami sedang dalam proses implementasi Odoo ERP untuk kebutuhan operasional perusahaan. Saya sudah berhasil menginstall Odoo di server kami, tapi sekarang ada beberapa hal yang ingin saya diskusikan atau tanyakan terkait 'how to run odoo' agar bisa berjalan optimal, stabil, dan aman untuk operasional sehari-hari.
Beberapa poin yang saya ingin dapatkan insight dari teman-teman yang sudah berpengalaman di Odoo:
1. Startup Otomatis: Bagaimana best practice agar Odoo bisa otomatis running atau restart setelah server reboot? Apakah disarankan menggunakan systemd atau ada cara lain yang lebih proper dan reliable?
2. Reverse Proxy: Apakah wajib menggunakan Nginx atau Apache sebagai reverse proxy di depan Odoo? Dan bagaimana konfigurasi yang disarankan untuk performa, SSL, serta keamanan?
3. Optimasi Database: Ada tips khusus untuk optimasi PostgreSQL yang dipakai Odoo agar bisa handle banyak user dan transaksi harian tanpa kendala performa yang signifikan?
4. Keamanan Server/Aplikasi: Selain dari firewall dasar, ada langkah-langkah keamanan tambahan apa lagi yang krusial untuk aplikasi Odoo yang mungkin diakses oleh karyawan dari luar jaringan kantor?
5. Multi-user Environment: Untuk environment dengan puluhan bahkan bisa sampai seratusan user yang akan mengakses secara bersamaan, apakah ada konfigurasi khusus di Odoo (worker, dsb.) atau di sisi server yang perlu diperhatikan agar tetap responsif?
Mohon pencerahan dan sharing pengalamannya ya, teman-teman. Sangat membantu sekali bagi kami yang sedang dalam fase awal deployment ini. Terima kasih banyak sebelumnya!
Admin Odoo ForumAdmin & AI Support08 Mar 2026, 05:35
Halo Mas Kurniawan, salam kenal dari komunitas Odoo Indonesia! Senang sekali Mas Kurniawan dan tim sedang dalam proses implementasi Odoo. Pertanyaan-pertanyaan ini memang sangat krusial dan jadi perhatian utama saat Odoo siap go-live. Mari kita bedah satu per satu ya, Mas.
Untuk menjalankan Odoo secara optimal, stabil, dan aman di server produksi, ada beberapa poin yang memang perlu perhatian khusus. Berikut beberapa panduan yang umumnya jadi best practice:
1. Startup Otomatis
Untuk otomatisasi startup Odoo setelah server reboot, systemd adalah pilihan yang sangat disarankan dan paling proper untuk sistem operasi Linux modern. Systemd ini memungkinkan Odoo berjalan sebagai layanan (service) yang bisa dikelola dengan mudah (start, stop, restart, cek status) dan otomatis aktif saat server menyala.
Membuat unit file systemd untuk Odoo itu cukup straightforward. Intinya, Anda akan mendefinisikan lokasi script Odoo, user yang menjalankan Odoo (sebaiknya bukan user root), environment Python yang digunakan, serta dependensi layanan lain seperti PostgreSQL. Ini jauh lebih reliable dibandingkan cara manual atau script sederhana yang mungkin kurang terintegrasi dengan manajemen sistem.
2. Reverse Proxy (Nginx/Apache)
Apakah wajib? Sebenarnya tidak wajib dalam artian Odoo bisa langsung diakses via port 8069. Namun, sangat, sangat disarankan untuk menggunakan reverse proxy seperti Nginx atau Apache di depan Odoo untuk lingkungan produksi.
Mengapa?
Performa: Reverse proxy bisa melakukan caching untuk aset statis (gambar, CSS, JS), mengurangi beban kerja Odoo. Bisa juga mengaktifkan kompresi Gzip.
SSL/HTTPS: Odoo sendiri tidak memiliki fitur SSL bawaan. Reverse proxy akan berfungsi sebagai SSL terminator, menangani sertifikat SSL Anda dan mengamankan koneksi antara user dan server. Ini penting untuk keamanan data yang dikirim.
Keamanan: Reverse proxy menjadi lapisan depan, menyembunyikan port asli Odoo (default 8069) dari dunia luar. Ini juga bisa menjadi tempat untuk mengimplementasikan filter permintaan (seperti Web Application Firewall) atau batasan akses.
Fleksibilitas: Jika suatu saat Anda ingin menambahkan instance Odoo lain untuk load balancing, reverse proxy akan sangat membantu.
Untuk konfigurasi, Nginx seringkali menjadi pilihan favorit karena dikenal ringan dan performa tinggi. Konfigurasi dasarnya akan melibatkan:
Mendengarkan permintaan di port 80 (HTTP) dan 443 (HTTPS).
Meneruskan (proxy_pass) permintaan ke port Odoo (misal: 8069).
Menambahkan header `X-Forwarded-For`, `X-Forwarded-Proto`, dan `X-Forwarded-Host` agar Odoo tahu IP asli client dan protokol yang digunakan.
Tentu saja, konfigurasi sertifikat SSL Anda.
Jangan lupa aktifkan `proxy_mode = True` di file konfigurasi Odoo Anda (`odoo.conf`).
3. Optimasi Database (PostgreSQL)
PostgreSQL adalah tulang punggung data Odoo, jadi optimasinya krusial. Beberapa tips untuk PostgreSQL agar bisa handle banyak user dan transaksi:
Tuning `postgresql.conf`: Ini adalah file konfigurasi utama. Parameter yang perlu diperhatikan:
`shared_buffers`: Atur sekitar 25% dari total RAM server Anda. Ini sangat berpengaruh pada kecepatan akses data.
`work_mem`: Memori yang dialokasikan untuk operasi sorting dan join.
`maintenance_work_mem`: Penting untuk operasi `VACUUM` dan `CREATE INDEX`.
`max_connections`: Sesuaikan dengan jumlah worker Odoo dan kebutuhan aplikasi lain yang mungkin terhubung ke database.
`effective_cache_size`: Estimasi total cache yang tersedia di OS dan database.
Hardware: Pastikan server database menggunakan SSD atau NVMe untuk performa I/O disk yang cepat. Ini adalah salah satu faktor penentu performa yang paling signifikan.
Monitoring: Pantau terus performa PostgreSQL menggunakan tools seperti `pg_stat_activity` atau `pg_top` untuk mengidentifikasi query yang lambat atau koneksi yang macet.
Autovacuum: Pastikan fitur autovacuum di PostgreSQL Anda aktif dan dikonfigurasi dengan baik. Ini sangat penting untuk menjaga kesehatan database dan mencegah bloat.
Separasi Server: Untuk environment dengan traffic sangat tinggi, pertimbangkan untuk menempatkan server database di server terpisah dari server aplikasi Odoo.
4. Keamanan Server/Aplikasi
Selain firewall dasar, ada beberapa langkah keamanan tambahan yang krusial, terutama jika diakses dari luar jaringan kantor:
Update Rutin: Pastikan sistem operasi, PostgreSQL, Python, dan Odoo (terutama patch keamanan) selalu diperbarui. Ini menutup celah kerentanan yang sudah diketahui.
User Odoo Minimalis: Jalankan layanan Odoo dengan user non-root dan pastikan user tersebut hanya memiliki hak akses yang diperlukan saja ke folder Odoo dan databasenya.
Backup Teratur: Lakukan backup database dan filestore Odoo secara rutin dan pastikan backup tersebut bisa direstore. Jangan sampai backup Anda rusak atau tidak bisa digunakan saat dibutuhkan.
Kata Sandi Kuat: Terapkan kebijakan kata sandi yang kuat untuk admin Odoo, user Odoo, dan user database PostgreSQL.
Two-Factor Authentication (2FA): Jika memungkinkan, aktifkan 2FA untuk login Odoo (bisa via modul pihak ketiga jika Odoo versi Anda belum memiliki built-in). Ini sangat meningkatkan keamanan login.
Web Application Firewall (WAF): Pertimbangkan penggunaan WAF seperti ModSecurity (jika pakai Nginx/Apache) untuk mendeteksi dan memblokir serangan web umum.
Harden SSH: Untuk akses server via SSH, gunakan autentikasi berbasis kunci (key-based authentication), nonaktifkan login root, dan ubah port SSH default. Batasi siapa saja yang bisa SSH ke server.
Batasi Akses Database: Pastikan database PostgreSQL hanya bisa diakses dari server aplikasi Odoo, bukan dari mana pun di internet.
5. Multi-user Environment (Puluhan hingga Ratusan User)
Ini adalah bagian yang sangat penting untuk memastikan Odoo tetap responsif di lingkungan dengan banyak user.
Konfigurasi Multi-process/Worker di Odoo:
Odoo bisa berjalan dalam mode multi-process/worker, yang memungkinkan beberapa proses (worker) menangani permintaan secara bersamaan. Ini diatur di file `odoo.conf`:
`workers = X`: Ini adalah jumlah worker yang akan Anda jalankan. Sebuah formula kasar yang sering dipakai adalah `(CPU_cores 2) + 1`. Namun, ini sangat tergantung pada beban kerja dan jumlah RAM yang tersedia. Tiap worker membutuhkan RAM.
`max_cron_threads = Y`: Jumlah thread terpisah untuk menjalankan tugas terjadwal (cron jobs).
`limit_memory_hard`, `limit_memory_soft`: Batasan RAM untuk setiap worker. Jika worker melewati `limit_memory_soft`, Odoo akan mencoba me-restart worker tersebut setelah selesai memproses request saat ini. Jika melewati `limit_memory_hard`, worker akan di-kill paksa. Ini penting untuk mencegah satu worker memakan semua RAM.
`limit_time_cpu`, `limit_time_real`: Batasan waktu CPU dan waktu proses real untuk setiap request. Jika ada request yang terlalu lama, worker akan di-kill.
Estimasi RAM: Ini seringkali menjadi bottleneck utama. Anda perlu menghitung estimasi total RAM yang dibutuhkan: `(jumlah_worker rata_rata_RAM_per_worker_saat_sibuk) + RAM_PostgreSQL + RAM_OS + cadangan`. Satu worker Odoo bisa membutuhkan antara 150MB (idle) hingga lebih dari 1GB (saat memproses laporan kompleks atau transaksi besar). Jadi, pastikan server Anda punya RAM yang sangat cukup.
Sisi Server:
RAM: Ulangi lagi, pastikan RAM Anda melimpah! Ini adalah investasi terbaik untuk performa multi-user.
CPU: Pastikan memiliki cukup core CPU untuk mendukung semua worker Odoo dan PostgreSQL.
Disk I/O: Sekali lagi, SSD/NVMe untuk database dan filestore adalah suatu keharusan.
Monitoring: Pantau terus penggunaan CPU, RAM, Disk I/O, dan Network. Tools seperti `htop`, ` glances`, atau Prometheus/Grafana bisa sangat membantu untuk melihat di mana bottleneck berada.
Load Balancer + Multi-Instance: Jika jumlah user sangat banyak (ratusan hingga ribuan) atau traffic sangat tinggi, Anda mungkin perlu menjalankan beberapa instance aplikasi Odoo (masing-masing dengan worker sendiri) di beberapa server, lalu menempatkannya di belakang load balancer.
Semoga pencerahan ini membantu Mas Kurniawan dan tim dalam fase deployment Odoo ini ya. Jangan ragu untuk bertanya lagi jika ada detail yang ingin didalami. Selamat berproses, Sobat Odoo!