PLGT Stack Installation Guide
PLGT Stack Installation Guide
Section titled “PLGT Stack Installation Guide”Last Updated: 2026-01-05
Prerequisites
Section titled “Prerequisites”System Requirements
Section titled “System Requirements”| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 4 cores |
| RAM | 4 GB | 8 GB |
| Disk | 50 GB SSD | 100 GB SSD |
| OS | Ubuntu 20.04+ | Ubuntu 22.04 LTS |
Software Requirements
Section titled “Software Requirements”- Docker Engine 20.10+
- Docker Compose 2.0+
- Git
Installation Steps
Section titled “Installation Steps”Step 1: Install Docker
Section titled “Step 1: Install Docker”# Update package indexsudo apt update
# Install prerequisitessudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# Add Docker GPG keycurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Add Docker repositoryecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Dockersudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Add user to docker groupsudo usermod -aG docker $USERdocker --versiondocker compose versionStep 2: Clone Repository
Section titled “Step 2: Clone Repository”# Navigate to deployment directorycd /opt
# Clone PLG stack repositorygit clone https://github.com/isutech/plg-unified.gitcd plg-unifiedStep 3: Configure Environment
Section titled “Step 3: Configure Environment”# Copy example configurationcp .env.example .env
# Edit configurationnano .envRequired Configuration:
# Grafana Admin (CHANGE THESE!)GRAFANA_ADMIN_USER=adminGRAFANA_ADMIN_PASSWORD=your-secure-password
# External URLGRAFANA_ROOT_URL=https://monitor.isutech.co.za
# Email AlertsSMTP_ENABLED=trueSMTP_HOST=smtp.gmail.com:587SMTP_USER=alerts@isutech.co.zaSMTP_PASSWORD=your-app-passwordSMTP_FROM=alerts@isutech.co.zaStep 4: Configure Alert Recipients
Section titled “Step 4: Configure Alert Recipients”Edit alertmanager/alertmanager.yml:
receivers: - name: 'isutech-team' email_configs: - to: 'nhlanhla@isutech.co.za' send_resolved: trueStep 5: Deploy the Stack
Section titled “Step 5: Deploy the Stack”# Make scripts executablechmod +x scripts/*.sh
# Deploy./scripts/deploy.sh deployStep 6: Verify Installation
Section titled “Step 6: Verify Installation”# Check health./scripts/health-check.shExpected Output:
========================================PLGT Stack Health Check - iSu Technologies========================================
[OK] Prometheus is healthy (HTTP 200)[OK] Alertmanager is healthy (HTTP 200)[OK] Loki is healthy (HTTP 200)[OK] Tempo is healthy (HTTP 200)[OK] Grafana is healthy (HTTP 200)[OK] Node Exporter is healthy (HTTP 200)[OK] cAdvisor is healthy (HTTP 200)[OK] Blackbox Exporter is healthy (HTTP 200)[OK] Alloy is healthy (HTTP 200)
========================================Summary: 9/9 services healthy========================================All services are healthy!Production Configuration
Section titled “Production Configuration”Nginx Reverse Proxy
Section titled “Nginx Reverse Proxy”server { listen 80; server_name monitor.isutech.co.za; return 301 https://$server_name$request_uri;}
server { listen 443 ssl http2; server_name monitor.isutech.co.za;
ssl_certificate /etc/letsencrypt/live/monitor.isutech.co.za/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/monitor.isutech.co.za/privkey.pem;
# Grafana location / { proxy_pass http://localhost:3004; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
# Loki API proxy (for external log shipping) location /loki/ { proxy_pass http://localhost:3100/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scope-OrgID $http_x_scope_orgid; }}Firewall Configuration
Section titled “Firewall Configuration”# Allow essential ports onlysudo ufw allow 22/tcp # SSHsudo ufw allow 80/tcp # HTTPsudo ufw allow 443/tcp # HTTPS
# Enable firewallsudo ufw enablePost-Installation
Section titled “Post-Installation”Access Grafana
Section titled “Access Grafana”- Open browser:
https://monitor.isutech.co.za - Login with credentials from
.env - Navigate to Dashboards → iSu Technologies
Verify Data Sources
Section titled “Verify Data Sources”- Go to Configuration → Data sources
- Click Test on each data source (Prometheus, Loki, Tempo)
- All should show “Data source is working”
Upgrading
Section titled “Upgrading”cd /opt/plg-unified
# Pull latest changesgit pull origin main
# Pull latest imagesdocker compose pull
# Restart with new imagesdocker compose up -d
# Verify health./scripts/health-check.shUninstallation
Section titled “Uninstallation”# Stop and remove containersdocker compose down
# Remove volumes (WARNING: Deletes all data!)docker compose down -v
# Remove imagesdocker compose down --rmi allNext: Configuration Reference