Troubleshooting GCP
5. Deployment (Modul 5)
Section titled “5. Deployment (Modul 5)”| Gejala | Penyebab | Solusi cepat |
|---|---|---|
| Tidak bisa daftar GCP | tidak punya kartu kredit | pakai project bersama panitia (lihat §7) |
| SSH-in-Browser gagal | belum Authorize / firewall / API | klik Authorize; cek rule default-allow-ssh; enable Compute Engine API |
permission denied ... docker daemon |
grup docker belum aktif | exit lalu SSH ulang setelah sudo usermod -aG docker $USER |
| Cloud Build gagal di step 3 (SSH) | 4 role IAM belum ditambah | tambahkan Compute Instance Admin (v1), Compute OS Login, IAP-secured Tunnel User, Service Account User |
| Build sukses tapi web tidak berubah | container belum restart | docker compose pull nextjs && docker compose up -d nextjs; cek docker compose logs nextjs |
cd ~/app: No such file di Cloud Build |
SSH dari service account punya home berbeda | ubah cd ~/app → cd /home/<user-vm>/app (Modul 6.1 F) |
| Domain belum resolve | propagasi DNS | nslookup <domain>; TTL 5 menit; tunggu |
Certbot Timeout during connect |
port 80 tertutup / A record salah | cek firewall GCP Allow HTTP traffic; cek A record |
bind: address already in use port 80 |
nginx host vs nginx container | sudo systemctl stop nginx && sudo systemctl disable nginx |
6b. GeoServer di VM: memori, unggah data, dan kata sandi
Section titled “6b. GeoServer di VM: memori, unggah data, dan kata sandi”Bagian ini disusun dari analisis konfigurasi, bukan dari pengujian penuh. Kolom Status menyatakan apakah gejalanya sudah terbukti atau masih dugaan yang perlu dibuktikan lewat workbook asisten trainer.
| Gejala | Penyebab | Solusi cepat | Status |
|---|---|---|---|
geoserver_app berstatus Exited (137) dan mati sendiri |
Kernel menghentikan container karena memori habis pada e2-medium 4 GB |
Periksa docker inspect --format '{{.State.OOMKilled}}' geoserver_app. Turunkan MAXIMUM_MEMORY dari 2048m ke 1024m, lalu docker compose up -d geoserver |
Dugaan, perlu diukur |
| VM terasa berat saat GeoServer boot | Heap 2 GB + overhead JVM dan Tomcat ≈ 2,5 GB dari 4 GB | Catat free -h dan docker stats sebelum mengubah apa pun, lalu putuskan turun heap atau naik ke e2-standard-2 |
Dugaan, perlu diukur |
Halaman /geoserver/web/ menampilkan 502 |
Nginx container belum memuat rute /geoserver/ |
Pastikan nginx.conf pada clone VM memuat blok location /geoserver/, sinkronkan berkas, lalu reload Nginx |
Dugaan, perlu diuji |
GeoServer minta admin / geoserver padahal sudah diganti |
Kata sandi hasil perubahan lewat antarmuka web tidak bertahan | Isi GEOSERVER_ADMIN_PASSWORD pada docker-compose.yml. Tanpa variabel itu, image membuat kata sandi acak baru setiap container dijalankan dan menuliskannya pada log startup |
Terbukti dari dokumentasi image |
| Layer hilang setelah container di-restart | Volume ./geoserver-data tidak terpasang atau terhapus |
Periksa docker compose config dan pastikan volume menunjuk ke /opt/geoserver/data_dir. Jalankan docker compose down tanpa -v |
Dugaan, perlu diuji |
JAVA_OPTS pada modul tidak berpengaruh |
Image kartoza/geoserver membaca INITIAL_MEMORY dan MAXIMUM_MEMORY, bukan JAVA_OPTS |
Ganti nama variabelnya pada docker-compose.yml |
Terbukti dari dokumentasi image |
| Permintaan WMS membalas halaman login, bukan gambar | ROLE_ANONYMOUS belum diberi izin Read |
Tab Security pada layer, aktifkan Read untuk ROLE_ANONYMOUS |
Terbukti dari perilaku GeoServer |
ServiceException tentang layer tidak ditemukan |
Nama workspace atau nama layer salah pada permintaan WFS | Periksa daftar Layers, lalu pakai format workspace:nama_layer |
Terbukti dari perilaku GeoServer |
Perintah pengukuran yang dipakai untuk mengisi tabel di atas:
free -hsudo docker stats --no-streamsudo docker inspect --format '{{.Name}} OOMKilled={{.State.OOMKilled}}' geoserver_app