Official installation guide and release manifests for iGAT. Prebuilt Docker images with signed digests, automated update scripts, and separate channels for Subscription and Perpetual license tracks.
Deploy the full iGAT stack on a bare Ubuntu 24.04 LTS server. No source code distribution required — all images are pulled from GHCR. Estimated time: under 10 minutes on a clean machine.
docker group, then log out and back in.
# Official Docker Engine install (not snap) curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER # Log out and back in to apply group, then verify docker --version && docker compose version
read:packages scope at
github.com/settings/tokens.
echo "<YOUR_GITHUB_PAT>" | docker login ghcr.io \ -u <your-github-username> --password-stdin # Expected output: Login Succeeded
sudo mkdir -p /opt/igat && sudo chown $USER:$USER /opt/igat && cd /opt/igat git clone --depth 1 --filter=blob:none --sparse \ https://github.com/spc-economic-zone/igat.git . git sparse-checkout set \ docker-compose.prod.yml docker/ scripts/ .env.prod.example
POSTGRES_PASSWORD and the public domain for NEXT_PUBLIC_API_URL.
IGAT_REGISTRY=ghcr.io IGAT_IMAGE_PREFIX=spc-economic-zone/igat IGAT_VERSION=1.0.0-rc.1 POSTGRES_PASSWORD=<strong-password> NEXT_PUBLIC_API_URL=https://spc.igat.com.ph STORAGE_PROVIDER=local NAS_UPLOADS_PATH=./volumes/uploads NAS_BACKUPS_PATH=./volumes/backups
mkdir -p volumes/uploads volumes/backups docker compose --env-file .env.prod -f docker-compose.prod.yml pull # Start database first, wait for init docker compose --env-file .env.prod -f docker-compose.prod.yml up -d postgres redis sleep 8 # Start full stack docker compose --env-file .env.prod -f docker-compose.prod.yml up -d
docker compose --env-file .env.prod -f docker-compose.prod.yml \ exec api bun run db:migrate # First install only docker compose --env-file .env.prod -f docker-compose.prod.yml \ exec api bun run db:seed
mkdir -p /opt/igat-gateway && cd /opt/igat-gateway cp /opt/igat/docker/cloud-gateway/docker-compose.yml . echo "CLOUDFLARE_TUNNEL_TOKEN=<your-token>" > .env.gateway docker network create igat_default 2>/dev/null || true docker compose --env-file .env.gateway up -d cloudflared # Verify — look for "Registered tunnel connection" docker logs igat-cloudflared --tail 20
Point update-lgu.sh at the manifest URL for your license track.
The script validates entitlements, backs up the database, pulls the new image,
and rolls back automatically on health check failure.
# Subscription — pull latest stable release ./scripts/update-lgu.sh --auto \ --manifest-url https://releases.igat.com.ph/releases/subscription/latest.json # Perpetual — pull latest major release only ./scripts/update-lgu.sh --auto \ --manifest-url https://releases.igat.com.ph/releases/perpetual/latest.json # Preview a specific version without applying ./scripts/update-lgu.sh --dry-run 1.2.0