mirror of
				https://github.com/flynx/proxmox-utils.git
				synced 2025-10-29 11:10:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			156 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # proxmox-utils (EXPERIMENTAL)
 | |
| 
 | |
| A set of scripts for automating setup and tasks in proxmox.
 | |
| 
 | |
| ## TODO
 | |
| - revise defaults
 | |
| - separate templates/assets into distribution and user directories
 | |
|   ...this is needed to allow the user to change the configs without the 
 | |
|   fear of them being overwritten by git (similar to how config is handlerd)
 | |
| - updates
 | |
| - backup/restore
 | |
| - mail
 | |
| - setup host
 | |
| 
 | |
| 
 | |
| ## Motivation
 | |
| 
 | |
| This was simply faster to implement than learning and writing the same functionality in Ansible.
 | |
| 
 | |
| _NOTE: for a fair assessment of viability of further development an Ansible version will be implemented next as a direct comparison._
 | |
| 
 | |
| 
 | |
| ## Architecture
 | |
| 
 | |
| XXX service structure
 | |
| 
 | |
| XXX network
 | |
| 
 | |
| In general `proxmox-utils` splits the configuration into two levels:
 | |
| 
 | |
| 
 | |
| ### CT level  
 | |
| 
 | |
| This level is handled by the `Makefile` and is almost completely automated
 | |
| 
 | |
| 
 | |
| ### Host level
 | |
| 
 | |
| This level depends on the host setup and is currently done manually 
 | |
| depending on existing host configuration.
 | |
| 
 | |
| XXX clean setup scripts...
 | |
|   
 | |
| 
 | |
| 
 | |
| ## Prerequisites
 | |
| 
 | |
| ### Proxmox
 | |
| 
 | |
| ```shell
 | |
| sudo apt update && sudo apt upgrade
 | |
| ```
 | |
| 
 | |
| ```shell
 | |
| sudo apt install git make 
 | |
| ```
 | |
| 
 | |
| 
 | |
| ### Network Bridges
 | |
| 
 | |
| `proxmox-utils` expects there to be at least three bridges:
 | |
| - `WAN` - connected to the port that faces the external network (either 
 | |
|   directly of via a router)
 | |
| - `LAN` - a virtual bridge, not connected to any physical interfaces
 | |
| - `ADMIN` - connected to a second physical interface used for 
 | |
|   administrative purposes.
 | |
| 
 | |
| Note their numbers (i.e. the number in `vmbr#`), this will be needed for 
 | |
| setup.
 | |
| 
 | |
| Note, if the device has more that two ports it is recommended to assign 
 | |
| first/last ports to wan/admin respectively and clearly mark them as such.
 | |
| 
 | |
| 
 | |
| ### DNS
 | |
| 
 | |
| Add `10.1.1.1` to the DNS on the Proxmox host node after the `127.0.0.1`
 | |
| but before whatever external DNS you are using.
 | |
| 
 | |
| 
 | |
| ### Firewall
 | |
| 
 | |
| Make sure to allow at least `ssh` access to the host node from the `ADMIN` 
 | |
| interface to allow admin CT's access to the host if needed, this is mostly
 | |
| needed to allow VPN/ssh administration from outside.
 | |
| 
 | |
| For Proxmox firewall configuration see:
 | |
| https://pve.proxmox.com/wiki/Firewall
 | |
| 
 | |
| 
 | |
| ### Recovery strategies
 | |
| 
 | |
| ns/gate as separate nodes for redundancy
 | |
| 
 | |
| ssh facing lan to avoid a single point of failure with gate
 | |
| 
 | |
| 
 | |
| 
 | |
| ## Setup
 | |
| 
 | |
| Get the code:
 | |
| ```shell
 | |
| git clone https://github.com/flynx/proxmox-utils.git
 | |
| ```
 | |
| or:
 | |
| ```shell
 | |
| git clone git@github.com:flynx/proxmox-utils.git
 | |
| ```
 | |
| 
 | |
| 
 | |
| For host setup:
 | |
| ```shell
 | |
| sudo make host
 | |
| ```
 | |
| 
 | |
| Be carefull as this may overwrite existing configuration.
 | |
| 
 | |
| 
 | |
| Install CT's:
 | |
| ```shell
 | |
| sudo make all
 | |
| ```
 | |
| 
 | |
| 
 | |
| Install gitea (optional):
 | |
| ```shell
 | |
| sudo make dev
 | |
| ```
 | |
| 
 | |
| 
 | |
| ## Post-setup
 | |
| 
 | |
| XXX test conections
 | |
| XXX change proxmox ip/network
 | |
| XXX firewall
 | |
| 
 | |
| 
 | |
| ## Extending
 | |
| 
 | |
| ### Directory structure
 | |
| 
 | |
| ```
 | |
| /
 | |
| +- <ct-type>/
 | |
| |   +- templates/
 | |
| |   +- assets/
 | |
| |   +- staging/
 | |
| |   +- make.sh
 | |
| |   +- config
 | |
| |   +- config.last-run
 | |
| +- ...
 | |
| +- Makefile
 | |
| +- config.global
 | |
| +- config.global.example
 | |
| ```
 |