# ADR-0004 — QNAP OSS untuk File Storage **Tanggal:** 2026-xx-xx **Status:** Accepted --- ## Konteks geonet-console perlu storage untuk avatar user. Awalnya disimpan di filesystem lokal Docker container, tapi container rebuild akan menghapus semua file. ## Keputusan Menggunakan **QNAP QuObjects (OSS)** — S3-compatible object storage di 10.100.1.10:8010. Laravel menggunakan disk `oss` dengan driver `s3` + `use_path_style_endpoint=true`. ## Alasan - QNAP TS-932X sudah ada di infrastruktur (tidak perlu beli) - S3-compatible → bisa pakai Laravel `s3` driver standar - File persists meski container rebuild atau crash - URL publik via Nginx proxy (`file.gisportal.id/super-apps/`) tanpa expose QNAP langsung ## Alternatif Ditolak - **Docker volume lokal:** File hilang saat image recreate, tidak scalable - **NFS mount:** Lebih kompleks, risiko hanging mount - **Cloud S3 (AWS, Cloudflare R2):** Biaya, data harus internal - **Minio:** Perlu server/container tambahan, QNAP sudah ada ## Konsekuensi - Bucket `super-apps` wajib di-set `public-read` (`X-Container-Read: .r:*,.rlistings`) - ACL bisa ter-reset → monitoring manual atau script cek berkala - Format access key: `:` (format QNAP) - Driver `s3` wajib pakai `use_path_style_endpoint=true` (QNAP tidak support virtual hosted-style) - `OSS_SECRET_ACCESS_KEY` hanya ada di `.env` server — tidak di repo