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`.