mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-06-28 04:06:54 +00:00
update
This commit is contained in:
parent
46021474f3
commit
472de46657
@ -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 <<EOF | sudo tee /etc/apt/sources.list
|
||||
deb http://deb.debian.org/debian $(lsb_release -cs) main contrib non-free non-free-firmware
|
||||
deb http://deb.debian.org/debian $(lsb_release -cs)-updates main contrib non-free non-free-firmware
|
||||
deb http://security.debian.org/debian-security $(lsb_release -cs)-security main contrib non-free non-free-firmware
|
||||
EOF
|
||||
|
||||
# Disable non-free firmware warnings
|
||||
echo 'APT::Get::Update::SourceListWarnings::NonFreeFirmware "false";' | sudo tee /etc/apt/apt.conf.d/no-bookworm-firmware.conf
|
||||
|
||||
# Update and upgrade
|
||||
sudo apt-get update
|
||||
sudo apt-get dist-upgrade -y
|
||||
@ -92,10 +122,8 @@ sudo apt-get install -y zfsutils-linux proxmox-backup-restore-image chrony
|
||||
Proxmox VE system. They provide essential tools for monitoring system performance, managing files, and
|
||||
troubleshooting issues, enhancing your ability to maintain and optimize your virtualization environment.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{installUtilitiesCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={installUtilitiesCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{skipLanguagesCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run this command:</h4>
|
||||
<CopyableCode code={skipLanguagesCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{timeSyncCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={timeSyncCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h3 className="text-xl font-semibold mb-2">4. Update and Upgrade System</h3>
|
||||
<p className="mb-4">
|
||||
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.
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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:
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{updateUpgradeCode}</code>
|
||||
</pre>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>Disabling enterprise repositories to avoid conflicts</li>
|
||||
<li>Enabling free and testing repositories for broader package access</li>
|
||||
<li>Properly configuring Debian repositories for a stable system</li>
|
||||
<li>Suppressing non-free firmware warnings for a cleaner update experience</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={updateUpgradeCode} />
|
||||
</section>
|
||||
|
||||
<section className="mt-12 p-4 bg-blue-100 rounded-md">
|
||||
@ -153,7 +183,8 @@ sudo apt-get install -y zfsutils-linux proxmox-backup-restore-image chrony
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
@ -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
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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:
|
||||
</p>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>Increased maximum number of backlog connections</li>
|
||||
<li>Optimized TCP window sizes for better throughput</li>
|
||||
<li>Enhanced security by disabling potentially dangerous features like ICMP redirects</li>
|
||||
<li>Improved TCP connection handling and timeout settings</li>
|
||||
<li>Optimized network memory allocation</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{applyNetworkOptimizationsCode}</code>
|
||||
</pre>
|
||||
<CopyableCode code={applyNetworkOptimizationsCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -119,14 +161,20 @@ ovs-vsctl --version
|
||||
This optimization enables Google's TCP BBR congestion control algorithm and TCP Fast Open.
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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.
|
||||
<strong>Why it's beneficial:</strong>
|
||||
</p>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>
|
||||
TCP BBR (Bottleneck Bandwidth and Round-trip propagation time) can significantly improve network throughput
|
||||
and reduce latency, especially on long-distance or congested networks.
|
||||
</li>
|
||||
<li>
|
||||
TCP Fast Open reduces connection establishment time, improving the speed of short-lived connections by
|
||||
allowing data transfer during the initial TCP handshake.
|
||||
</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{enableTcpFastOpenCode}</code>
|
||||
</pre>
|
||||
<CopyableCode code={enableTcpFastOpenCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -134,12 +182,15 @@ ovs-vsctl --version
|
||||
<p className="mb-4">This optimization configures APT (Advanced Package Tool) to use IPv4 exclusively.</p>
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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:
|
||||
</p>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>Avoiding potential IPv6-related connection issues</li>
|
||||
<li>Ensuring consistent behavior across different network configurations</li>
|
||||
<li>Potentially speeding up package downloads in networks with suboptimal IPv6 support</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{forceAptIpv4Code}</code>
|
||||
</pre>
|
||||
<CopyableCode code={forceAptIpv4Code} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -149,13 +200,17 @@ ovs-vsctl --version
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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:
|
||||
</p>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>Support for VLAN tagging and trunking</li>
|
||||
<li>Advanced traffic shaping and Quality of Service (QoS) capabilities</li>
|
||||
<li>Integration with software-defined networking (SDN) controllers</li>
|
||||
<li>Improved network performance and scalability for large virtualized environments</li>
|
||||
<li>Support for network function virtualization (NFV)</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{installOpenVSwitchCode}</code>
|
||||
</pre>
|
||||
<CopyableCode code={installOpenVSwitchCode} />
|
||||
</section>
|
||||
|
||||
<section className="mt-12 p-4 bg-blue-100 rounded-md">
|
||||
@ -163,7 +218,8 @@ ovs-vsctl --version
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
@ -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 (
|
||||
<div className="container mx-auto px-4 py-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{fastRebootCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={fastRebootCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{kernelPanicCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={kernelPanicCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{entropyCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={entropyCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{systemLimitsCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={systemLimitsCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{kernelHeadersCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={kernelHeadersCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{journaldCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={journaldCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{logrotateCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={logrotateCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -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.
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{memorySettingsCode}</code>
|
||||
</pre>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, run these commands:</h4>
|
||||
<CopyableCode code={memorySettingsCode} />
|
||||
</section>
|
||||
|
||||
<section className="mt-12 p-4 bg-blue-100 rounded-md">
|
||||
|
@ -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 <<EOF >> /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
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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:
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{enableVfioIommuCode}</code>
|
||||
</pre>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>Direct access to hardware from within VMs, improving performance</li>
|
||||
<li>Better isolation between host and guest systems</li>
|
||||
<li>Support for advanced features like GPU passthrough for gaming or compute workloads</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">
|
||||
To apply this optimization manually, save the following script and run it with root privileges:
|
||||
</h4>
|
||||
<CopyableCode code={enableVfioIommuCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -138,13 +183,19 @@ systemctl enable ksmtuned
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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:
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{installGuestAgentCode}</code>
|
||||
</pre>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>Graceful shutdown of virtual machines</li>
|
||||
<li>File sharing between host and guest</li>
|
||||
<li>Better performance monitoring and resource allocation</li>
|
||||
<li>Improved time synchronization</li>
|
||||
<li>Enhanced mouse pointer integration</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">
|
||||
To apply this optimization manually, save the following script and run it with root privileges:
|
||||
</h4>
|
||||
<CopyableCode code={installGuestAgentCode} />
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
@ -155,13 +206,18 @@ systemctl enable ksmtuned
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
<strong>Why it's beneficial:</strong> 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:
|
||||
</p>
|
||||
<h4 className="text-lg font-semibold mb-2">To apply this optimization manually, you would run:</h4>
|
||||
<pre className="bg-gray-100 p-4 rounded-md overflow-x-auto">
|
||||
<code>{configureKsmtunedCode}</code>
|
||||
</pre>
|
||||
<ul className="list-disc pl-5 mb-4">
|
||||
<li>Reduced overall memory usage, allowing for higher VM density</li>
|
||||
<li>Improved performance in environments with many similar VMs</li>
|
||||
<li>Dynamic adjustment of KSM aggressiveness based on system memory pressure</li>
|
||||
<li>Potential for running more VMs on the same hardware</li>
|
||||
</ul>
|
||||
<h4 className="text-lg font-semibold mb-2">
|
||||
To apply this optimization manually, save the following script and run it with root privileges:
|
||||
</h4>
|
||||
<CopyableCode code={configureKsmtunedCode} />
|
||||
</section>
|
||||
|
||||
<section className="mt-12 p-4 bg-blue-100 rounded-md">
|
||||
@ -169,7 +225,8 @@ systemctl enable ksmtuned
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user