Untuk menghapus session yang tersimpan di database setiap malam secara otomatis, cara terbaik dan paling efisien adalah dengan memanfaatkan **Cron Job** pada level *database server* (PostgreSQL) atau melalui fitur **Scheduled Actions** bawaan Odoo. Karena Anda menggunakan modul `session_db`, semua data session lama yang sudah kedaluwarsa (*expired*) akan menumpuk di salah satu tabel database (biasanya bernama `session_db_session` atau `ir_session`). Berikut adalah 2 metode otomatis yang bisa Anda gunakan: --- ### Metode 1: Menggunakan Scheduled Actions Odoo (Paling Direkomendasikan) Sebagian besar modul `session_db` dari OCA atau komunitas sudah menyediakan fungsi *cleanup* (pembersihan) otomatis yang terintegrasi dengan fitur **Scheduled Actions (Automated Actions)** Odoo. 1. Masuk ke Odoo menggunakan akun **Administrator**. 2. Aktifkan **Developer Mode** (Mode Pengembang). 3. Buka menu **Settings** > **Technical** > **Automation** > **Scheduled Actions**. 4. Cari aksi yang bernama seperti: * `Session: Cleanup expired sessions` * `Session DB: Purge sessions` * *(Atau cari dengan kata kunci "session" di kolom pencarian)*. 5. Klik aksi tersebut, lalu ubah konfigurasinya: * **Execute Every:** `1 Days` * **Next Execution Date:** Atur ke jam yang Anda inginkan (misal nanti malam jam `00:00:00`). * **Active:** Pastikan dalam posisi *True* (Centang). > 💡 **Kelebihan:** Metode ini sangat aman karena Odoo akan menghapus session berdasarkan umur kedaluwarsa yang logis, sehingga pengguna yang sedang aktif tidak akan tiba-tiba ter-log out. --- ### Metode 2: Menggunakan Cron Job Script (Eksternal / Sisi Host) Jika modul yang Anda gunakan tidak menyediakan Scheduled Actions, atau Anda ingin memastikan database benar-benar bersih total setiap jam 12 malam tanpa membebani *resource* aplikasi Odoo, Anda bisa membuat Cron Job langsung di server Linux (*host* tempat Docker berjalan). #### Langkah 1: Buat Script Pembersih Buat file baru di server Anda, misalnya bernama `/opt/cleanup_odoo_session.sh`: ```bash #!/bin/bash # Perintah untuk mengosongkan tabel session via Pgpool/Postgres Docker # Ganti 'odoo_db' dengan nama database Odoo Anda yang sebenarnya docker exec -i $(docker ps -q -f name=pgpool) psql -U odoo -d odoo_db -c "DELETE FROM session_db_session WHERE write_date < NOW() - INTERVAL '1 day';" ``` *(Catatan: Sesuaikan nama tabel `session_db_session` dan kolom `write_date` dengan struktur tabel yang dibuat oleh modul Anda. Jika ingin menghapus **semua** session tanpa pandang bulu, Anda bisa menggunakan perintah `TRUNCATE TABLE nama_tabel;`)*. #### Langkah 2: Beri Izin Akses Script ```bash chmod +x /opt/cleanup_odoo_session.sh ``` #### Langkah 3: Daftarkan ke Crontab Linux 1. Buka terminal server Anda dan ketik: ```bash crontab -e ``` 2. Tambahkan baris berikut di bagian paling bawah file untuk menjalankan script **setiap malam jam 00:00**: ```text 0 0 * * * /opt/cleanup_odoo_session.sh > /dev/null 2>&1 ``` 3. Simpan dan keluar. --- ### ⚠️ Catatan Penting Sebelum Eksekusi: * **Efek Samping:** Jika Anda menggunakan perintah hapus total (`TRUNCATE`), semua pengguna (termasuk Anda) yang sedang membuka Odoo di HP atau laptop otomatis akan ter-log out (keluar) dan harus melakukan login ulang keesokan paginya. * **Cek Nama Tabel:** Pastikan Anda memeriksa nama tabel session Anda terlebih dahulu melalui *Database Manager* atau pgAdmin. Nama tabel umum untuk modul ini adalah `session_db_session`, `ir_session`, atau `res_users_session`.