1122 lines
25 KiB
Markdown
1122 lines
25 KiB
Markdown
# Virtual PLC Platform - Technical Implementation Guide
|
|
|
|
*Detailed technical architecture for applying ZLH platform model to industrial automation*
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
This document outlines the technical implementation strategy for building a multi-tenant virtual PLC/SCADA hosting platform using proven LXC container architecture (from ZeroLagHub) applied to industrial automation.
|
|
|
|
**Core Concept:** Take ZLH's architecture (LXC containers, multi-tenant hosting, automated pipelines) and apply it to **virtual PLC/SCADA hosting** for manufacturers.
|
|
|
|
---
|
|
|
|
## Platform Architecture Overview
|
|
|
|
### Business Model Tiers
|
|
|
|
**ZLH Gaming Model (Reference):**
|
|
```
|
|
Dev Container → Test Container → Production Container
|
|
($10/mo) ($20/mo) ($50/mo game server)
|
|
```
|
|
|
|
**Industrial Platform Model:**
|
|
```
|
|
Dev/Simulation → Test/Commissioning → Production PLC
|
|
($500/mo) ($1,500/mo) ($2,500/mo + monitoring)
|
|
```
|
|
|
|
### Revenue Model Comparison
|
|
|
|
**ZLH (Gaming):**
|
|
- Avg customer: $50-150/month
|
|
- Customers needed for $10k MRR: 70-200 customers
|
|
- Customer acquisition: Hard (gaming is saturated)
|
|
- Churn risk: High (indie devs quit projects)
|
|
|
|
**Industrial Platform:**
|
|
- Avg customer: $2,000-5,000/month
|
|
- Customers needed for $10k MRR: 2-5 customers
|
|
- Customer acquisition: Moderate (smaller target market, hungry for solutions)
|
|
- Churn risk: Low (manufacturers don't switch easily)
|
|
|
|
---
|
|
|
|
## Infrastructure Architecture
|
|
|
|
### Hosting Platform: GTHost Dedicated Servers
|
|
|
|
**Available Specs:**
|
|
- **Pricing**: $59-500/month depending on configuration
|
|
- **RAM**: 8GB to 1TB+
|
|
- **CPU**: Intel Xeon, AMD EPYC (4-32+ cores)
|
|
- **GPU**: Available for specialized workloads
|
|
- **Network**: Unmetered bandwidth, 1Gbps+
|
|
- **Locations**: 21+ datacenters (USA, Canada, Europe)
|
|
- **Setup**: 5-15 minutes instant activation
|
|
- **Contracts**: Month-to-month (no long-term lock-in)
|
|
- **Trial**: $5/day for up to 10 days
|
|
|
|
### Multi-Tenant Server Configuration
|
|
|
|
**Example: Single GTHost Server Setup**
|
|
|
|
```
|
|
Total Server: 32 cores, 64GB RAM, 2TB SSD
|
|
├── ZLH Platform: 8 cores, 16GB RAM (gaming customers)
|
|
│ ├── Customer A: Minecraft server (2 cores, 4GB)
|
|
│ ├── Customer B: Rust server (4 cores, 8GB)
|
|
│ └── Customer C: 7DTD server (2 cores, 4GB)
|
|
│
|
|
├── Industrial Platform: 8 cores, 16GB RAM (virtual PLCs)
|
|
│ ├── Client A: Virtual PLC + monitoring (4 cores, 8GB)
|
|
│ └── Development/Testing: Internal dev work (4 cores, 8GB)
|
|
│
|
|
└── Shared Services: 4 cores, 8GB RAM
|
|
├── API layer (handles both gaming + industrial)
|
|
├── Monitoring (Grafana/Prometheus)
|
|
├── Databases (PostgreSQL for both)
|
|
└── Reverse proxy (Caddy/Nginx)
|
|
```
|
|
|
|
**Cost:** $200-300/month for single server serving both businesses
|
|
|
|
---
|
|
|
|
## Container Platform: LXC
|
|
|
|
### Why LXC Over Docker
|
|
|
|
**Advantages:**
|
|
- ✅ Lower overhead (runs closer to bare metal)
|
|
- ✅ Better for long-running services (MQTT, databases, PLCs)
|
|
- ✅ Simpler networking (bridge vs overlay)
|
|
- ✅ Proven from ZeroLagHub experience
|
|
- ✅ Less complexity than Kubernetes
|
|
- ✅ Real-time capable (lower latency)
|
|
|
|
**Disadvantages:**
|
|
- ❌ Less popular than Docker (smaller community)
|
|
- ❌ Fewer pre-built images
|
|
- ❌ Manual setup required
|
|
|
|
**Decision:** Use LXC for multi-tenant platform, Docker for customer edge deployments (easier for customers to maintain)
|
|
|
|
### LXC Container Template (Per Customer)
|
|
|
|
```
|
|
Customer Container (LXC):
|
|
├── Ubuntu 24.04 minimal
|
|
├── Mosquitto MQTT broker (isolated)
|
|
├── InfluxDB (isolated database)
|
|
├── Grafana (customer-specific dashboards)
|
|
├── Node-RED (optional, for advanced workflows)
|
|
├── Virtual PLC runtime (CODESYS or OpenPLC)
|
|
├── Backup agent (automated daily)
|
|
└── Resource limits (CPU, RAM, disk)
|
|
```
|
|
|
|
**Resource Allocation per Customer:**
|
|
- CPU: 1-2 cores (burstable)
|
|
- RAM: 2-4GB
|
|
- Disk: 50-100GB
|
|
- Network: Shared 1Gbps
|
|
|
|
**Capacity Planning:**
|
|
- 8-10 basic customers per server
|
|
- 5-8 customers if heavy data volume
|
|
- Monitor: CPU, RAM, disk I/O, network
|
|
|
|
---
|
|
|
|
## Virtual PLC Software Options
|
|
|
|
### Option 1: CODESYS Virtual Control (Commercial)
|
|
|
|
**Overview:**
|
|
- Industry standard (30 years, millions of installs)
|
|
- IEC 61131-3 certified
|
|
- Hardware-independent, container-based
|
|
- ISO 61508 SIL3 certified (June 2024)
|
|
|
|
**Pricing:**
|
|
- $99-499/month per runtime instance
|
|
- One-time licenses: $5k-15k + support
|
|
|
|
**Pros:**
|
|
- ✅ Industry standard - customers trust it
|
|
- ✅ Proven reliability
|
|
- ✅ Comprehensive documentation
|
|
- ✅ Large ecosystem
|
|
- ✅ Safety certifications
|
|
|
|
**Cons:**
|
|
- ❌ Licensing costs per customer
|
|
- ❌ Vendor dependency
|
|
- ❌ Annual fees
|
|
|
|
**Best For:**
|
|
- Premium tier customers
|
|
- Regulated industries
|
|
- Customers requiring certifications
|
|
- Enterprise clients
|
|
|
|
### Option 2: OpenPLC (Open Source)
|
|
|
|
**Overview:**
|
|
- Open-source soft PLC
|
|
- IEC 61131-3 compliant
|
|
- Runs on Linux, Windows, Raspberry Pi
|
|
- Web-based programming interface
|
|
- No licensing costs
|
|
|
|
**Pricing:**
|
|
- $0 (GPL license)
|
|
- Free forever
|
|
|
|
**Pros:**
|
|
- ✅ Zero licensing costs (100% margin)
|
|
- ✅ Full control over code
|
|
- ✅ Active community
|
|
- ✅ Can customize for customers
|
|
- ✅ Web-based interface
|
|
|
|
**Cons:**
|
|
- ❌ Not safety-certified (use for non-critical only)
|
|
- ❌ Smaller ecosystem than CODESYS
|
|
- ❌ Less mature
|
|
- ❌ You provide all support
|
|
|
|
**Best For:**
|
|
- Budget-conscious customers
|
|
- Non-safety-critical applications
|
|
- Development/testing environments
|
|
- Monitoring-only deployments
|
|
|
|
**Installation:**
|
|
```bash
|
|
git clone https://github.com/thiagoralves/OpenPLC_v3.git
|
|
cd OpenPLC_v3
|
|
./install.sh
|
|
```
|
|
|
|
### Option 3: Hybrid Approach (Recommended)
|
|
|
|
**Strategy:**
|
|
- **Tier 1 (Dev/Simulation)**: Use OpenPLC ($0 cost)
|
|
- **Tier 2 (Virtual Commissioning)**: OpenPLC or CODESYS based on needs
|
|
- **Tier 3 (Production)**: CODESYS for critical, OpenPLC for monitoring
|
|
|
|
**Benefits:**
|
|
- Maximize margins on lower tiers
|
|
- Offer upgrade path to certified solution
|
|
- Customer choice based on requirements
|
|
- Flexibility for different industries
|
|
|
|
---
|
|
|
|
## SCADA/HMI Software Stack
|
|
|
|
### Option 1: Node-RED (Recommended for Most)
|
|
|
|
**Overview:**
|
|
- Visual programming / flow-based development
|
|
- Low-code platform
|
|
- Extensive plugin ecosystem
|
|
- Built-in web dashboard
|
|
|
|
**Pricing:** $0 (Apache 2.0 license)
|
|
|
|
**Pros:**
|
|
- ✅ Zero cost
|
|
- ✅ Very fast development
|
|
- ✅ Customer can see/modify flows
|
|
- ✅ Modern web interface
|
|
- ✅ Integrates with everything (MQTT, Modbus, OPC-UA)
|
|
- ✅ Built-in dashboard creator
|
|
|
|
**Cons:**
|
|
- ❌ Not "industrial" looking (can be styled)
|
|
- ❌ Limited real-time capabilities
|
|
- ❌ No built-in alarming (add custom)
|
|
|
|
**Best For:**
|
|
- 80% of customers
|
|
- Quick deployments
|
|
- Budget-conscious clients
|
|
- Monitoring applications
|
|
|
|
**Key Plugins:**
|
|
```
|
|
node-red-contrib-modbus # Modbus TCP/RTU
|
|
node-red-contrib-opcua # OPC UA client
|
|
node-red-contrib-s7 # Siemens S7
|
|
node-red-dashboard # UI widgets
|
|
node-red-contrib-influxdb # Database
|
|
```
|
|
|
|
**Installation:**
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install nodejs npm
|
|
sudo npm install -g node-red
|
|
sudo npm install -g pm2
|
|
pm2 start node-red
|
|
pm2 save
|
|
pm2 startup
|
|
```
|
|
|
|
### Option 2: RapidSCADA (Professional)
|
|
|
|
**Overview:**
|
|
- Full-featured open-source SCADA
|
|
- Modular architecture
|
|
- Industrial-grade alarming
|
|
- Built-in historian
|
|
|
|
**Pricing:** $0 (Apache 2.0 license)
|
|
|
|
**Pros:**
|
|
- ✅ Professional appearance
|
|
- ✅ Industrial features (alarming, trending, reporting)
|
|
- ✅ Multi-user access control
|
|
- ✅ Scalable architecture
|
|
- ✅ Looks like "real" SCADA
|
|
|
|
**Cons:**
|
|
- ❌ Steeper learning curve
|
|
- ❌ More complex to deploy
|
|
- ❌ Slower development vs Node-RED
|
|
|
|
**Best For:**
|
|
- Enterprise customers
|
|
- Complex processes
|
|
- Need professional appearance
|
|
- Regulated industries
|
|
|
|
**Installation:**
|
|
```bash
|
|
wget rapidscada.org/download/rapidscada-installer.run
|
|
chmod +x rapidscada-installer.run
|
|
sudo ./rapidscada-installer.run
|
|
```
|
|
|
|
### Option 3: Grafana (Visualization Layer)
|
|
|
|
**Overview:**
|
|
- Modern dashboarding platform
|
|
- Time-series visualization
|
|
- Alerting capabilities
|
|
- Multi-datasource support
|
|
|
|
**Pricing:** $0 (AGPL license)
|
|
|
|
**Pros:**
|
|
- ✅ Beautiful, modern UI
|
|
- ✅ Customers often familiar with it
|
|
- ✅ Excellent time-series visualization
|
|
- ✅ Built-in alerting
|
|
- ✅ Mobile-friendly
|
|
|
|
**Cons:**
|
|
- ❌ Not a control interface (monitoring only)
|
|
- ❌ Limited HMI-style features
|
|
- ❌ Requires separate data source
|
|
|
|
**Best For:**
|
|
- Dashboard/visualization layer
|
|
- Monitoring applications
|
|
- Analytics and trending
|
|
- Management reporting
|
|
|
|
**Stack:** Grafana + InfluxDB + MQTT
|
|
|
|
---
|
|
|
|
## Complete Software Stack Options
|
|
|
|
### Stack A: "The Lightweight Solution" ($0 software cost)
|
|
|
|
**Target:** 80% of customers, quick deployments
|
|
|
|
**Components:**
|
|
```
|
|
OS: Ubuntu 24.04 LTS
|
|
Container: LXC
|
|
PLC: OpenPLC (if needed)
|
|
HMI: Node-RED Dashboard
|
|
Visualization: Grafana
|
|
Database: InfluxDB
|
|
MQTT Broker: Mosquitto
|
|
Protocols: Modbus, OPC-UA (via Node-RED)
|
|
```
|
|
|
|
**Development Time:** 1-2 days to build custom HMI
|
|
|
|
**Best For:**
|
|
- Quick deployments
|
|
- Simple monitoring
|
|
- Budget-conscious customers
|
|
- Non-safety-critical applications
|
|
|
|
**Gross Margin:** 98%+ (only server costs)
|
|
|
|
---
|
|
|
|
### Stack B: "The Professional Solution" ($380/year per customer)
|
|
|
|
**Target:** Premium customers, regulated industries
|
|
|
|
**Components:**
|
|
```
|
|
OS: Ubuntu 24.04 LTS + RT-PREEMPT kernel
|
|
Container: LXC
|
|
PLC: CODESYS Virtual Control
|
|
HMI: RapidSCADA
|
|
Visualization: Grafana
|
|
Database: PostgreSQL + InfluxDB
|
|
MQTT Broker: Mosquitto
|
|
Protocols: All major industrial protocols
|
|
```
|
|
|
|
**Development Time:** 3-5 days initial setup, then reusable templates
|
|
|
|
**Best For:**
|
|
- Professional installations
|
|
- Complex processes
|
|
- Need enterprise features
|
|
- Regulated industries
|
|
|
|
**Gross Margin:** ~90% (server + CODESYS licensing)
|
|
|
|
---
|
|
|
|
### Stack C: "The All-in-One Solution" ($0 software cost)
|
|
|
|
**Target:** Machine builders, OEMs, motion control
|
|
|
|
**Components:**
|
|
```
|
|
OS: Debian 11
|
|
All-in-One: Beremiz (PLC + HMI combined)
|
|
Database: Built-in
|
|
Visualization: Built-in SVG editor
|
|
Protocols: Modbus, CANopen, EtherCAT
|
|
```
|
|
|
|
**Development Time:** 2-3 days learning curve, then fast
|
|
|
|
**Best For:**
|
|
- Machine builders
|
|
- Need tight PLC/HMI integration
|
|
- Motion control applications
|
|
- All-in-one simplicity
|
|
|
|
**Gross Margin:** 98%+ (only server costs)
|
|
|
|
---
|
|
|
|
## Edge Hardware Options (Customer Site)
|
|
|
|
### Option 1: Raspberry Pi (Not Recommended)
|
|
|
|
**Price:** $35-75
|
|
|
|
**Pros:**
|
|
- Very cheap
|
|
- Large community
|
|
- Easy to get started
|
|
|
|
**Cons:**
|
|
- ❌ Unreliable (SD card failures)
|
|
- ❌ Not industrial-grade
|
|
- ❌ Power supply issues
|
|
- ❌ Limited I/O without expansion
|
|
- ❌ Support nightmare
|
|
|
|
**Verdict:** Too unreliable for production deployments
|
|
|
|
---
|
|
|
|
### Option 2: Industrial Mini PC (**RECOMMENDED**)
|
|
|
|
**Examples:**
|
|
- Protectli Vault
|
|
- Qotom Mini PC
|
|
- Topton industrial PC
|
|
|
|
**Price:** $110-250
|
|
|
|
**Specs:**
|
|
- Intel Celeron/Core i3/i5
|
|
- 4-8GB RAM
|
|
- 128-256GB SSD (not SD card!)
|
|
- Multiple Ethernet ports
|
|
- Fanless (no moving parts)
|
|
- Wide temperature range
|
|
- DIN rail mountable
|
|
|
|
**Pros:**
|
|
- ✅ Reliable (SSD, no SD card)
|
|
- ✅ Affordable
|
|
- ✅ Industrial-grade
|
|
- ✅ Fanless (no fan failures)
|
|
- ✅ Professional appearance
|
|
- ✅ x86 compatible (run anything)
|
|
|
|
**Cons:**
|
|
- More expensive than Raspberry Pi
|
|
- Requires power brick
|
|
|
|
**Verdict:** **Sweet spot for edge deployments**
|
|
|
|
---
|
|
|
|
### Option 3: Certified Industrial PC
|
|
|
|
**Examples:**
|
|
- Advantech
|
|
- Siemens SIMATIC IPC
|
|
- Beckhoff
|
|
|
|
**Price:** $400-1,500+
|
|
|
|
**Pros:**
|
|
- ✅ Fully certified
|
|
- ✅ Long product lifecycle
|
|
- ✅ Industrial certifications
|
|
- ✅ Warranty and support
|
|
|
|
**Cons:**
|
|
- ❌ Expensive
|
|
- ❌ Overkill for many applications
|
|
|
|
**Best For:**
|
|
- Enterprise tier customers
|
|
- Regulated industries
|
|
- Safety-critical applications
|
|
|
|
---
|
|
|
|
## HMI Display Options
|
|
|
|
### Option 1: No Display (Web-Based)
|
|
|
|
**Cost:** $0
|
|
|
|
**Approach:**
|
|
- Operators use tablets/phones/PCs
|
|
- Access via web browser (HTTPS)
|
|
- Responsive design
|
|
|
|
**Pros:**
|
|
- ✅ Zero hardware cost
|
|
- ✅ BYOD (bring your own device)
|
|
- ✅ Flexible (any device works)
|
|
- ✅ Modern approach
|
|
|
|
**Best For:**
|
|
- Remote monitoring
|
|
- Mobile workforce
|
|
- Cost-sensitive deployments
|
|
|
|
---
|
|
|
|
### Option 2: 7" Budget Touchscreen
|
|
|
|
**Examples:**
|
|
- Raspberry Pi Official 7" Touch
|
|
- Generic 7" HDMI touch displays
|
|
|
|
**Price:** $50-80
|
|
|
|
**Pros:**
|
|
- ✅ Affordable
|
|
- ✅ Compact
|
|
- ✅ Touch interface
|
|
- ✅ Good for simple HMI
|
|
|
|
**Cons:**
|
|
- ❌ Not industrial-grade
|
|
- ❌ Limited viewing angles
|
|
- ❌ Not bright enough for direct sunlight
|
|
|
|
**Best For:**
|
|
- Indoor use
|
|
- Simple interfaces
|
|
- Budget deployments
|
|
|
|
---
|
|
|
|
### Option 3: 10" Industrial Touchscreen
|
|
|
|
**Examples:**
|
|
- Industrial panel PCs with touch
|
|
- Industrial-grade displays
|
|
|
|
**Price:** $200-400
|
|
|
|
**Pros:**
|
|
- ✅ Professional appearance
|
|
- ✅ Industrial certifications
|
|
- ✅ Bright display
|
|
- ✅ Wide viewing angles
|
|
- ✅ Rugged construction
|
|
|
|
**Best For:**
|
|
- Professional installations
|
|
- Factory floor use
|
|
- Enterprise customers
|
|
|
|
---
|
|
|
|
### Option 4: Wireless Display (Bluetooth/WiFi)
|
|
|
|
**Cost:** $0 (use existing displays)
|
|
|
|
**Approach:**
|
|
- Connect edge device to existing monitors/TVs via HDMI
|
|
- Or use wireless screen sharing
|
|
- Operators can mirror to phones/tablets
|
|
|
|
**Best For:**
|
|
- Facilities with existing displays
|
|
- Flexible deployment
|
|
- Cost optimization
|
|
|
|
---
|
|
|
|
## Data Flow Architecture
|
|
|
|
### Edge to Cloud Data Pipeline
|
|
|
|
```
|
|
Customer Site (Edge):
|
|
PLC → Node-RED → MQTT (local edge device)
|
|
↓
|
|
(Over VPN or direct connection)
|
|
↓
|
|
GTHost Server (Cloud):
|
|
MQTT Broker → InfluxDB → Grafana
|
|
↓
|
|
Alert Engine → Email/SMS
|
|
```
|
|
|
|
### Multi-Tenant Network Architecture
|
|
|
|
```
|
|
Internet
|
|
↓
|
|
Caddy Reverse Proxy (TLS termination)
|
|
↓
|
|
LXC Bridge (internal network)
|
|
├── Customer 1 Container (192.168.100.10)
|
|
├── Customer 2 Container (192.168.100.11)
|
|
├── Customer 3 Container (192.168.100.12)
|
|
└── ...
|
|
```
|
|
|
|
### Subdomain Structure
|
|
|
|
- customer1.yourdomain.com → Grafana dashboard
|
|
- customer2.yourdomain.com → Grafana dashboard
|
|
- mqtt.yourdomain.com → MQTT broker (port per customer)
|
|
|
|
---
|
|
|
|
## Protocol Support
|
|
|
|
### OT Protocols (Industrial)
|
|
|
|
**Native Support:**
|
|
- Modbus TCP/RTU
|
|
- OPC UA
|
|
- Siemens S7 (via Snap7)
|
|
- EtherNet/IP (Allen-Bradley)
|
|
- BACnet (building automation)
|
|
- Profinet (via OPC UA gateway)
|
|
|
|
**Via Node-RED Plugins:**
|
|
```
|
|
node-red-contrib-modbus # Modbus
|
|
node-red-contrib-opcua # OPC UA
|
|
node-red-contrib-s7 # Siemens
|
|
node-red-contrib-bacnet # BACnet
|
|
```
|
|
|
|
### IT Protocols (Integration)
|
|
|
|
- MQTT (primary message bus)
|
|
- HTTP/REST APIs
|
|
- HTTPS for dashboards
|
|
- SMTP for email alerts
|
|
- Webhooks for integrations
|
|
|
|
---
|
|
|
|
## Security Architecture
|
|
|
|
### Server Hardening
|
|
|
|
**Required:**
|
|
- [ ] Disable root login (SSH key only)
|
|
- [ ] Fail2ban configured
|
|
- [ ] UFW firewall (only necessary ports)
|
|
- [ ] Automated security updates
|
|
- [ ] Regular security audits (quarterly)
|
|
|
|
### Application Security
|
|
|
|
**Required:**
|
|
- [ ] TLS/SSL everywhere (Let's Encrypt)
|
|
- [ ] Strong passwords (generated, stored in 1Password)
|
|
- [ ] API keys rotated (quarterly)
|
|
- [ ] Container isolation verified
|
|
- [ ] Database encryption at rest
|
|
|
|
### Network Security
|
|
|
|
**Edge to Cloud:**
|
|
- VPN access for edge devices (WireGuard)
|
|
- Optional: Direct connection over TLS/MQTT
|
|
- Firewall rules (only necessary ports)
|
|
- Certificate-based authentication
|
|
|
|
---
|
|
|
|
## Backup & Disaster Recovery
|
|
|
|
### Backup Strategy
|
|
|
|
**Automated Daily Backups (3am UTC):**
|
|
- Retention: 7 daily, 4 weekly, 12 monthly
|
|
- Storage: GTHost server + offsite (Wasabi/Backblaze B2)
|
|
- Encrypted with GPG
|
|
- Automated restore testing (monthly)
|
|
|
|
**What's Backed Up:**
|
|
- All customer containers (LXC snapshots)
|
|
- Databases (InfluxDB, PostgreSQL)
|
|
- Configuration files
|
|
- Dashboard definitions
|
|
- SSL certificates
|
|
|
|
### Disaster Recovery
|
|
|
|
**Targets:**
|
|
- RTO (Recovery Time Objective): 4 hours
|
|
- RPO (Recovery Point Objective): 24 hours
|
|
- Documented restoration procedure
|
|
- Annual DR test
|
|
|
|
---
|
|
|
|
## Monitoring & Alerting
|
|
|
|
### Server Monitoring
|
|
|
|
**Internal Stack:**
|
|
- Prometheus + Grafana (internal monitoring)
|
|
- Alerts: CPU >80%, RAM >80%, Disk >85%
|
|
- UptimeRobot (external monitoring)
|
|
- Optional: PagerDuty for critical alerts
|
|
|
|
**Metrics:**
|
|
- Per-container resource usage
|
|
- MQTT connection status
|
|
- InfluxDB query performance
|
|
- Grafana dashboard access logs
|
|
|
|
### Customer Monitoring
|
|
|
|
**Per-Customer Dashboards:**
|
|
- Edge device connectivity status
|
|
- Data collection rates
|
|
- Alert history
|
|
- System health metrics
|
|
|
|
---
|
|
|
|
## Deployment Process
|
|
|
|
### Customer Onboarding Flow
|
|
|
|
**Phase 1: Planning (Week 1)**
|
|
1. Discovery call (understand needs)
|
|
2. Site assessment (protocols, I/O requirements)
|
|
3. Quote and proposal
|
|
4. Contract signing
|
|
|
|
**Phase 2: Setup (Week 2)**
|
|
1. Provision LXC container
|
|
2. Configure subdomain and SSL
|
|
3. Build custom dashboards
|
|
4. Integration testing
|
|
|
|
**Phase 3: Edge Deployment (Week 3)**
|
|
1. Ship pre-configured edge device
|
|
2. Customer installs (plug & play)
|
|
3. VPN connection establishes
|
|
4. Data begins flowing
|
|
|
|
**Phase 4: Training & Go-Live (Week 4)**
|
|
1. Remote training session
|
|
2. Documentation handoff
|
|
3. Go live
|
|
4. 30-day monitoring period
|
|
|
|
**Total Time:** ~1 month per customer
|
|
|
|
---
|
|
|
|
## Development Workflow
|
|
|
|
### Local Development
|
|
|
|
**Workstation Setup:**
|
|
- Ubuntu 22.04 or macOS
|
|
- Docker Desktop (for testing containers)
|
|
- VS Code with extensions:
|
|
- Python
|
|
- Docker
|
|
- YAML
|
|
- Grafana dashboards
|
|
|
|
**Testing Environment:**
|
|
- Local LXC or Docker setup
|
|
- Simulated PLC data (Node-RED)
|
|
- Small InfluxDB + Grafana instance
|
|
|
|
### CI/CD Pipeline (Future)
|
|
|
|
**Source Control:**
|
|
- Git (self-hosted Gitea or GitHub)
|
|
- Branches: main, development, customer-specific
|
|
|
|
**Automation:**
|
|
- Gitea Actions or GitHub Actions
|
|
- Automated testing on push
|
|
- Deployment scripts (Ansible)
|
|
|
|
**Deployment Process (Manual Initially):**
|
|
1. Test in local environment
|
|
2. Deploy to staging container
|
|
3. Validate with test data
|
|
4. Deploy to production
|
|
5. Monitor for issues
|
|
|
|
---
|
|
|
|
## Architecture Comparison: ZLH vs Industrial
|
|
|
|
### Code Reuse: 70%
|
|
|
|
**What's SHARED between platforms:**
|
|
|
|
```
|
|
✅ LXC container orchestration
|
|
✅ User authentication/authorization
|
|
✅ API infrastructure
|
|
✅ Billing/payment processing (Stripe)
|
|
✅ Resource monitoring/logging
|
|
✅ Database layer
|
|
✅ Web UI framework
|
|
```
|
|
|
|
**What's DIFFERENT:**
|
|
|
|
```
|
|
Gaming-Specific:
|
|
- Game server templates (Minecraft, Rust, etc.)
|
|
- Steam integration
|
|
- Gaming-specific metrics
|
|
|
|
Industrial-Specific:
|
|
- CODESYS/OpenPLC runtime
|
|
- Industrial protocols (Modbus, OPC-UA)
|
|
- SCADA visualization (Grafana dashboards)
|
|
- Alarm management
|
|
```
|
|
|
|
### Development Strategy
|
|
|
|
1. ZLH is 85% done → Finish core platform
|
|
2. Industrial platform: Fork ZLH codebase
|
|
3. Swap gaming logic for industrial modules
|
|
4. Reuse: API, auth, billing, monitoring, container orchestration
|
|
5. Add: PLC runtime, protocol handlers, SCADA dashboards
|
|
|
|
**Estimated Development Time:** 2-3 months to MVP (leveraging ZLH foundation)
|
|
|
|
---
|
|
|
|
## Cost Analysis
|
|
|
|
### Per-Customer Economics
|
|
|
|
**Lightweight Stack (OpenPLC + Node-RED):**
|
|
|
|
**Customer Pays:** $2,000/month
|
|
|
|
**Your Costs:**
|
|
- Server allocation: $20-30/month (1/10th of server)
|
|
- Software licenses: $0
|
|
- Support time: ~5 hours/month @ $50/hour = $250
|
|
- Total Cost: ~$280/month
|
|
|
|
**Gross Profit:** $1,720/month per customer (86% margin)
|
|
|
|
**Premium Stack (CODESYS + RapidSCADA):**
|
|
|
|
**Customer Pays:** $4,000/month
|
|
|
|
**Your Costs:**
|
|
- Server allocation: $30-40/month
|
|
- CODESYS license: $32/month (€350/year)
|
|
- Support time: ~8 hours/month @ $50/hour = $400
|
|
- Total Cost: ~$470/month
|
|
|
|
**Gross Profit:** $3,530/month per customer (88% margin)
|
|
|
|
### Scaling Economics
|
|
|
|
**At 5 Customers (Breakeven/Early Stage):**
|
|
- Revenue: $10,000-20,000/month
|
|
- Server Costs: $300/month (1 server)
|
|
- Software: $0-160/month
|
|
- Support: 25-40 hours/month
|
|
- **Net Profit:** $8,000-15,000/month
|
|
|
|
**At 10 Customers (Sustainable):**
|
|
- Revenue: $20,000-40,000/month
|
|
- Server Costs: $600/month (2 servers)
|
|
- Software: $0-320/month
|
|
- Support: 50-80 hours/month
|
|
- **Net Profit:** $15,000-30,000/month
|
|
|
|
---
|
|
|
|
## Technology Decision Matrix
|
|
|
|
### When to Use What
|
|
|
|
**OpenPLC:**
|
|
- ✅ Development/testing environments
|
|
- ✅ Non-safety-critical monitoring
|
|
- ✅ Budget-conscious customers
|
|
- ✅ Custom applications
|
|
|
|
**CODESYS:**
|
|
- ✅ Production control systems
|
|
- ✅ Regulated industries
|
|
- ✅ Customer requires certifications
|
|
- ✅ Premium tier customers
|
|
|
|
**Node-RED:**
|
|
- ✅ 80% of HMI needs
|
|
- ✅ Quick deployments
|
|
- ✅ Modern customers
|
|
- ✅ Rapid prototyping
|
|
|
|
**RapidSCADA:**
|
|
- ✅ Traditional industrial customers
|
|
- ✅ Complex alarming requirements
|
|
- ✅ Need "professional" appearance
|
|
- ✅ Multi-user access control
|
|
|
|
**Grafana:**
|
|
- ✅ Always include for visualization
|
|
- ✅ Management reporting
|
|
- ✅ Time-series analytics
|
|
- ✅ Mobile access
|
|
|
|
---
|
|
|
|
## Implementation Roadmap
|
|
|
|
### Phase 1: Foundation (Month 1-2)
|
|
|
|
**Objective:** Get first pilot customer live
|
|
|
|
1. **Week 1-2:** Infrastructure setup
|
|
- Provision GTHost server
|
|
- Install Ubuntu + LXC
|
|
- Configure networking and security
|
|
- Set up monitoring
|
|
|
|
2. **Week 3-4:** Software stack deployment
|
|
- Deploy OpenPLC + Node-RED stack
|
|
- Build first customer container template
|
|
- Create reusable dashboards
|
|
- Integration testing
|
|
|
|
3. **Week 5-6:** Pilot customer
|
|
- Onboard first customer
|
|
- Deploy edge hardware
|
|
- Configure data collection
|
|
- Training and go-live
|
|
|
|
4. **Week 7-8:** Refinement
|
|
- Document learnings
|
|
- Refine templates
|
|
- Improve automation
|
|
- Prepare for scale
|
|
|
|
### Phase 2: Scaling (Month 3-6)
|
|
|
|
**Objective:** Reach 5 customers, validate business model
|
|
|
|
1. **Add customers 2-5**
|
|
2. **Optimize deployment process**
|
|
3. **Build library of templates**
|
|
4. **Improve monitoring and alerting**
|
|
5. **Add CODESYS option for premium tier**
|
|
|
|
### Phase 3: Growth (Month 7-12)
|
|
|
|
**Objective:** Scale to 10+ customers, achieve $25k+ MRR
|
|
|
|
1. **Hire first contractor** (part-time technical support)
|
|
2. **Add second server** (geographic redundancy)
|
|
3. **Implement CI/CD pipeline**
|
|
4. **Build customer self-service portal**
|
|
5. **Expand protocol support**
|
|
|
|
---
|
|
|
|
## Key Technical Decisions
|
|
|
|
### Decision 1: LXC vs Docker
|
|
|
|
**Chosen:** LXC for platform, Docker for customer edge
|
|
|
|
**Rationale:**
|
|
- LXC: Lower overhead, proven from ZLH, better for long-running services
|
|
- Docker: Easier for customers to maintain on edge devices
|
|
|
|
### Decision 2: OpenPLC vs CODESYS
|
|
|
|
**Chosen:** Hybrid approach (both)
|
|
|
|
**Rationale:**
|
|
- OpenPLC: $0 cost, maximum margins, sufficient for 70% of use cases
|
|
- CODESYS: Premium option for customers needing certifications
|
|
- Flexibility to match customer requirements and budget
|
|
|
|
### Decision 3: GTHost vs AWS/Azure
|
|
|
|
**Chosen:** GTHost dedicated servers
|
|
|
|
**Rationale:**
|
|
- No AWS conflict with employer
|
|
- Bare metal performance (real-time capable)
|
|
- Predictable costs
|
|
- Month-to-month flexibility
|
|
- Can add GPU for future AI features
|
|
|
|
### Decision 4: Edge Hardware
|
|
|
|
**Chosen:** Industrial Mini PCs ($110-250)
|
|
|
|
**Rationale:**
|
|
- Reliable (SSD, no SD card failures like Pi)
|
|
- Affordable (vs $400+ industrial PCs)
|
|
- Professional appearance
|
|
- x86 compatible (maximum flexibility)
|
|
|
|
---
|
|
|
|
## Risk Mitigation
|
|
|
|
### Technical Risks
|
|
|
|
**Risk:** Container escape/isolation breach
|
|
**Mitigation:**
|
|
- Regular security updates
|
|
- Container resource limits enforced
|
|
- Monitoring for unusual activity
|
|
- Separate network namespaces
|
|
|
|
**Risk:** Data loss
|
|
**Mitigation:**
|
|
- Automated daily backups
|
|
- Offsite backup storage
|
|
- Monthly restore testing
|
|
- 7-day retention minimum
|
|
|
|
**Risk:** Real-time performance issues
|
|
**Mitigation:**
|
|
- Bare metal servers (no nested virtualization)
|
|
- LXC vs Docker (lower overhead)
|
|
- RT-PREEMPT kernel option
|
|
- Edge processing (time-critical at edge, not cloud)
|
|
|
|
### Business Risks
|
|
|
|
**Risk:** Customer churn
|
|
**Mitigation:**
|
|
- High-touch onboarding
|
|
- Excellent support
|
|
- Sticky data (historical trends)
|
|
- Annual contracts for discount
|
|
|
|
**Risk:** Support burden
|
|
**Mitigation:**
|
|
- Excellent documentation
|
|
- Self-service portal
|
|
- Automated monitoring
|
|
- Hire contractors for overflow
|
|
|
|
---
|
|
|
|
## Success Metrics
|
|
|
|
### Technical KPIs
|
|
|
|
- Container provisioning time: <15 minutes
|
|
- Data collection uptime: >99.5%
|
|
- Dashboard load time: <2 seconds
|
|
- Backup success rate: 100%
|
|
- Security incidents: 0
|
|
|
|
### Business KPIs
|
|
|
|
- Customer acquisition cost: <$500
|
|
- Gross margin: >85%
|
|
- Monthly recurring revenue: $25k by month 12
|
|
- Customer churn: <10% annually
|
|
- Net Promoter Score: >50
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
### Immediate Actions (Week 1)
|
|
|
|
1. [ ] Provision GTHost trial server ($5/day)
|
|
2. [ ] Install Ubuntu + LXC
|
|
3. [ ] Deploy OpenPLC + Node-RED stack
|
|
4. [ ] Build first dashboard template
|
|
5. [ ] Test with simulated PLC data
|
|
|
|
### Short-Term (Month 1)
|
|
|
|
1. [ ] Purchase industrial mini PC for testing
|
|
2. [ ] Build complete customer container template
|
|
3. [ ] Create customer onboarding checklist
|
|
4. [ ] Identify 3-5 potential pilot customers
|
|
5. [ ] Prepare pricing and proposal templates
|
|
|
|
### Medium-Term (Month 2-3)
|
|
|
|
1. [ ] Onboard first pilot customer
|
|
2. [ ] Document complete deployment process
|
|
3. [ ] Refine templates based on pilot feedback
|
|
4. [ ] Build customer self-service portal
|
|
5. [ ] Begin marketing to reach next 4 customers
|
|
|
|
---
|
|
|
|
*Last Updated: December 2025* |