From 472de466574d0703ad4d3620b6427373e60ff8f0 Mon Sep 17 00:00:00 2001
From: MacRimi
Date: Sat, 1 Mar 2025 18:46:22 +0100
Subject: [PATCH] update
---
.../docs/post-install/basic-settings/page.tsx | 93 ++++++++++-----
web/app/docs/post-install/network/page.tsx | 106 +++++++++++++-----
web/app/docs/post-install/system/page.tsx | 61 +++++-----
.../docs/post-install/virtualization/page.tsx | 105 +++++++++++++----
4 files changed, 253 insertions(+), 112 deletions(-)
diff --git a/web/app/docs/post-install/basic-settings/page.tsx b/web/app/docs/post-install/basic-settings/page.tsx
index 77c7750..6fd148b 100644
--- a/web/app/docs/post-install/basic-settings/page.tsx
+++ b/web/app/docs/post-install/basic-settings/page.tsx
@@ -1,5 +1,6 @@
import type { Metadata } from "next"
import { Settings } from "lucide-react"
+import { CopyableCode } from "@/components/CopyableCode"
export const metadata: Metadata = {
title: "ProxMenux Post-Install: Basic Settings",
@@ -31,32 +32,61 @@ export const metadata: Metadata = {
export default function BasicSettingsPage() {
const installUtilitiesCode = `
+# Update package lists
sudo apt-get update
-sudo apt-get install -y axel curl dialog dnsutils dos2unix gnupg-agent grc htop btop iftop iotop \\
- iperf3 ipset iptraf-ng mlocate msr-tools nano net-tools omping \\
- software-properties-common sshpass tmux unzip vim vim-nox wget whois zip \\
- libguestfs-tools
+
+# Install common system utilities
+sudo apt-get install -y axel curl dialog dnsutils dos2unix gnupg-agent grc htop btop iftop iotop
+sudo apt-get install -y iperf3 ipset iptraf-ng mlocate msr-tools nano net-tools omping
+sudo apt-get install -y software-properties-common sshpass tmux unzip vim vim-nox wget whois zip
+sudo apt-get install -y libguestfs-tools
`
const skipLanguagesCode = `
+# Configure APT to skip downloading additional languages
echo 'Acquire::Languages "none";' | sudo tee /etc/apt/apt.conf.d/99-disable-translations
`
const timeSyncCode = `
-# To set timezone automatically based on IP, you would need to run:
-IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
-TIMEZONE=$(curl -s "https://ipapi.co/$IP/timezone")
-sudo timedatectl set-timezone "$TIMEZONE"
+# Set timezone (replace 'America/New_York' with your timezone)
+sudo timedatectl set-timezone America/New_York
+
+# Enable automatic time synchronization
+sudo timedatectl set-ntp true
+
+# Note: To set timezone automatically based on IP, you can use:
+# IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
+# TIMEZONE=$(curl -s "https://ipapi.co/$IP/timezone")
+# sudo timedatectl set-timezone "$TIMEZONE"
`
const updateUpgradeCode = `
-# Disable enterprise repos
-sudo sed -i 's/^deb/#deb/g' /etc/apt/sources.list.d/pve-enterprise.list
-sudo sed -i 's/^deb/#deb/g' /etc/apt/sources.list.d/ceph.list
+# Disable enterprise Proxmox repository
+if [ -f /etc/apt/sources.list.d/pve-enterprise.list ]; then
+ sudo sed -i 's/^deb/#deb/g' /etc/apt/sources.list.d/pve-enterprise.list
+fi
-# Enable free public repo
+# Disable enterprise Proxmox Ceph repository
+if [ -f /etc/apt/sources.list.d/ceph.list ]; then
+ sudo sed -i 's/^deb/#deb/g' /etc/apt/sources.list.d/ceph.list
+fi
+
+# Enable free public Proxmox repository
echo "deb http://download.proxmox.com/debian/pve $(lsb_release -cs) pve-no-subscription" | sudo tee /etc/apt/sources.list.d/pve-public-repo.list
+# Enable Proxmox testing repository
+echo "deb http://download.proxmox.com/debian/pve $(lsb_release -cs) pvetest" | sudo tee /etc/apt/sources.list.d/pve-testing-repo.list
+
+# Configure main Debian repositories
+cat <
- To apply this optimization manually, you would run:
-
- {installUtilitiesCode}
-
+ To apply this optimization manually, run these commands:
+
@@ -109,10 +137,8 @@ sudo apt-get install -y zfsutils-linux proxmox-backup-restore-image chrony
improve the speed of package management operations. This is particularly useful in server environments where
multiple language support is often not required.
- To apply this optimization manually, you would run:
-
- {skipLanguagesCode}
-
+ To apply this optimization manually, run this command:
+
@@ -125,27 +151,31 @@ sudo apt-get install -y zfsutils-linux proxmox-backup-restore-image chrony
consistency, and proper functioning of time-sensitive applications. Automatic synchronization ensures your
Proxmox VE system maintains the correct time without manual intervention.
- To apply this optimization manually, you would run:
-
- {timeSyncCode}
-
+ To apply this optimization manually, run these commands:
+
4. Update and Upgrade System
This optimization updates the system's package lists, upgrades installed packages, and configures Proxmox
- repositories.
+ repositories. It also includes additional steps to properly set up Debian repositories and disable certain
+ warnings.
Why it's beneficial: Keeping your system up-to-date is essential for security, stability, and
performance. This optimization ensures you have the latest patches and features, while also configuring the
- correct repositories for Proxmox VE, enabling access to necessary updates and tools.
+ correct repositories for Proxmox VE, enabling access to necessary updates and tools. The additional steps help
+ in:
- To apply this optimization manually, you would run:
-
- {updateUpgradeCode}
-
+
+ - Disabling enterprise repositories to avoid conflicts
+ - Enabling free and testing repositories for broader package access
+ - Properly configuring Debian repositories for a stable system
+ - Suppressing non-free firmware warnings for a cleaner update experience
+
+ To apply this optimization manually, run these commands:
+
@@ -153,7 +183,8 @@ sudo apt-get install -y zfsutils-linux proxmox-backup-restore-image chrony
All of these optimizations are automatically applied when selected in the Basic Settings section of the
customizable_post_install.sh script. This automation ensures that these beneficial settings are applied
- consistently and correctly.
+ consistently and correctly, saving time and reducing the potential for human error during manual
+ configuration.
diff --git a/web/app/docs/post-install/network/page.tsx b/web/app/docs/post-install/network/page.tsx
index dc18756..6b8ab7e 100644
--- a/web/app/docs/post-install/network/page.tsx
+++ b/web/app/docs/post-install/network/page.tsx
@@ -1,5 +1,6 @@
import type { Metadata } from "next"
import { Network } from "lucide-react"
+import { CopyableCode } from "@/components/CopyableCode"
export const metadata: Metadata = {
title: "ProxMenux Post-Install: Network Settings",
@@ -38,12 +39,45 @@ net.core.optmem_max=8192
net.core.rmem_max=16777216
net.core.somaxconn=8151
net.core.wmem_max=16777216
-net.ipv4.tcp_rmem=8192 87380 16777216
-net.ipv4.tcp_wmem=8192 65536 16777216
+net.ipv4.conf.all.accept_redirects = 0
+net.ipv4.conf.all.accept_source_route = 0
+net.ipv4.conf.all.log_martians = 0
+net.ipv4.conf.all.rp_filter = 1
+net.ipv4.conf.all.secure_redirects = 0
+net.ipv4.conf.all.send_redirects = 0
+net.ipv4.conf.default.accept_redirects = 0
+net.ipv4.conf.default.accept_source_route = 0
+net.ipv4.conf.default.log_martians = 0
+net.ipv4.conf.default.rp_filter = 1
+net.ipv4.conf.default.secure_redirects = 0
+net.ipv4.conf.default.send_redirects = 0
+net.ipv4.icmp_echo_ignore_broadcasts = 1
+net.ipv4.icmp_ignore_bogus_error_responses = 1
+net.ipv4.ip_local_port_range=1024 65535
+net.ipv4.tcp_base_mss = 1024
+net.ipv4.tcp_challenge_ack_limit = 999999999
+net.ipv4.tcp_fin_timeout=10
+net.ipv4.tcp_keepalive_intvl=30
+net.ipv4.tcp_keepalive_probes=3
+net.ipv4.tcp_keepalive_time=240
+net.ipv4.tcp_limit_output_bytes=65536
net.ipv4.tcp_max_syn_backlog=8192
+net.ipv4.tcp_max_tw_buckets = 1440000
+net.ipv4.tcp_mtu_probing = 1
+net.ipv4.tcp_rfc1337=1
+net.ipv4.tcp_rmem=8192 87380 16777216
+net.ipv4.tcp_sack=1
net.ipv4.tcp_slow_start_after_idle=0
-net.ipv4.tcp_tw_reuse=0
-# ... (other network optimizations)
+net.ipv4.tcp_syn_retries=3
+net.ipv4.tcp_synack_retries = 2
+net.ipv4.tcp_tw_recycle = 0
+net.ipv4.tcp_tw_reuse = 0
+net.ipv4.tcp_wmem=8192 65536 16777216
+net.netfilter.nf_conntrack_generic_timeout = 60
+net.netfilter.nf_conntrack_helper=0
+net.netfilter.nf_conntrack_max = 524288
+net.netfilter.nf_conntrack_tcp_timeout_established = 28800
+net.unix.max_dgram_qlen = 4096
EOF
# Apply sysctl changes
@@ -77,8 +111,10 @@ echo "Acquire::ForceIPv4 \"true\";" > /etc/apt/apt.conf.d/99-force-ipv4
`
const installOpenVSwitchCode = `
-# Install OpenVSwitch
+# Update package lists
apt-get update
+
+# Install OpenVSwitch
apt-get install -y openvswitch-switch openvswitch-common
# Verify installation
@@ -105,12 +141,18 @@ ovs-vsctl --version
Why it's beneficial: These optimizations can significantly improve network throughput, reduce
- latency, and enhance security by adjusting various kernel parameters related to networking.
+ latency, and enhance security by adjusting various kernel parameters related to networking. Some key benefits
+ include:
+
+ - Increased maximum number of backlog connections
+ - Optimized TCP window sizes for better throughput
+ - Enhanced security by disabling potentially dangerous features like ICMP redirects
+ - Improved TCP connection handling and timeout settings
+ - Optimized network memory allocation
+
To apply this optimization manually, you would run:
-
- {applyNetworkOptimizationsCode}
-
+
@@ -119,14 +161,20 @@ ovs-vsctl --version
This optimization enables Google's TCP BBR congestion control algorithm and TCP Fast Open.
- Why it's beneficial: TCP BBR can significantly improve network throughput and reduce latency,
- especially on long-distance or congested networks. TCP Fast Open reduces connection establishment time,
- improving the speed of short-lived connections.
+ Why it's beneficial:
+
+ -
+ TCP BBR (Bottleneck Bandwidth and Round-trip propagation time) can significantly improve network throughput
+ and reduce latency, especially on long-distance or congested networks.
+
+ -
+ TCP Fast Open reduces connection establishment time, improving the speed of short-lived connections by
+ allowing data transfer during the initial TCP handshake.
+
+
To apply this optimization manually, you would run:
-
- {enableTcpFastOpenCode}
-
+
@@ -134,12 +182,15 @@ ovs-vsctl --version
This optimization configures APT (Advanced Package Tool) to use IPv4 exclusively.
Why it's beneficial: Forcing APT to use IPv4 can resolve issues in environments where IPv6 is
- not properly configured or is causing slowdowns. This ensures more reliable package management operations.
+ not properly configured or is causing slowdowns. This ensures more reliable package management operations by:
+
+ - Avoiding potential IPv6-related connection issues
+ - Ensuring consistent behavior across different network configurations
+ - Potentially speeding up package downloads in networks with suboptimal IPv6 support
+
To apply this optimization manually, you would run:
-
- {forceAptIpv4Code}
-
+
@@ -149,13 +200,17 @@ ovs-vsctl --version
Why it's beneficial: Open vSwitch provides advanced networking capabilities for virtualized
- environments. It allows for more flexible and powerful network configurations, supporting features like VLAN
- tagging, traffic shaping, and software-defined networking.
+ environments. It allows for more flexible and powerful network configurations, including:
+
+ - Support for VLAN tagging and trunking
+ - Advanced traffic shaping and Quality of Service (QoS) capabilities
+ - Integration with software-defined networking (SDN) controllers
+ - Improved network performance and scalability for large virtualized environments
+ - Support for network function virtualization (NFV)
+
To apply this optimization manually, you would run:
-
- {installOpenVSwitchCode}
-
+
@@ -163,7 +218,8 @@ ovs-vsctl --version
All of these optimizations are automatically applied when selected in the Network section of the
customizable_post_install.sh script. This automation ensures that these beneficial settings are applied
- consistently and correctly.
+ consistently and correctly, saving time and reducing the potential for human error during manual
+ configuration.
diff --git a/web/app/docs/post-install/system/page.tsx b/web/app/docs/post-install/system/page.tsx
index fa123a1..cc745ba 100644
--- a/web/app/docs/post-install/system/page.tsx
+++ b/web/app/docs/post-install/system/page.tsx
@@ -204,6 +204,19 @@ EOF
sudo sysctl -p /etc/sysctl.d/99-memory.conf
`
+ const timeSyncCode = `
+# Set timezone (replace 'America/New_York' with your timezone)
+sudo timedatectl set-timezone America/New_York
+
+# Enable automatic time synchronization
+sudo timedatectl set-ntp true
+
+# Note: Automatic timezone setting based on IP is commented out to avoid errors
+# To set timezone automatically based on IP, you would need to run:
+# IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
+# TIMEZONE=$(curl -s "https://ipapi.co/$IP/timezone")
+# sudo timedatectl set-timezone "$TIMEZONE"
+`
return (
@@ -230,10 +243,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
needs to be minimized. By using kexec, the system can skip the time-consuming hardware initialization process
during a reboot, resulting in much faster restart times.
-
To apply this optimization manually, you would run:
-
- {fastRebootCode}
-
+
To apply this optimization manually, run these commands:
+
@@ -247,10 +258,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
Instead of remaining in a crashed state, the system will attempt to recover by rebooting, potentially
resolving the issue without manual intervention.
- To apply this optimization manually, you would run:
-
- {kernelPanicCode}
-
+ To apply this optimization manually, run these commands:
+
@@ -264,10 +273,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
virtual environments, generating true randomness can be challenging, leading to potential bottlenecks. Haveged
helps maintain a healthy entropy pool, ensuring smooth operation of cryptographic tasks.
- To apply this optimization manually, you would run:
-
- {entropyCode}
-
+ To apply this optimization manually, run these commands:
+
@@ -280,10 +287,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
virtualization environments. Increasing these limits allows for better utilization of system resources,
accommodating more concurrent operations and larger workloads without hitting artificial bottlenecks.
- To apply this optimization manually, you would run:
-
- {systemLimitsCode}
-
+ To apply this optimization manually, run these commands:
+
@@ -294,10 +299,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
required by certain software or drivers. Having them installed ensures that you can compile and use custom
kernel modules if needed, enhancing system flexibility and compatibility.
- To apply this optimization manually, you would run:
-
- {kernelHeadersCode}
-
+ To apply this optimization manually, run these commands:
+
@@ -308,10 +311,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
limiting log sizes and adjusting logging levels, you can prevent logs from consuming excessive disk space
while still maintaining useful system information for troubleshooting.
- To apply this optimization manually, you would run:
-
- {journaldCode}
-
+ To apply this optimization manually, run these commands:
+
@@ -322,10 +323,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
system performance. By compressing old logs and limiting their size, you prevent log files from growing
indefinitely and potentially filling up your disk.
- To apply this optimization manually, you would run:
-
- {logrotateCode}
-
+ To apply this optimization manually, run these commands:
+
@@ -338,10 +337,8 @@ sudo sysctl -p /etc/sysctl.d/99-memory.conf
especially in virtualized environments. They help ensure that memory is used efficiently, reduce the
likelihood of out-of-memory errors, and improve the performance of memory-intensive applications.
- To apply this optimization manually, you would run:
-
- {memorySettingsCode}
-
+ To apply this optimization manually, run these commands:
+
diff --git a/web/app/docs/post-install/virtualization/page.tsx b/web/app/docs/post-install/virtualization/page.tsx
index d72ba6c..1f2a736 100644
--- a/web/app/docs/post-install/virtualization/page.tsx
+++ b/web/app/docs/post-install/virtualization/page.tsx
@@ -1,5 +1,6 @@
import type { Metadata } from "next"
import { Box } from "lucide-react"
+import { CopyableCode } from "@/components/CopyableCode"
export const metadata: Metadata = {
title: "ProxMenux Post-Install: Virtualization Settings",
@@ -31,11 +32,17 @@ export const metadata: Metadata = {
export default function VirtualizationSettingsPage() {
const enableVfioIommuCode = `
+#!/bin/bash
+
# Enable IOMMU for Intel or AMD CPU
-# For Intel:
-sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=/ s/"$/ intel_iommu=on iommu=pt"/' /etc/default/grub
-# For AMD:
-# sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=/ s/"$/ amd_iommu=on iommu=pt"/' /etc/default/grub
+if grep -q GenuineIntel /proc/cpuinfo; then
+ sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=/ s/"$/ intel_iommu=on iommu=pt"/' /etc/default/grub
+elif grep -q AuthenticAMD /proc/cpuinfo; then
+ sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=/ s/"$/ amd_iommu=on iommu=pt"/' /etc/default/grub
+else
+ echo "Unknown CPU type. IOMMU might not be properly enabled."
+ exit 1
+fi
# Configure VFIO modules
echo "vfio" >> /etc/modules
@@ -44,37 +51,62 @@ echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules
# Blacklist conflicting drivers
-echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
-echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
+cat <> /etc/modprobe.d/blacklist.conf
+blacklist nouveau
+blacklist nvidia
+blacklist radeon
+blacklist amdgpu
+EOF
# Update GRUB and initramfs
update-grub
update-initramfs -u -k all
+
+echo "VFIO IOMMU support has been enabled. Please reboot your system for changes to take effect."
`
const installGuestAgentCode = `
+#!/bin/bash
+
# Detect virtualization environment
VIRT_ENV=$(systemd-detect-virt)
# Install appropriate guest agent
case $VIRT_ENV in
kvm)
+ apt-get update
apt-get install -y qemu-guest-agent
+ systemctl enable qemu-guest-agent
+ systemctl start qemu-guest-agent
+ echo "QEMU Guest Agent installed and started."
;;
vmware)
+ apt-get update
apt-get install -y open-vm-tools
+ systemctl enable open-vm-tools
+ systemctl start open-vm-tools
+ echo "Open VM Tools installed and started."
;;
oracle)
+ apt-get update
apt-get install -y virtualbox-guest-utils
+ systemctl enable vboxadd
+ systemctl start vboxadd
+ echo "VirtualBox Guest Additions installed and started."
;;
*)
echo "No specific guest agent needed or virtualization not detected."
;;
esac
+
+echo "Guest agent installation process completed."
`
const configureKsmtunedCode = `
+#!/bin/bash
+
# Install KSM control daemon
+apt-get update
apt-get install -y ksm-control-daemon
# Configure KSM based on system RAM
@@ -82,22 +114,30 @@ RAM_GB=$(free -g | awk '/^Mem:/{print $2}')
if [ $RAM_GB -le 16 ]; then
sed -i 's/KSM_THRES_COEF=.*/KSM_THRES_COEF=50/' /etc/ksmtuned.conf
sed -i 's/KSM_SLEEP_MSEC=.*/KSM_SLEEP_MSEC=80/' /etc/ksmtuned.conf
+ echo "RAM <= 16GB: Setting KSM to start at 50% full"
elif [ $RAM_GB -le 32 ]; then
sed -i 's/KSM_THRES_COEF=.*/KSM_THRES_COEF=40/' /etc/ksmtuned.conf
sed -i 's/KSM_SLEEP_MSEC=.*/KSM_SLEEP_MSEC=60/' /etc/ksmtuned.conf
+ echo "RAM <= 32GB: Setting KSM to start at 60% full"
elif [ $RAM_GB -le 64 ]; then
sed -i 's/KSM_THRES_COEF=.*/KSM_THRES_COEF=30/' /etc/ksmtuned.conf
sed -i 's/KSM_SLEEP_MSEC=.*/KSM_SLEEP_MSEC=40/' /etc/ksmtuned.conf
+ echo "RAM <= 64GB: Setting KSM to start at 70% full"
elif [ $RAM_GB -le 128 ]; then
sed -i 's/KSM_THRES_COEF=.*/KSM_THRES_COEF=20/' /etc/ksmtuned.conf
sed -i 's/KSM_SLEEP_MSEC=.*/KSM_SLEEP_MSEC=20/' /etc/ksmtuned.conf
+ echo "RAM <= 128GB: Setting KSM to start at 80% full"
else
sed -i 's/KSM_THRES_COEF=.*/KSM_THRES_COEF=10/' /etc/ksmtuned.conf
sed -i 's/KSM_SLEEP_MSEC=.*/KSM_SLEEP_MSEC=10/' /etc/ksmtuned.conf
+ echo "RAM > 128GB: Setting KSM to start at 90% full"
fi
# Enable ksmtuned service
systemctl enable ksmtuned
+systemctl start ksmtuned
+
+echo "KSM configuration completed and service started."
`
return (
@@ -122,12 +162,17 @@ systemctl enable ksmtuned
Why it's beneficial: IOMMU and VFIO support enables near-native performance for PCI devices
(like GPUs or network cards) in virtual machines, which is crucial for high-performance virtualization
- scenarios.
+ scenarios. This allows for:
- To apply this optimization manually, you would run:
-
- {enableVfioIommuCode}
-
+
+ - Direct access to hardware from within VMs, improving performance
+ - Better isolation between host and guest systems
+ - Support for advanced features like GPU passthrough for gaming or compute workloads
+
+
+ To apply this optimization manually, save the following script and run it with root privileges:
+
+
@@ -138,13 +183,19 @@ systemctl enable ksmtuned
Why it's beneficial: Guest agents improve communication between the host and guest systems,
- enabling features like graceful shutdown, file sharing, and better performance monitoring. This ensures
- smoother operation and management of virtual machines.
+ enabling features like:
- To apply this optimization manually, you would run:
-
- {installGuestAgentCode}
-
+
+ - Graceful shutdown of virtual machines
+ - File sharing between host and guest
+ - Better performance monitoring and resource allocation
+ - Improved time synchronization
+ - Enhanced mouse pointer integration
+
+
+ To apply this optimization manually, save the following script and run it with root privileges:
+
+
@@ -155,13 +206,18 @@ systemctl enable ksmtuned
Why it's beneficial: KSM allows the kernel to share identical memory pages between multiple
- virtual machines, reducing overall memory usage. This can lead to better resource utilization, especially in
- environments with many similar virtual machines.
+ virtual machines, providing several advantages:
- To apply this optimization manually, you would run:
-
- {configureKsmtunedCode}
-
+
+ - Reduced overall memory usage, allowing for higher VM density
+ - Improved performance in environments with many similar VMs
+ - Dynamic adjustment of KSM aggressiveness based on system memory pressure
+ - Potential for running more VMs on the same hardware
+
+
+ To apply this optimization manually, save the following script and run it with root privileges:
+
+
@@ -169,7 +225,8 @@ systemctl enable ksmtuned
All of these optimizations are automatically applied when selected in the Virtualization section of the
customizable_post_install.sh script. This automation ensures that these beneficial settings are applied
- consistently and correctly.
+ consistently and correctly, saving time and reducing the potential for human error during manual
+ configuration.