Created comprehensive VPN setup tooling for Peaceful Spirit L2TP/IPsec connection and enhanced agent documentation framework. VPN Configuration (PST-NW-VPN): - Setup-PST-L2TP-VPN.ps1: Automated L2TP/IPsec setup with split-tunnel and DNS - Connect-PST-VPN.ps1: Connection helper with PPP adapter detection, DNS (192.168.0.2), and route config (192.168.0.0/24) - Connect-PST-VPN-Standalone.ps1: Self-contained connection script for remote deployment - Fix-PST-VPN-Auth.ps1: Authentication troubleshooting for CHAP/MSChapv2 - Diagnose-VPN-Interface.ps1: Comprehensive VPN interface and routing diagnostic - Quick-Test-VPN.ps1: Fast connectivity verification (DNS/router/routes) - Add-PST-VPN-Route-Manual.ps1: Manual route configuration helper - vpn-connect.bat, vpn-disconnect.bat: Simple batch file shortcuts - OpenVPN config files (Windows-compatible, abandoned for L2TP) Key VPN Implementation Details: - L2TP creates PPP adapter with connection name as interface description - UniFi auto-configures DNS (192.168.0.2) but requires manual route to 192.168.0.0/24 - Split-tunnel enabled (only remote traffic through VPN) - All-user connection for pre-login auto-connect via scheduled task - Authentication: CHAP + MSChapv2 for UniFi compatibility Agent Documentation: - AGENT_QUICK_REFERENCE.md: Quick reference for all specialized agents - documentation-squire.md: Documentation and task management specialist agent - Updated all agent markdown files with standardized formatting Project Organization: - Moved conversation logs to dedicated directories (guru-connect-conversation-logs, guru-rmm-conversation-logs) - Cleaned up old session JSONL files from projects/msp-tools/ - Added guru-connect infrastructure (agent, dashboard, proto, scripts, .gitea workflows) - Added guru-rmm server components and deployment configs Technical Notes: - VPN IP pool: 192.168.4.x (client gets 192.168.4.6) - Remote network: 192.168.0.0/24 (router at 192.168.0.10) - PSK: rrClvnmUeXEFo90Ol+z7tfsAZHeSK6w7 - Credentials: pst-admin / 24Hearts$ Files: 15 VPN scripts, 2 agent docs, conversation log reorganization, guru-connect/guru-rmm infrastructure additions Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
14 KiB
GuruConnect CI/CD Activation Guide
Date: 2026-01-18 Status: Ready for Activation Server: 172.16.3.30 (gururmm)
Prerequisites Complete
- Gitea Actions workflows committed
- Deployment automation scripts created
- Gitea Actions runner binary installed
- Systemd service configured
- All documentation complete
Step 1: Register Gitea Actions Runner
1.1 Get Registration Token
-
Open browser and navigate to:
https://git.azcomputerguru.com/admin/actions/runners -
Log in with Gitea admin credentials
-
Click "Create new Runner"
-
Copy the registration token (starts with something like
D0g...)
1.2 Register Runner on Server
# SSH to server
ssh guru@172.16.3.30
# Register runner with token from above
sudo -u gitea-runner act_runner register \
--instance https://git.azcomputerguru.com \
--token YOUR_REGISTRATION_TOKEN_HERE \
--name gururmm-runner \
--labels ubuntu-latest,ubuntu-22.04
Expected Output:
INFO Registering runner, arch=amd64, os=linux, version=0.2.11.
INFO Successfully registered runner.
1.3 Start Runner Service
# Reload systemd configuration
sudo systemctl daemon-reload
# Enable runner to start on boot
sudo systemctl enable gitea-runner
# Start runner service
sudo systemctl start gitea-runner
# Check status
sudo systemctl status gitea-runner
Expected Output:
● gitea-runner.service - Gitea Actions Runner
Loaded: loaded (/etc/systemd/system/gitea-runner.service; enabled)
Active: active (running) since Sat 2026-01-18 16:00:00 UTC
1.4 Verify Registration
-
Go back to: https://git.azcomputerguru.com/admin/actions/runners
-
Verify "gururmm-runner" appears in the list
-
Status should show: Online (green)
Step 2: Test Build Workflow
2.1 Trigger First Build
# On server
cd ~/guru-connect
# Make empty commit to trigger CI
git commit --allow-empty -m "test: trigger CI/CD pipeline"
git push origin main
2.2 Monitor Build Progress
-
Open browser: https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
-
You should see a new workflow run: "Build and Test"
-
Click on the workflow run to view progress
-
Watch the jobs complete:
- Build Server (Linux) - ~2-3 minutes
- Build Agent (Windows) - ~2-3 minutes
- Security Audit - ~1 minute
- Build Summary - ~10 seconds
2.3 Expected Results
Build Server Job:
✓ Checkout code
✓ Install Rust toolchain
✓ Cache Cargo dependencies
✓ Install dependencies (pkg-config, libssl-dev, protobuf-compiler)
✓ Build server
✓ Upload server binary
Build Agent Job:
✓ Checkout code
✓ Install Rust toolchain
✓ Install cross-compilation tools
✓ Build agent
✓ Upload agent binary
Security Audit Job:
✓ Checkout code
✓ Install Rust toolchain
✓ Install cargo-audit
✓ Run security audit
2.4 Download Build Artifacts
-
Scroll down to Artifacts section
-
Download artifacts:
guruconnect-server-linux(server binary)guruconnect-agent-windows(agent .exe)
-
Verify file sizes:
- Server: ~15-20 MB
- Agent: ~10-15 MB
Step 3: Test Workflow
3.1 Trigger Test Suite
# Tests run automatically on push, or trigger manually:
cd ~/guru-connect
# Make a code change to trigger tests
echo "// Test comment" >> server/src/main.rs
git add server/src/main.rs
git commit -m "test: trigger test workflow"
git push origin main
3.2 Monitor Test Execution
-
Go to: https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
-
Click on "Run Tests" workflow
-
Watch jobs complete:
- Test Server - ~3-5 minutes
- Test Agent - ~2-3 minutes
- Code Coverage - ~4-6 minutes
- Lint - ~2-3 minutes
3.3 Expected Results
Test Server Job:
✓ Run unit tests
✓ Run integration tests
✓ Run doc tests
Test Agent Job:
✓ Run agent tests
Code Coverage Job:
✓ Install tarpaulin
✓ Generate coverage report
✓ Upload coverage artifact
Lint Job:
✓ Check formatting (server) - cargo fmt
✓ Check formatting (agent) - cargo fmt
✓ Run clippy (server) - zero warnings
✓ Run clippy (agent) - zero warnings
Step 4: Test Deployment Workflow
4.1 Create Version Tag
# On server
cd ~/guru-connect/scripts
# Create first release tag (v0.1.0)
./version-tag.sh patch
Expected Interaction:
=========================================
GuruConnect Version Tagging
=========================================
Current version: v0.0.0
New version: v0.1.0
Changes since v0.0.0:
-------------------------------------------
5b7cf5f ci: add Gitea Actions workflows and deployment automation
[previous commits...]
-------------------------------------------
Create tag v0.1.0? (y/N) y
Updating Cargo.toml versions...
Updated server/Cargo.toml
Updated agent/Cargo.toml
Committing version bump...
[main abc1234] chore: bump version to v0.1.0
Creating tag v0.1.0...
Tag created successfully
To push tag to remote:
git push origin v0.1.0
4.2 Push Tag to Trigger Deployment
# Push the version bump commit
git push origin main
# Push the tag (this triggers deployment workflow)
git push origin v0.1.0
4.3 Monitor Deployment
-
Go to: https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
-
Click on "Deploy to Production" workflow
-
Watch deployment progress:
- Deploy Server - ~10-15 minutes
- Create Release - ~2-3 minutes
4.4 Expected Deployment Flow
Deploy Server Job:
✓ Checkout code
✓ Install Rust toolchain
✓ Build release binary
✓ Create deployment package
✓ Transfer to server (via SSH)
✓ Run deployment script
├─ Backup current version
├─ Stop service
├─ Deploy new binary
├─ Start service
├─ Health check
└─ Verify deployment
✓ Upload deployment artifact
Create Release Job:
✓ Create GitHub/Gitea release
✓ Upload release assets
├─ guruconnect-server-v0.1.0.tar.gz
├─ guruconnect-agent-v0.1.0.exe
└─ SHA256SUMS
4.5 Verify Deployment
# Check service status
sudo systemctl status guruconnect
# Check new version
~/guru-connect/target/x86_64-unknown-linux-gnu/release/guruconnect-server --version
# Should output: v0.1.0
# Check health endpoint
curl http://172.16.3.30:3002/health
# Should return: {"status":"OK"}
# Check backup created
ls -lh /home/guru/deployments/backups/
# Should show: guruconnect-server-20260118-HHMMSS
# Check artifact saved
ls -lh /home/guru/deployments/artifacts/
# Should show: guruconnect-server-v0.1.0.tar.gz
Step 5: Test Manual Deployment
5.1 Download Deployment Artifact
# From Actions page, download: guruconnect-server-v0.1.0.tar.gz
# Or use artifact from server:
cd /home/guru/deployments/artifacts
ls -lh guruconnect-server-v0.1.0.tar.gz
5.2 Run Manual Deployment
cd ~/guru-connect/scripts
./deploy.sh /home/guru/deployments/artifacts/guruconnect-server-v0.1.0.tar.gz
Expected Output:
=========================================
GuruConnect Deployment Script
=========================================
Package: /home/guru/deployments/artifacts/guruconnect-server-v0.1.0.tar.gz
Target: /home/guru/guru-connect
Creating backup...
[OK] Backup created: /home/guru/deployments/backups/guruconnect-server-20260118-161500
Stopping GuruConnect service...
[OK] Service stopped
Extracting deployment package...
Deploying new binary...
[OK] Binary deployed
Archiving deployment package...
[OK] Artifact saved
Starting GuruConnect service...
[OK] Service started successfully
Running health check...
[OK] Health check: PASSED
Deployment version information:
GuruConnect Server v0.1.0
=========================================
Deployment Complete!
=========================================
Deployment time: 20260118-161500
Backup location: /home/guru/deployments/backups/guruconnect-server-20260118-161500
Artifact location: /home/guru/deployments/artifacts/guruconnect-server-20260118-161500.tar.gz
Troubleshooting
Runner Not Starting
Symptom: systemctl status gitea-runner shows "inactive" or "failed"
Solution:
# Check logs
sudo journalctl -u gitea-runner -n 50
# Common issues:
# 1. Not registered - run registration command again
# 2. Wrong token - get new token from Gitea admin
# 3. Permissions - ensure gitea-runner user owns /home/gitea-runner/.runner
# Re-register if needed
sudo -u gitea-runner act_runner register \
--instance https://git.azcomputerguru.com \
--token NEW_TOKEN_HERE
Workflow Not Triggering
Symptom: Push to main branch but no workflow appears in Actions tab
Checklist:
- Is runner registered and online? (Check admin/actions/runners)
- Are workflow files in
.gitea/workflows/directory? - Did you push to the correct branch? (main or develop)
- Are Gitea Actions enabled in repository settings?
Solution:
# Verify workflows committed
git ls-tree -r main --name-only | grep .gitea/workflows
# Should show:
# .gitea/workflows/build-and-test.yml
# .gitea/workflows/deploy.yml
# .gitea/workflows/test.yml
# If missing, add and commit:
git add .gitea/
git commit -m "ci: add missing workflows"
git push origin main
Build Failing
Symptom: Build workflow shows red X
Solution:
# View logs in Gitea Actions tab
# Common issues:
# 1. Missing dependencies
# Add to workflow: apt-get install -y [package]
# 2. Rust compilation errors
# Fix code and push again
# 3. Test failures
# Run tests locally first: cargo test
# 4. Clippy warnings
# Fix warnings: cargo clippy --fix
Deployment Failing
Symptom: Deploy workflow fails or service won't start after deployment
Solution:
# Check deployment logs
cat /home/guru/deployments/deploy-*.log
# Check service logs
sudo journalctl -u guruconnect -n 50
# Manual rollback if needed
ls /home/guru/deployments/backups/
cp /home/guru/deployments/backups/guruconnect-server-TIMESTAMP \
~/guru-connect/target/x86_64-unknown-linux-gnu/release/guruconnect-server
sudo systemctl restart guruconnect
Health Check Failing
Symptom: Health check returns connection refused or timeout
Solution:
# Check if service is running
sudo systemctl status guruconnect
# Check if port is listening
netstat -tlnp | grep 3002
# Check server logs
sudo journalctl -u guruconnect -f
# Test manually
curl -v http://172.16.3.30:3002/health
# Common issues:
# 1. Service not started - sudo systemctl start guruconnect
# 2. Port blocked - check firewall
# 3. Database connection issue - check .env file
Validation Checklist
After completing all steps, verify:
- Runner shows "Online" in Gitea admin panel
- Build workflow completes successfully (green checkmark)
- Test workflow completes successfully (all tests pass)
- Deployment workflow completes successfully
- Service restarts with new version
- Health check returns "OK"
- Backup created in
/home/guru/deployments/backups/ - Artifact saved in
/home/guru/deployments/artifacts/ - Build artifacts downloadable from Actions tab
- Version tag appears in repository tags
- Manual deployment script works
Next Steps After Activation
1. Configure Deployment SSH Keys (Optional)
For fully automated deployment without manual intervention:
# Generate SSH key for runner
sudo -u gitea-runner ssh-keygen -t ed25519 -C "gitea-runner@gururmm"
# Add public key to authorized_keys
sudo -u gitea-runner cat /home/gitea-runner/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
# Test SSH connection
sudo -u gitea-runner ssh guru@172.16.3.30 whoami
2. Set Up Notification Webhooks (Optional)
Configure Gitea to send notifications on build/deployment events:
- Go to repository > Settings > Webhooks
- Add webhook for Slack/Discord/Email
- Configure triggers: Push, Pull Request, Release
3. Add More Runners (Optional)
For faster builds and multi-platform support:
- Windows Runner: For native Windows agent builds
- macOS Runner: For macOS agent builds
- Staging Runner: For staging environment deployments
4. Enhance CI/CD (Optional)
Performance:
- Add caching for dependencies
- Parallel test execution
- Incremental builds
Quality:
- Code coverage thresholds
- Performance benchmarks
- Security scanning (SAST/DAST)
Deployment:
- Staging environment
- Canary deployments
- Blue-green deployments
- Smoke tests after deployment
Quick Reference Commands
# Runner management
sudo systemctl status gitea-runner
sudo systemctl restart gitea-runner
sudo journalctl -u gitea-runner -f
# Create version tag
cd ~/guru-connect/scripts
./version-tag.sh [major|minor|patch]
# Manual deployment
./deploy.sh /path/to/package.tar.gz
# View workflows
https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
# Check service
sudo systemctl status guruconnect
curl http://172.16.3.30:3002/health
# View logs
sudo journalctl -u guruconnect -f
# Rollback deployment
cp /home/guru/deployments/backups/guruconnect-server-TIMESTAMP \
~/guru-connect/target/x86_64-unknown-linux-gnu/release/guruconnect-server
sudo systemctl restart guruconnect
Support Resources
Gitea Actions Documentation:
- Overview: https://docs.gitea.com/usage/actions/overview
- Workflow Syntax: https://docs.gitea.com/usage/actions/workflow-syntax
- Act Runner: https://gitea.com/gitea/act_runner
Repository:
Created Documentation:
CI_CD_SETUP.md- Complete CI/CD setup guidePHASE1_WEEK3_COMPLETE.md- Week 3 completion summaryACTIVATE_CI_CD.md- This guide
Last Updated: 2026-01-18 Status: Ready for Activation Action Required: Register Gitea Actions runner with admin token