108 lines
3.5 KiB
Bash
Executable file
108 lines
3.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Source common functions
|
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
|
|
# Constants and default settings
|
|
APP="Pinchflat"
|
|
var_tags="${var_tags:-arr;}"
|
|
var_cpu="${var_cpu:-2}"
|
|
var_ram="${var_ram:-1024}"
|
|
var_disk="${var_disk:-8G}"
|
|
var_os="${var_os:-debian}"
|
|
var_version="${var_version:-12}"
|
|
var_unprivileged="${var_unprivileged:-1}"
|
|
var_template="debian-12-standard_12.0-1_amd64.tar.zst" # Define the template name
|
|
|
|
# Function to prompt for storage selection
|
|
function prompt_storage_selection() {
|
|
echo -e "${CYAN}--- Available Storage Options ---${NC}"
|
|
pvesm status | awk '{print $1}' | sed '1d' # Exclude header
|
|
read -p "Please select storage (enter the name): " STORAGE
|
|
echo "Using storage: $STORAGE"
|
|
}
|
|
|
|
# Function to create the LXC container
|
|
function create_container() {
|
|
echo -e "\n${GREEN}Creating LXC Container...${NC}"
|
|
pct create $CTID $var_template \
|
|
--hostname $HN \
|
|
--cores $var_cpu \
|
|
--memory $var_ram \
|
|
--swap 512 \
|
|
--rootfs $STORAGE:$var_disk \
|
|
--net0 name=eth0,bridge=$var_bridge,ip=$var_ip \
|
|
--unprivileged $var_unprivileged \
|
|
--features nesting=1 \
|
|
--start 1 \
|
|
--onboot 1 \
|
|
--ostype $var_os
|
|
|
|
echo -e "\n${GREEN}Container created successfully!${NC}"
|
|
}
|
|
|
|
# Function to install Pinchflat inside the LXC
|
|
function install_pinchflat() {
|
|
echo -e "\n${BLUE}Installing Pinchflat inside LXC...${NC}"
|
|
pct exec $CTID -- bash -c "\
|
|
apt update && \
|
|
apt install -y git curl bash && \
|
|
git clone https://github.com/kieraneglin/pinchflat /opt/pinchflat && \
|
|
chmod +x /opt/pinchflat/pinchflat.sh && \
|
|
ln -s /opt/pinchflat/pinchflat.sh /usr/local/bin/pinchflat"
|
|
|
|
echo -e "\n${GREEN}Pinchflat installation completed!${NC}"
|
|
}
|
|
|
|
# Main function
|
|
function main() {
|
|
echo -e "${BLUE}Proxmox VE LXC Installer for $APP${NC}"
|
|
echo -e "Choose setup mode:"
|
|
|
|
select opt in "Default Setup" "Advanced Setup"; do
|
|
case $opt in
|
|
"Default Setup")
|
|
CTID=124
|
|
HN="pinchflat"
|
|
var_disk="8G"
|
|
var_ram="1024"
|
|
var_cpu="2"
|
|
var_bridge="vmbr0"
|
|
var_ip="dhcp"
|
|
prompt_storage_selection
|
|
break
|
|
;;
|
|
"Advanced Setup")
|
|
read -p "Container ID [Default: 124]: " CTID
|
|
CTID=${CTID:-124}
|
|
read -p "Hostname [Default: pinchflat]: " HN
|
|
HN=${HN:-"pinchflat"}
|
|
read -p "Disk Size (e.g. 8G) [Default: 8G]: " var_disk
|
|
var_disk=${var_disk:-"8G"}
|
|
read -p "RAM Size in MB [Default: 1024]: " var_ram
|
|
var_ram=${var_ram:-1024}
|
|
read -p "CPU Cores [Default: 2]: " var_cpu
|
|
var_cpu=${var_cpu:-2}
|
|
read -p "Network Bridge [Default: vmbr0]: " var_bridge
|
|
var_bridge=${var_bridge:-"vmbr0"}
|
|
read -p "IP Address [Default: dhcp]: " var_ip
|
|
var_ip=${var_ip:-"dhcp"}
|
|
prompt_storage_selection
|
|
break
|
|
;;
|
|
*)
|
|
echo "Invalid option. Please select 1 or 2."
|
|
;;
|
|
esac
|
|
done
|
|
|
|
create_container
|
|
install_pinchflat
|
|
|
|
echo -e "\n${GREEN}Pinchflat LXC ($CTID) is ready!${NC}"
|
|
echo -e "Access it via: ${CYAN}pct console $CTID${NC}"
|
|
echo -e "Run the script with: ${CYAN}pinchflat${NC}"
|
|
}
|
|
|
|
# Execute the main function
|
|
main
|