diff --git a/README.md b/README.md index 1656a21..31bd3e0 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,72 @@ docker compose config # validasi docker compose up -d # start ``` -Akses UI: http://localhost:18069 — login `admin` / `admin` -(`ADMIN_PASSWORD` untuk Database Management di `.env`). +Akses UI: http://localhost:18069 — login `admin` dengan password +`ODOO_ADMIN_PASSWORD` di `.env`. + +## Troubleshooting + +### `PermissionError: /var/lib/odoo/sessions` + +Odoo 17 berjalan sebagai user dengan UID/GID `101`. Perbaiki ownership +named volume Odoo tanpa menghapus database atau filestore: + +```bash +cid=$(docker compose ps -q odoo) +docker exec --user root "$cid" sh -c \ + 'chown -R 101:101 /var/lib/odoo && \ + chmod 755 /var/lib/odoo && chmod 700 /var/lib/odoo/sessions' +``` + +Verifikasi bahwa user Odoo dapat menulis session: + +```bash +docker exec --user odoo "$cid" sh -c \ + 'touch /var/lib/odoo/sessions/.write-check && \ + rm /var/lib/odoo/sessions/.write-check' +``` + +Gunakan satu volume utama berikut pada `docker-compose.yml`; jangan membuat +mount terpisah untuk `/var/lib/odoo/session` (singular): + +```yaml +volumes: + - saat_odoo_filestore:/var/lib/odoo +``` + +### `column res_lang.short_time_format does not exist` + +Pastikan versi image Odoo sama dengan versi database. Database proyek ini +adalah Odoo 17, jadi gunakan: + +```yaml +image: odoo:17.0 +``` + +Jangan menjalankan database Odoo 17 dengan image Odoo 18 tanpa proses upgrade +major-version yang resmi. + +### Tidak bisa login sebagai `admin` + +Jika log menunjukkan `Login failed` dan user `admin` aktif, reset password +melalui ORM Odoo menggunakan nilai `ODOO_ADMIN_PASSWORD` dari `.env`: + +```bash +set -a && source .env && set +a +docker compose exec -T -e RESET_PASSWORD="$ODOO_ADMIN_PASSWORD" odoo \ + odoo shell -d "$POSTGRES_DB" --db_host=db --db_port=5432 \ + --db_user="$POSTGRES_USER" --db_password="$POSTGRES_PASSWORD" --no-http <<'PY' +import os +user = env['res.users'].search([('login', '=', 'admin')], limit=1) +if not user.exists() or not user.active: + raise RuntimeError('Active admin user was not found') +user.write({'password': os.environ['RESET_PASSWORD']}) +env.cr.commit() +print('Admin password reset') +PY +``` + +Setelah itu login dengan user `admin` dan password `ODOO_ADMIN_PASSWORD`. ## Status - ✅ Odoo 17 container jalan (port 18069), DB PostgreSQL 16 healthy