# Troubleshooting Domainesia

**Website tidak dapat dibuka / DNS_PROBE_FINISHED_NXDOMAIN**
- Cek record A `studio` mengarah ke IP VPS yang benar. DNS harus diubah pada provider nameserver aktif. Pastikan tidak ada record AAAA salah.

**SSL gagal / masih HTTP**
- Caddy perlu port publik 80/443 (TCP), DNS publik benar, firewall cloud/VPS terbuka. Lihat `sudo docker compose -f compose.yaml logs caddy --tail=100`.

**Bind for 0.0.0.0:80 failed / port already allocated**
- Ada Nginx/Apache/container lain memakai 80/443. Jangan matikan webserver utama secara sembarang. Gunakan opsi `compose.existing-proxy.yaml` dan konfigurasikan proxy existing sesuai docs/02.

**502 Bad Gateway**
- `sudo docker compose -f compose.yaml ps` dan `logs studio --tail=100`; cek `.env`, permission folder data, RAM dan startup Python.

**studio container exits immediately**
- `APP_PASSWORD` harus ≥12 karakter, `SESSION_SECRET` berbeda dan ≥32 karakter dalam production. Pastikan permission `data` dimiliki UID 10001.

**Database readonly / permission denied**
- Pastikan `sudo chown -R 10001:10001 data`, lalu restart studio.

**Tidak bisa login**
- Gunakan password dari proses instalasi. Jika lupa, atur APP_PASSWORD baru lewat `.env`, restart `sudo docker compose -f compose.yaml up -d --force-recreate studio`; semua sesi lama menjadi tidak berlaku setelah mengganti session secret.

**AI belum terhubung**
- `OPENAI_API_KEY` kosong atau container belum dibuat ulang setelah update `.env`. `AI terhubung` di dashboard hanya berarti key ditemukan, bukan key sudah valid. Lakukan tes 1 konten.

**API menolak generasi**
- Periksa saldo/rate limit/key/model yang tersedia di akun OpenAI API dan error batch. Batasi jumlah produksi dahulu.

**Galeri gambar kosong**
- Periksa status batch di dashboard; lihat error item. Mode template butuh sejumlah headline **berbeda**, satu per baris. AI memerlukan key serta konektivitas internet server.

**Setelah update data hilang**
- Pastikan Anda menggunakan path proyek yang sama dan folder `./data` tersimpan; Compose menggunakan bind mount data. Restore dari backup terakhir bila benar-benar diperlukan.

**Tes dari VPS**

```bash
sudo docker compose -f compose.yaml ps
sudo docker compose -f compose.yaml logs --tail=100 studio
sudo docker compose -f compose.yaml logs --tail=100 caddy
curl -v https://studio.kurniawangroupofficial.com/api/health
```
