|
1 | 1 | # Pi Server VM |
2 | 2 |
|
3 | | -A set of cross-platform Python scripts to fully automate the creation and cloning of secure, minimal Debian virtual machines in **Oracle VirtualBox**. This project is designed to emulate a Raspberry Pi server environment, making it ideal for testing server software, network configurations, or any project designed for a Raspberry Pi without needing physical hardware. |
| 3 | +A set of cross-platform tools to fully automate the creation and management of secure, minimal Debian virtual machines in **Oracle VirtualBox**. This project is designed to emulate a Raspberry Pi server environment, making it ideal for testing server software, network configurations, or any project designed for a headless server without needing physical hardware. |
4 | 4 |
|
5 | 5 | ## Features |
6 | 6 |
|
7 | | -- **Cross-Platform:** The tools work on Windows, macOS, and Linux. |
8 | | -- **LAN Accessible:** Creates virtual machines as full citizens on your local network, discoverable and accessible from any other computer. |
9 | | -- **Idempotent "Golden Master":** The master template is self-healing and can be safely started and updated without breaking the cloning process. |
10 | | -- **Intelligent & Configurable Cloning:** Cloned VMs automatically configure a unique hostname on first boot. Optional command-line flags allow customization of RAM, CPUs, secondary disks, username, and password. |
11 | | -- **Network Discoverable:** Clones announce themselves on the local network using Avahi (mDNS), appearing as **hostname.local**, just like a real Raspberry Pi. |
12 | | -- **User-Friendly Console:** The IP address of the VM is displayed on the console login screen for easy, immediate SSH access. |
13 | | -- **Secure by Default:** The template is configured with a locked root account and a standard user with **sudo** privileges whose password must be changed on first login (if not set during cloning). |
| 7 | +This project provides a complete ecosystem for virtual machine management, from creation to deployment. |
14 | 8 |
|
15 | | -## Compatibility |
| 9 | +#### Core Functionality |
| 10 | +- **Automated Master Template Creation:** A command-line tool, create-master-vm, that downloads the latest Debian ISO and builds a "golden master" VM template from scratch. |
| 11 | +- **One-Command Cloning:** A tool, clone-vm, to create new, independent development VMs from the master template in seconds. |
| 12 | +- **Web UI for VM Creation:** A simple web interface to create and customize new clone VMs directly from your browser, without needing to use the command line. |
16 | 13 |
|
17 | | -This project provides pre-built executables for Windows, macOS, and Linux. They are built and tested to run on the following operating systems **or newer**: |
| 14 | +#### Professional User Experience |
| 15 | +- **Professional Windows Installer:** A single, easy-to-use setup.exe for a one-click setup on Windows, complete with Start Menu shortcuts. |
| 16 | +- **Pre-Built Virtual Appliance:** A ready-to-import .ova file is included in each release, allowing users on any platform to get started instantly without building the template themselves. |
| 17 | +- **Cross-Platform Tools:** All command-line tools are provided as standalone executables for Windows, macOS, and Linux. |
18 | 18 |
|
19 | | -* **Windows:** Windows 10 |
20 | | -* **macOS:** macOS 10.15 (Catalina) |
21 | | -* **Linux:** Ubuntu 22.04 (glibc 2.35) |
| 19 | +#### VM & Network Features |
| 20 | +- **LAN Accessible:** Cloned VMs are configured as full citizens on your local network, discoverable and accessible from any other computer. |
| 21 | +- **Network Discovery (mDNS):** Clones announce themselves on the network using Avahi, appearing as hostname.local, just like a real Raspberry Pi. |
| 22 | +- **User-Friendly Console:** The IP address of the VM is displayed directly on the console login screen for immediate, easy SSH access. |
| 23 | +- **Secure by Default:** The master template is configured with a locked root account and a standard user with **sudo** privileges. |
| 24 | + |
| 25 | +--- |
| 26 | + |
| 27 | +## Installation |
| 28 | + |
| 29 | +### Windows (Recommended) |
| 30 | + |
| 31 | +For the easiest and most reliable setup, use the provided installer. |
| 32 | + |
| 33 | +1. Navigate to the **[latest release page](https://github.com/HenkVanHoek/pi-server-vm/releases/latest)**. |
| 34 | +2. Under the "Assets" section, download the installer, which will be named pi-server-vm-setup-vX.X.X.exe. |
| 35 | +3. Run the downloaded setup.exe and follow the on-screen instructions. |
| 36 | + |
| 37 | +> **Note on Security Warnings:** The Windows installer is not yet digitally code-signed. Therefore, you may see a security warning from Windows Defender SmartScreen when you run it. Please click **"More info"** and then **"Run anyway"** to proceed with the installation. The executables are built transparently via our public GitHub Actions workflow for your security. |
22 | 38 |
|
23 | | -While the tools may work on other Linux distributions, they are officially tested against Ubuntu 22.04. |
| 39 | +### macOS & Linux |
24 | 40 |
|
25 | | -## Downloads |
| 41 | +1. Navigate to the **[latest release page](https://github.com/HenkVanHoek/pi-server-vm/releases/latest)**. |
| 42 | +2. Download the appropriate archive for your OS (executables-macOS.tar.gz or executables-Linux.tar.gz). |
| 43 | +3. Extract the archive. This will create a folder for each tool. |
| 44 | +4. It is recommended to move these tool folders to a convenient location and add their parent directory to your system PATH for easy access. |
26 | 45 |
|
27 | | -For users who want to skip the manual installation, a ready-to-use virtual appliance (**ova** file) is available. |
| 46 | +--- |
28 | 47 |
|
29 | | -➡️ **[Download the latest release (v1.4.1)](https://github.com/HenkVanHoek/pi-server-vm/releases/latest)** |
30 | 48 | ## Quick Start & Usage |
31 | 49 |
|
32 | | -This project provides executables for easy use. For detailed, step-by-step instructions for your specific operating system, please see the guides below. These guides are the recommended starting point. |
33 | | -For all 3 environments, the Anti-Virus software will very likely block the executables. Sometimes silently. Be aware of this. |
| 50 | +For detailed, step-by-step instructions for your specific operating system, including how to handle potential anti-virus warnings, please see the full guides: |
34 | 51 |
|
35 | 52 | - ➡️ **[Installation Guide for Windows](INSTALL_WINDOWS.md)** |
36 | 53 | - ➡️ **[Installation Guide for macOS](INSTALL_MACOS.md)** |
37 | 54 | - ➡️ **[Installation Guide for Linux](INSTALL_LINUX.md)** |
38 | 55 |
|
| 56 | +--- |
| 57 | + |
| 58 | +## Compatibility |
| 59 | + |
| 60 | +The pre-built executables are tested to run on the following operating systems or newer: |
| 61 | + |
| 62 | +* **Windows:** Windows 10 |
| 63 | +* **macOS:** macOS 10.15 (Catalina) |
| 64 | +* **Linux:** Ubuntu 22.04 (glibc 2.35) |
| 65 | + |
| 66 | +--- |
| 67 | + |
39 | 68 | ## Scope and Limitations |
40 | 69 |
|
41 | 70 | It is important to understand what this project is designed for and what its limitations are. |
42 | 71 |
|
43 | | -### CPU Emulation vs. Allocation |
44 | | -The virtual machines run on the **x86-64 architecture** of your host computer, not the **ARM architecture** of a physical Raspberry Pi. This is excellent for testing the performance of **multithreaded** server applications in a **multicore** environment, but it cannot run software that is compiled exclusively for ARM. |
| 72 | +* **CPU Architecture:** The virtual machines run on the **x86-64 architecture** of your host computer, not the **ARM architecture** of a physical Raspberry Pi. This is excellent for testing multi-threaded server applications but cannot run software compiled exclusively for ARM. |
| 73 | +* **Real-Time Processing:** This virtual environment is **not suitable for hard real-time applications** that require microsecond-precision timing or direct hardware access like GPIO pins. |
45 | 74 |
|
46 | | -### Real-Time Processing |
47 | | -This virtual environment is **not suitable for hard real-time applications** that require microsecond-precision timing or direct hardware access like GPIO pins. |
| 75 | +--- |
48 | 76 |
|
49 | 77 | ## Contributing |
50 | | -We welcome contributions! Please see the **CONTRIBUTING.md** file for details on how to get started, report bugs, and submit changes. |
| 78 | +We welcome contributions! Please see the **[CONTRIBUTING.md](CONTRIBUTING.md)** file for details on how to get started, report bugs, and submit changes. |
51 | 79 |
|
52 | 80 | ## Support This Project |
53 | | -If you find this project useful and would like to help support its continued development, please consider becoming a sponsor. Your support is greatly appreciated! |
| 81 | +If you find this project useful, please consider becoming a sponsor. Your support is greatly appreciated! |
54 | 82 |
|
55 | 83 | ➡️ **[Sponsor @HenkVanHoek on GitHub](https://github.com/sponsors/HenkVanHoek)** |
0 commit comments