README Pro Version

Multiverse Secure Lab(MSL) Setup for Proxmox by Zelogx™

GitHub Discussions Ofiicial Site Release Notes

Zelogx™ Multiverse Secure Lab Setup (MSL Setup) is a source-available automation framework for building secure, L2-isolated development labs on Proxmox, utilizing Proxmox SDN, firewall security groups, and Pritunl VPN.
This repository provides the Personal / Community Edition.

© 2025 Zelogx. Zelogx™ and the Zelogx logo are trademarks of the Zelogx Project. All other marks are property of their respective owners.

日本語版はこちら (README_jp.md)
Official Web Site is here

1. Overview

This project builds completely isolated development environments per project by Layer 2 level, accessible securely via VPN.
It’s a blueprint for low-cost distributed development, offshore projects, or private team labs.

Motivation

The Problem: The “Flat Network” Trap in Proxmox

When I needed to share my Proxmox development environment with team members over VPN, I ran into a familiar set of problems:

The Solution: Building the “Multiverse”

I went looking for a tool that could:

I couldn’t find it.

So I built Zelogx MSL Setup.

Zelogx turns a single Proxmox VE host into a multi-tenant lab provider. It’s aimed at engineers who need to give secure, isolated access to specific resources without exposing the rest of their infrastructure.


Architecture

(Refer to the high-resolution network diagram in this repository for full details.)

+----------------+       +------------------+
|  VPN Client    | ----> |  Cloudflare /    |
| (Team Member)  |       |  Internet        |
+----------------+       +------------------+
        |                        |
        | VPN Tunnel (UDP/TCP)   | Port Forwarding
        v                        v
+=========================================================================+
|  Proxmox VE Host (Physical Server)                                      |
|                                                                         |
|    +----------------------------------------+                           |
|    | Pritunl VM (VPN Gateway)               |                           |
|    |  [OpenVPN Servers]  [WireGuard Servers]|                           |
|    |         |                  |           |                           |
|    +---------+------------------+-----------+                           |
|              | VPN Traffic (Decrypted)                                  |
|              v                                                          |
|    +----------------------------------------+                           |
|    |  SDN Zone: vpndmz (192.168.80.0/24)    |                           |
|    +----------------------------------------+                           |
|              |                                                          |
|              | (Routing & Firewalling)                                  |
|    +=========v==============================+                           |
|    | Nftables / Proxmox SDN Engine          |  <-- "Multiverse"         |
|    | (L2/L3 Isolation Enforcement)          |      Enforcer             |
|    +=========+====================+=========+                           |
|              |                    |                                     |
|    +---------v-------+    +-------v-------+         +-------v-------+   |
|    | Zone: devpj01   |    | Zone: devpj02 |         | Zone: devpjNN |   |
|    | [Isolated Lab]  |    | [Isolated Lab]|   ...   | [Isolated Lab]|   |
|    | 172.16.16.0/24  |    | 172.16.17.0/24|         | 172.16.xx.0/24|   |
|    +-----------------+    +---------------+         +---------------+   |
|       | VM1 | VM2 |          | VM1 | VM2 |             | VMs... |       |
|       +-----+-----+          +-----+-----+             +--------+       |
|            (🔒)                   (🔒)                      (🔒)         |
+=========================================================================+
LEGEND: ---> Traffic Flow, [🔒] Isolated Project Environment

Engineering Principles

1. Pre-configuration over Runtime Overhead

Zelogx MSL Setup is designed as a pre-configuration tool.

2. 100% Native Proxmox Building Blocks

We try to stick to the “power of boring technology”.

3. Pritunl Automation (VPN Provisioning)

The VPN side is fully automated using the official Pritunl HTTP API.

During the VPN setup phase, MSL Setup:

  1. Boots the Pritunl VM via cloud-init.
  2. Waits for the Pritunl service to become ready.
  3. Uses the Pritunl API (key/secret configured inside the VM) to:
    • Create one or more Organizations
    • Create the required Servers (OpenVPN / WireGuard)
    • Attach Organizations to Servers
    • Start the configured Servers

No web UI automation is involved — everything is provisioned through the documented REST API.

From the Proxmox host’s perspective, the Pritunl VM is treated as a black box VPN gateway:


Security & Design Choices (FAQ)

Q: Can VM hopping be prevented?

A: Yes, isolation is enforced at the lab (tenant) boundary.


Q: How are API tokens and permissions handled?

A: Zelogx MSL Setup does not use the Proxmox API with tokens. It runs locally on the node and uses the native Proxmox CLI (pvesh and related tools) under root.

1.1. What You Get (Engineer’s Perspective)

On a single Proxmox VE node:

For those who just want to build it now --- jump to Quickstart.

1.2. What You Get (Manager’s Perspective)

Equivalent commercial setups cost millions of yen with maintenance contracts.
This achieves the same goal for (almost) zero cost.

1.3. Reference: Commercial Alternatives

Vendors / ProductStrengthWeakness / Gaps You Can Fill
Palo Alto Networks “Prisma Access”Enterprise-grade SASE / ZTNA coverageOverkill for small on-prem or hybrid labs
Zscaler “Zero Trust Exchange”Global edge presence, strong remote-user securityNeeds customization for on-prem virtualized networks
Check Point + Perimeter81Integrated Zero-Trust WANComplex setup, high cost for small deployments
StrongDMAccess management (SSH / RDP / DB)Does not handle virtual-network segmentation or VPN-based multi-tenancy
JumpCloudWide SaaS IAM coverageLimited to identity layer, not virtual network control

1.4. Licensing

1.5. Target Audience

1.6. Why This Matters

1.6.1. Typical Problems in Cloud Dev Environments

Typical “Pain Points” When Development Environments Live in the Public Cloud

Result: High cost, low visibility, accidental exposure.
Even with best intentions, teams lack the “systemic guardrails” that prevent human error.

1.7. Cost Efficiency Example

Let’s compare AWS EC2 c5d.large (2 vCPUs) with a 2-vCPU VM running on an Intel NUC.
The machine used in this project: Intel NUC Pro, Core i7-1360P (12 cores / 16 threads, up to 5.0 GHz).

ItemAWS EC2 (c5d.large)2-vCPU VM on NUC
Assigned vCPUs2 vCPUs2 vCPUs
Physical CPUXeon Platinum 8124MCore i7-1360P
Physical CPU specs18C/36T / max 3.5 GHz12C/16T / max 5.0 GHz
RAM4 GBCustom / as needed
Cost$89/month (~¥13,000)~¥200/month electricity (for 2 vCPUs)
StorageEBS (billed separately)Local NVMe (high-speed, low-latency)
Network chargesCharged after 100 GBNone (local LAN)
Performance (2-vCPU eq.)Baseline~3.3–3.5× faster in benchmarks

Reference benchmark score (baremetal)

BenchScore(8124M)Score@1360P
PassMark single thread2.0403.573
PassMark CPU Mark22.28720.824
Geekbench 4 single core3.9546.517
Geekbench 4 multi core35.42035.803

Benchmarks show ~3.3x higher performance per vCPU compared to EC2.
Refer to : gadgetversus

1.8. Risks & Mitigations

RiskMitigation
Hardware failureUse a secondary node with Proxmox Backup Server
Power outageUPS or planned manual shutdown
OverheatingNUCs are rated for 35 °C continuous operation
Data lossBackup to S3-compatible storage
Physical accessKeep servers in restricted rooms or home labs

2. Quickstart

All open-source components --- reproducible setup from scratch.

2.1. Requirements

Required packages (auto-installed by setup scripts):

2.2. Network Design Considerations

You will need to provide the following network addresses, which must be configured appropriately. If your environment has no additional subnets other than the one connected to Proxmox VE, you can generally keep the example values below as-is — except for (a) and (b), which should be set according to your actual network to avoid conflicts.

Zelogx MSL Setup Network Overview

a. MainLan (existing vmbr0): (e.g., 192.168.77.0/24 GW: .254)

b. Proxmox PVE’s mainlan IP: (e.g., 192.168.77.7)

c. vpndmzvn (new): (e.g., 192.168.80.0/24 GW: 192.168.80.1)

d. Client-distributed IPs: (e.g., 192.168.81.0/24)

e. Number of isolated development segments (number of projects) to create: (e.g., 8)

