Skip to content

Instantly share code, notes, and snippets.

@noahbliss
Last active May 12, 2024 22:01
Show Gist options
  • Save noahbliss/20573e515ed78d84fde3b286fa963396 to your computer and use it in GitHub Desktop.
Save noahbliss/20573e515ed78d84fde3b286fa963396 to your computer and use it in GitHub Desktop.
Proxmox Setup for General Dev Use
# Swap to free repo
wget -qO- https://gitlab.com/shebang/bashengine/raw/master/root/proxmox/aptfix | bash
apt update
apt upgrade -y
apt dist-upgrade -y
# Remove Nag. (Needs to be done after most upgrades that impact pve-manager)
cat <<EOF > /etc/apt/apt.conf.d/80pvenagfix
//Removes PVE nagware. If you like a software, support the devs.
DPkg::Post-Invoke {"if [ -f /usr/share/perl5/PVE/API2/Subscription.pm ] && grep 'notfound' /usr/share/perl5/PVE/API2/Subscription.pm >/dev/null; then sed -i.bak 's/notfound/active/g' /usr/share/perl5/PVE/API2/Subscription.pm &>/dev/null && systemctl restart pveproxy.service; fi";};
EOF
#Just once:
#sed -i.bak 's/NotFound/Active/g' /usr/share/perl5/PVE/API2/Subscription.pm && systemctl restart pveproxy.service
# Replace thin LVM with directory storage on an LVM volume. (Don't forget to rework the datacenter storage settings after this.)
lvremove pve/data
lvcreate -l +100%FREE -n data pve
mkfs.ext4 /dev/pve/data
echo "/dev/pve/data /var/lib/vz ext4 errors=remount-ro 0 1" >> /etc/fstab
mount -a
# Custom web interface logo (megaman)
wget https://gitlab.com/shebang/bashengine/-/raw/master/root/proxmox/proxmox_logo.png -O /usr/share/pve-manager/images/proxmox_logo-custom.png
mv /usr/share/pve-manager/images/proxmox_logo.png /usr/share/pve-manager/images/proxmox_logo-original.png
ln -s /usr/share/pve-manager/images/proxmox_logo-custom.png /usr/share/pve-manager/images/proxmox_logo.png
# Custom web interface logo (simon from gurren lagann)
wget https://gitlab.com/shebang/bashengine/-/raw/master/root/proxmox/simon_proxmox_logo.png -O /usr/share/pve-manager/images/proxmox_logo-custom.png
mv /usr/share/pve-manager/images/proxmox_logo.png /usr/share/pve-manager/images/proxmox_logo-original.png
ln -s /usr/share/pve-manager/images/proxmox_logo-custom.png /usr/share/pve-manager/images/proxmox_logo.png
# Protect from updates:
cat <<EOF > /etc/apt/apt.conf.d/81pvecustomlogo
//Preserves custom interface logo.
DPkg::Post-Invoke {"if [ -f /usr/share/pve-manager/images/proxmox_logo-custom.png ] && ! [ -h /usr/share/pve-manager/images/proxmox_logo.png ]; then echo 'Restoring custom logo...'; mv /usr/share/pve-manager/images/proxmox_logo.png /usr/share/pve-manager/images/proxmox_logo-original.png; ln -s /usr/share/pve-manager/images/proxmox_logo-custom.png /usr/share/pve-manager/images/proxmox_logo.png; fi";};
EOF
# Install trusted certificates when proxmox is part of a freeipa domain.
hostname $(hostname -f) && hostname -f > /etc/hostname # Make sure we default to long hostnames.
cat <<'EOF' > /usr/local/sbin/ipa-pveproxyupdate.sh
#!/usr/bin/env bash
CERT_FILE=/etc/pki/tls/certs/$(hostname -f).pem
KEY_FILE=/etc/pki/tls/private/$(hostname -f).key
cat $CERT_FILE /etc/ipa/ca.crt > /etc/pve/local/pveproxy-ssl.pem
cat $KEY_FILE > /etc/pve/local/pveproxy-ssl.key
systemctl restart pveproxy
EOF
chmod +x /usr/local/sbin/ipa-pveproxyupdate.sh
CERT_FILE=/etc/pki/tls/certs/$(hostname --fqdn).pem; KEY_FILE=/etc/pki/tls/private/$(hostname --fqdn).key; \
mkdir -p /etc/pki/tls/{certs,private}; \
ipa-getcert request -f ${CERT_FILE} -k ${KEY_FILE} -C "/usr/local/sbin/ipa-pveproxyupdate.sh"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment