A comprehensive guide and automation toolkit for setting up and managing a powerful virtualized home or small business network environment using Proxmox, pfSense, OpenWRT, and TrueNAS.
- Proxmox VE installed on your server
- Basic understanding of networking concepts
- Minimum 8GB RAM (16GB+ recommended)
- 100GB+ free disk space
# Check system requirements
make check
# Install required dependencies
make setup
# Deploy pfSense VM
make deploy-pfsense
# Backup your VMs
make backup- Features
- Project Structure
- Getting Started
- Usage
- Documentation
- Contributing
- License
- About the Author
- Automated Deployment: Scripts to deploy and configure virtual machines
- System Validation: Pre-flight checks for system requirements
- Backup Solutions: Automated backup of VMs and containers
- Modular Design: Easy to extend and customize
- Documentation: Comprehensive guides and references
.
├── scripts/ # Automation scripts
│ ├── check_prerequisites.sh # System requirements check
│ ├── deploy_pfsense_vm.sh # pfSense VM deployment
│ ├── deploy_openwrt_vm.sh # OpenWRT VM deployment (coming soon)
│ ├── deploy_truenas_vm.sh # TrueNAS VM deployment (coming soon)
│ └── backup_vms.sh # Backup solution for VMs
├── docs/ # Additional documentation
│ ├── networking/ # Network configuration guides
│ ├── security/ # Security best practices
│ └── troubleshooting/ # Common issues and solutions
├── .gitignore # Git ignore file
├── LICENSE # MIT License
├── Makefile # Project automation
└── README.md # This file
- Proxmox VE 7.0 or later
- CPU with hardware virtualization support (Intel VT-x/AMD-V)
- Minimum 8GB RAM (16GB+ recommended)
- 100GB+ free disk space
- Network connectivity
-
Clone the repository:
git clone https://github.com/tom-sapletta-com/proxmox-pfsense-OpenWRT-TrueNas.git cd proxmox-pfsense-OpenWRT-TrueNas -
Install dependencies:
make setup
-
Make scripts executable:
make install
make deploy-pfsenseOr manually:
sudo ./scripts/deploy_pfsense_vm.sh \
--id 100 \
--name "pfsense" \
--memory 2048 \
--cores 2 \
--storage local-lvm \
--iso /path/to/pfSense-*.isomake deploy-openwrtmake deploy-truenasCreate a backup of all VMs and containers:
make backupOr customize the backup:
sudo ./scripts/backup_vms.sh \
--dir /mnt/backup/proxmox \
--compression zstd \
--max 7 \
--exclude 101,102Check system requirements:
make checkClean up temporary files:
make cleanFor detailed documentation, please refer to the following resources:
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Tom Sapletta is a technology enthusiast and software developer with a passion for:
- Automated code generation (TextToSoftware)
- Hypermodularization
- Edge computing & distributed systems
- MBSE, Component-Based Development, Digital Twins
- How to Install pfSense on Proxmox in 2023 - WunderTech
- Run an OpenWRT VM on Proxmox VE
- Proxmox: How to Delete VM, VM Disks & VM Snapshots - phoenixNAP KB
- Network Configuration - Proxmox VE
- How to Configure a pfSense Network Bridge on a Dedicated Server – Articles
- pfSense VLANs on Proxmox - Linux Included
- Download the latest AMD64 DVD Image (ISO) installer from the pfSense website.
- Upload the ISO that was just downloaded to the Proxmox server.
- Select Create VM in the top right corner.
Before we look at how to install pfSense on Proxmox, ensure that you have a NIC installed in your Proxmox server as we’ll have to use this to pass it through to our pfSense virtual machine.
- Give the VM a name, then check off start at boot. Select next to proceed.
- Select the pfSense ISO image and then select next.
- In the network section, select no network device, then select next.
qm monitor <vmid> connect to vm control monitor
qm start <vmid> start vm
qm reboot <vmid> reboot vm (shutdown, start)
qm shutdown <vmid> gracefully stop vm (send poweroff)
qm stop <vmid> kill vm (immediate stop)
qm reset <vmid> reset vm (stop, start)
qm suspend <vmid> suspend vm
qm resume <vmid> resume vm
qm destroy <vmid> destroy vm (delete all files)
qm cdrom <vmid> [<device>] <path> set cdrom path. <device is ide2 by default>
qm cdrom <vmid> [<device>] eject eject cdrom
qm unlink <vmid> <file> delete unused disk images
qm vncproxy <vmid> <ticket> open vnc proxy
qm list list all virtual machinesWhen creating the VM:
-
Set Machine to q35
-
Set BIOS to OVMF (UEFI) On the first boot, go into the boot settings and disable secure boot:
-
Hit Esc while the boot splash screen is visible
-
Select Device Manager
-
Select Secure Boot Configuration
-
Uncheck Attempt Secure Boot
-
Press F10 to save
-
Press Esc to exit
add the new network card to proxmox usage and use embedded cards to pfsense directly from PCI
- change the physical network device in vmbr0 to the external USB card
- Add PCI NET Devices Before start pfsense
- All functions
pfSense® software Configuration Recipes — Virtualizing with Proxmox® VE - pfSense Documentation
After the virtual machine reboots, the console will stop at an interfaces assignment prompt.
Type
nand pressEnterto skip VLAN configurationEnter
vtnet0for WANEnter
vtnet1for LANPress
Enterif prompted for additional interfacesType
yand pressEnterto complete the interface assignment
How to reload /etc/network/interfaces in Ubuntu or Debian
In Ubuntu or Debian desktop, Network Manager is the default network configuration tool, whereas Ubuntu server by default uses
/etc/network/interfacesto configure network interfaces. Of course, even on desktop, you can disable Network Manager, and use/etc/network/interfacesinstead to configure your networking.For those of you who use
/etc/network/interfacesto configure network interfaces, if you modify/etc/network/interfaces, you need to reload it so that the new configuration can take effect.
(adsbygoogle = window.adsbygoogle || []).push({});
Here is how you can reload /etc/network/interfaces.
sudo service networking restart
Note: If Network Manager is installed and enabled on your system, you must not use /etc/network/interfaces to configure networking, and any change made in /etc/network/interfaces will be ignored by Network Manager. You need to use Network Manager to configure your network interfaces. In that case, after network settings are modified, you can restart Network manager as follows.
sudo service network-manager restart
- Official Proxmox Documentation
- Proxmox VE Administration Guide
- Proxmox Network Configuration
- Proxmox Backup & Restore
- Proxmox API Documentation
- Official pfSense Documentation
- pfSense Hardware Requirements
- pfSense Firewall Rules
- pfSense VPN Setup
- pfSense Packages
- Wireshark - Network protocol analyzer
- iperf3 - Network performance measurement tool
- MTR - Network diagnostic tool
- Netdata - Real-time performance monitoring
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
- Thanks to all the open-source communities for their amazing work
- Special thanks to the Proxmox, pfSense, OpenWRT, and TrueNAS teams
- Inspired by the homelab community