f. Network address assigned to each project (vnetpjxx) (new): (e.g., 172.16.16.0/20)

g. Pritunl mainlan-side IP: (e.g., 192.168.77.10)

h. Pritunl vpndmzvn-side IP: (e.g., 192.168.80.2)

i. UDP ports:

Note:

2.3. Installation (Proxmox VE 9.0)

apt update -y
apt install -y ipcalc jq zip
# Place the place zip file on the proxmox server using scp or similar.

# In Corporate edition,
unzip msl-setup-pro-1.x.x_corporate.zip    # change x to correct version number
cd proxmox-msl-setup-1.x.x_corporate
# In MSL Setup (Personal Edition),
git clone https://github.com/zelogx/msl-setup.git
cd msl-setup

# Phase 1: Network Setup (check config + SDN setup)
./01_networkSetup.sh en   # Language: en|jp (default en)
# This will execute:
#   1. 0101_checkConfigNetwork.sh - Generate .env interactively
#   2. 0102_setupNetwork.sh - Apply SDN configuration (zones, vnets, subnets, IPSets, firewall)

# After Phase 1, configure your router (port forwarding and static routes)
# Follow the instructions displayed at the end of Phase 1

# Phase 2: VPN Setup (Pritunl VM deployment + configuration)
./02_vpnSetup.sh en   # Language: en|jp (default en)
# This will execute:
#   1. 0201_createPritunlVM.sh - Deploy Pritunl VM (Ubuntu 24.04 LTS with cloud-init)
#      - Collect existing VM inventory (audit trail)
#      - Auto-allocate VMID starting from 100
#      - Auto-generate SSH key if none exists
#      - Download Ubuntu 24.04 cloud-init image (cached for reuse)
#      - Create VM with 2 NICs (vmbr0/MainLAN, vpndmzvn)
#      - Configure static IPs and routes via cloud-init
#      - Validate network configuration remotely
#   2. 0202_configurePritunl.sh - Configure Pritunl servers, organizations, and users

# Phase 3 (Pro Corporate only): RBAC Self-Care Portal Setup
./0203_setupSelfCarePortal.sh en   # Language: en|jp (default en)
# This will:
#   1. Backup current RBAC state (pools, groups, users, ACL, firewall rules)
#   2. Check for ACL conflicts with existing resources
#   3. Prompt for storage device selection (to assign to project pools)
#   4. Create NUM_PJ pools, admin groups, and user accounts
#   5. Generate random passwords for each project admin user
#   6. Assign Pool and SDN Zone permissions to project groups
#   7. Add firewall rules for VPN user access to Proxmox GUI (port 8006)
#   8. Display project credentials (username, password) in table format
# Supports --restore option to delete all project RBAC resources and restore to backup state
#
# With this phase, project members including VPN users gain self-service VM management
# capabilities within their isolated project network: VM creation/deletion, start/stop,
# snapshot creation, and backup management — all without requiring administrator intervention.
#
# **PRO CORPORATE EDITION ONLY**: This feature is included in the Pro Corporate edition.
# For Community Edition users, this phase is optional and requires manual user/pool setup.

# (Optional) Uninstall MSL setup completely
./99_uninstall.sh en   # Language: en|jp (default en)
# This will:
#   1. Delete RBAC Configuration (If corporate, calls 0203_setupSelfCarePortal.sh --restpre)
#   2. Destroy Pritunl VM (calls 0201_createPritunlVM.sh --destroy)
#   3. Restore network configuration to backup state (calls 0102_setupNetwork.sh --restore)
# IMPORTANT: Before running uninstall, ensure all VMs/CTs using vnetpjXX are removed or
#            their NICs are changed to a different bridge (e.g., vmbr0)
# Default is No - requires explicit confirmation (y/yes) to proceed

Argument Policy (v2.0):

3. Known Issues

4. Why This Design Still Matters

Public clouds deliver global scale and strong SLAs — no argument there. But when the goal is controlled, secure, and cost-efficient team development, a well-designed on-prem environment still has a place.

This architecture proves that small software teams, SaaS startups, and serious home-lab engineers can build isolated, compliant, production-grade development labs without burning money or giving up autonomy.

Security, performance, and independence don’t have to be trade-offs. They can coexist — by design.