- Added generated index files and report directories to .gitignore to prevent unnecessary tracking of transient files. - Updated README links to reflect new documentation paths for better navigation. - Improved documentation organization by ensuring all links point to the correct locations, enhancing user experience and accessibility.
9.8 KiB
SMOM-DBIS-138 Next Steps Guide
Date
2025-12-08
Status
✅ All VMs Deployed - Ready for Configuration
Current Status
VM Deployment
- ✅ 18 VMs Created with VMIDs assigned
- ⚠️ VMs in "stopped" state - Normal during initial creation
- ⏳ Waiting for VMs to start - Controller is processing
Infrastructure VMs
- ✅ nginx-proxy-vm (VMID: 118)
- ✅ cloudflare-tunnel-vm (VMID: 119)
Application VMs
- ✅ 4 Validators (VMIDs: 132, 133, 134, 135)
- ✅ 4 Sentries (VMIDs: 127, 128, 129, 130)
- ✅ 4 RPC Nodes (VMIDs: 123, 124, 125, 126)
- ✅ Services (VMID: 131)
- ✅ Blockscout (VMID: 120)
- ✅ Monitoring (VMID: 122)
- ✅ Management (VMID: 121)
Project Locations
- Sankofa Project (VM Deployment):
~/projects/Sankofa - SMOM-DBIS-138 Project (Blockchain Network):
~/projects/smom-dbis-138
Important: The actual SMOM-DBIS-138 blockchain network configuration, contracts, and deployment scripts are in the separate project at ~/projects/smom-dbis-138. After VMs are running, you'll need to configure them using scripts from that project.
Step-by-Step Next Steps
1. Monitor VM Startup
# Watch VM status
kubectl get proxmoxvm -A -w
# Or use verification script
./scripts/verify-deployment.sh
Expected: VMs will transition from "stopped" to "running" state and receive IP addresses.
1.1. Collect VM IP Addresses
Once VMs have IP addresses, collect them for use in SMOM-DBIS-138 project:
# From Sankofa project root
./scripts/get-smom-vm-ips.sh
This will:
- Collect all VM IP addresses
- Save to
smom-vm-ips.txtin Sankofa project - Copy to
~/projects/smom-dbis-138/config/vm-ips.txtfor use in SMOM-DBIS-138 project
2. Configure Infrastructure VMs
2.1 Nginx Proxy VM
Get VM IP:
kubectl get proxmoxvm nginx-proxy-vm -n default -o jsonpath='{.status.ipAddress}'
SSH into VM:
ssh admin@<nginx-proxy-ip>
Configuration Steps:
-
Install SSL certificates:
sudo certbot --nginx -d your-domain.com -
Configure backend services:
- See:
docs/configs/nginx/README.md - Create configs in
/etc/nginx/sites-available/ - Enable and reload nginx
- See:
-
Test configuration:
sudo nginx -t sudo systemctl reload nginx
Documentation: docs/configs/nginx/README.md
2.2 Cloudflare Tunnel VM
Get VM IP:
kubectl get proxmoxvm cloudflare-tunnel-vm -n default -o jsonpath='{.status.ipAddress}'
SSH into VM:
ssh admin@<cloudflare-tunnel-ip>
Configuration Steps:
-
Create tunnel in Cloudflare dashboard:
- Go to Zero Trust → Networks → Tunnels
- Create tunnel:
smom-dbis-138-tunnel - Copy tunnel token/credentials
-
Configure credentials:
sudo mkdir -p /etc/cloudflared sudo nano /etc/cloudflared/tunnel-credentials.json # Paste tunnel credentials -
Configure tunnel:
sudo cp docs/configs/cloudflare/tunnel-config.yaml /etc/cloudflared/config.yaml sudo nano /etc/cloudflared/config.yaml # Update with your settings -
Start tunnel:
sudo systemctl start cloudflared sudo systemctl enable cloudflared sudo systemctl status cloudflared
Documentation: docs/configs/cloudflare/README.md
3. Configure Application VMs
3.1 Validators (4 VMs)
Get VM IPs:
# Use the IP collection script
./scripts/get-smom-vm-ips.sh
# Or manually
for i in 01 02 03 04; do
echo "Validator $i:"
kubectl get proxmoxvm smom-validator-$i -n default -o jsonpath='{.status.ipAddress}'
echo
done
Configuration Steps:
-
Switch to SMOM-DBIS-138 project:
cd ~/projects/smom-dbis-138 -
Update configuration with VM IPs:
source config/vm-ips.txt # If available # Or manually update .env file with validator IPs -
Use SMOM-DBIS-138 deployment scripts:
# Check available commands make help # Deploy validators (example - check actual commands in SMOM-DBIS-138 project) # make deploy-validators -
SSH into each validator VM and configure:
- Install Hyperledger Besu
- Configure validator keys
- Set up genesis configuration
- Start validator service
- Verify validator is syncing
Reference: See ~/projects/smom-dbis-138/README.md and ~/projects/smom-dbis-138/runbooks/ for detailed instructions.
3.2 Sentries (4 VMs)
Get VM IPs:
for i in 01 02 03 04; do
echo "Sentry $i:"
kubectl get proxmoxvm smom-sentry-$i -n default -o jsonpath='{.status.ipAddress}'
echo
done
Configuration Steps:
- SSH into each sentry VM
- Install SMOM-DBIS-138 sentry software
- Configure sentry connections to validators
- Start sentry service
- Verify sentry is connected
3.3 RPC Nodes (4 VMs)
Get VM IPs:
for i in 01 02 03 04; do
echo "RPC Node $i:"
kubectl get proxmoxvm smom-rpc-node-$i -n default -o jsonpath='{.status.ipAddress}'
echo
done
Configuration Steps:
- SSH into each RPC node VM
- Install SMOM-DBIS-138 RPC node software
- Configure RPC endpoints
- Start RPC service
- Verify RPC is accessible
3.4 Services VM
Get VM IP:
kubectl get proxmoxvm smom-services -n default -o jsonpath='{.status.ipAddress}'
Configuration Steps:
- SSH into services VM
- Install SMOM-DBIS-138 services
- Configure service endpoints
- Start services
- Verify services are running
3.5 Blockscout VM
Get VM IP:
kubectl get proxmoxvm smom-blockscout -n default -o jsonpath='{.status.ipAddress}'
Configuration Steps:
- SSH into blockscout VM
- Install Blockscout explorer
- Configure database connection
- Start Blockscout service
- Verify explorer is accessible
3.6 Monitoring VM
Get VM IP:
kubectl get proxmoxvm smom-monitoring -n default -o jsonpath='{.status.ipAddress}'
Configuration Steps:
- SSH into monitoring VM
- Install monitoring stack (Prometheus, Grafana)
- Configure metrics collection
- Start monitoring services
- Verify dashboards are accessible
3.7 Management VM
Get VM IP:
kubectl get proxmoxvm smom-management -n default -o jsonpath='{.status.ipAddress}'
Configuration Steps:
- SSH into management VM
- Install management tools
- Configure access controls
- Set up backup scripts
- Verify management tools are working
4. Verify Connectivity
4.1 Internal Network Connectivity
# Test connectivity between VMs
# From any VM, test connection to others
ping <other-vm-ip>
curl http://<other-vm-ip>:<port>
4.2 External Access
# Test through Nginx Proxy
curl https://your-domain.com
# Test through Cloudflare Tunnel
curl https://smom-api.sankofa.nexus
4.3 Service Health Checks
# Check validator status
curl http://<validator-ip>:<port>/health
# Check RPC node
curl -X POST http://<rpc-node-ip>:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
Useful Commands
Check All VM Status
kubectl get proxmoxvm -A --sort-by=.metadata.name
Get VM Details
kubectl describe proxmoxvm <vm-name> -n default
Check Controller Logs
kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox --tail=100 -f
Verify Deployment
./scripts/verify-deployment.sh
Configure Infrastructure
./scripts/configure-nginx-proxy.sh
./scripts/configure-cloudflare-tunnel.sh
SMOM-DBIS-138 Project Integration
Quick Integration
-
Get VM IPs:
cd ~/projects/Sankofa ./scripts/get-smom-vm-ips.sh -
Switch to SMOM-DBIS-138 project:
cd ~/projects/smom-dbis-138 -
Use SMOM-DBIS-138 scripts:
# Check available commands make help # Follow SMOM-DBIS-138 deployment guide cat README.md
See docs/smom-dbis-138-project-integration.md for detailed integration guide.
Documentation Reference
Infrastructure
- Nginx Proxy:
docs/configs/nginx/README.md - Cloudflare Tunnel:
docs/configs/cloudflare/README.md - Tunnel Config:
docs/configs/cloudflare/tunnel-config.yaml
Deployment
- Deployment Status:
docs/smom-dbis-138-deployment-status.md - Production Ready:
docs/PRODUCTION_DEPLOYMENT_READY.md - Project Integration:
docs/smom-dbis-138-project-integration.md
SMOM-DBIS-138 Project
- Project Location:
~/projects/smom-dbis-138 - Main README:
~/projects/smom-dbis-138/README.md - Runbooks:
~/projects/smom-dbis-138/runbooks/
Scripts
- Quota Check:
scripts/check-proxmox-quota.sh - Verify Deployment:
scripts/verify-deployment.sh - Configure Nginx:
scripts/configure-nginx-proxy.sh - Configure Tunnel:
scripts/configure-cloudflare-tunnel.sh
Troubleshooting
VMs Not Starting
- Check controller logs for errors
- Verify Proxmox connectivity
- Check resource availability
- Review VM configurations
Cannot SSH to VMs
- Wait for VMs to receive IP addresses
- Check network configuration
- Verify firewall rules
- Check cloud-init logs
Services Not Accessible
- Verify services are running on VMs
- Check firewall rules
- Verify Nginx/Cloudflare Tunnel configuration
- Check DNS records
Timeline Estimate
- VM Startup: 5-15 minutes (depending on Proxmox host)
- Infrastructure Configuration: 30-60 minutes
- Application Configuration: 2-4 hours (depending on complexity)
- Testing & Verification: 1-2 hours
Total Estimated Time: 4-7 hours
Support
For issues or questions:
- Check controller logs
- Review VM status
- Consult documentation
- Check troubleshooting section
Last Updated: 2025-12-08
Status: ✅ Ready for Configuration