# Deployment Guide > **Terakhir Diperbarui:** 2026-06-29 --- ## Deploy FastAPI Collector ### Step 1 — Buat archive di lokal (Windows PowerShell) ```powershell tar -czf "$env:TEMP\collector.tar.gz" ` --exclude=".venv" ` --exclude="__pycache__" ` --exclude=".pytest_cache" ` --exclude="*.egg-info" ` -C "D:\Project\app on git\GeoNetAgent\collector" . ``` ### Step 2 — Upload ke server ```powershell scp -o "MACs=hmac-sha1" "$env:TEMP\collector.tar.gz" "root@10.100.1.24:/opt/stacks/geonetagent-collector/collector.tar.gz" ``` ### Step 3 — Extract, rebuild, restart ```bash ssh -m hmac-sha1 root@10.100.1.24 -p 22 "cd /opt/stacks/geonetagent-collector && tar -xzf collector.tar.gz -C collector-src && rm collector.tar.gz && docker compose build --no-cache && docker compose up -d" ``` Atau gunakan script: ```powershell .\infra\collector\push_collector.ps1 ``` ### Step 4 — Verifikasi ```bash ssh -m hmac-sha1 root@10.100.1.24 -p 22 "docker ps --filter name=geonet-collector && docker logs geonet-collector --tail 20" curl https://collector.gisportal.id/health ``` --- ## Publish Agent ke Server Setelah bump versi agent (update `agent/VERSION` + `agent/install/manifest.json`): ```powershell .\infra\collector\publish_agent_install.ps1 ``` Script ini mengupload file agent ke `agent.gisportal.id/install/` sehingga: - User baru mendapat versi terbaru saat install - Agent yang sudah terpasang auto-update saat kirim laporan berikutnya (cek `manifest.json` vs `VERSION` lokal) --- ## Deploy Nginx Config ```bash bash infra/collector/deploy_nginx.sh ``` Atau manual: ```powershell scp -o "MACs=hmac-sha1" "D:\Project\app on git\GeoNetAgent\infra\nginx\collector.conf" "root@10.100.1.24:/etc/nginx/conf.d/production/collector.conf" ssh -m hmac-sha1 root@10.100.1.24 -p 22 "nginx -t && nginx -s reload" ``` --- ## Apply DB Migration ```powershell # Upload migration file scp -o "MACs=hmac-sha1" "D:\Project\app on git\GeoNetAgent\infra\db\00X_migration.sql" "root@10.100.1.25:/tmp/migration.sql" # Apply di server DB ssh -m hmac-sha1 root@10.100.1.25 -p 22 "psql -U geonet_collector -d geonetagent_dev -f /tmp/migration.sql" ``` --- ## Install Agent ke Endpoint (User) User menjalankan di PowerShell Admin: ```powershell Invoke-WebRequest -Uri 'https://agent.gisportal.id/install/GeoNetAgent-Install.ps1' -OutFile "$env:TEMP\GeoNetAgent-Install.ps1" -UseBasicParsing & "$env:TEMP\GeoNetAgent-Install.ps1" ``` Atau dengan `-SkipInitialRun` (install task saja, tanpa kirim laporan langsung): ```powershell & "$env:TEMP\GeoNetAgent-Install.ps1" -SkipInitialRun ``` --- ## Rollout Massal via GPO Lihat `agent/gpo/README.md` untuk panduan script startup GPO. --- ## Checklist Deployment - [ ] Update `agent/VERSION` (jika bump versi agent) - [ ] Update `agent/install/manifest.json` (file list + versi) - [ ] `publish_agent_install.ps1` — setelah bump versi agent - [ ] `push_collector.ps1` — setelah perubahan collector/UI - [ ] Verifikasi `docker ps` — container running - [ ] Verifikasi `https://collector.gisportal.id/health` — 200 OK - [ ] Verifikasi `https://agent.gisportal.id/install/` — accessible - [ ] Update `Riwayat milestone` di `.cursor/progress.md` - [ ] Update `Sync terakhir` di `perintah.md`