This commit is contained in:
CanbiZ 2025-06-16 08:02:19 +02:00
parent 31434c3db4
commit d1c3937a8d
5 changed files with 0 additions and 464 deletions

View File

@ -1,60 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Omar Minaya
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://lyrion.org/getting-started/
APP="Lyrion Music Server"
var_tags="${var_tags:-media}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-3}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /lib/systemd/system/lyrionmusicserver.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
DEB_URL=$(curl -s 'https://lyrion.org/getting-started/' | grep -oP '<a\s[^>]*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1)
RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)')
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb"
if [[ ! -f /opt/lyrion_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/lyrion_version.txt)" ]]; then
msg_info "Updating $APP to ${RELEASE}"
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
$STD apt install "$DEB_FILE" -y
systemctl restart lyrion
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Cleaning up"
$STD rm -f "$DEB_FILE"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
else
msg_ok "$APP is already up to date (${RELEASE})"
fi
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access the web interface at:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}"

View File

@ -1,40 +0,0 @@
{
"name": "NIC Offloading Fix",
"slug": "nic-offloading-fix",
"categories": [
1
],
"date_created": "2025-05-25",
"type": "pve",
"updateable": false,
"privileged": false,
"interface_port": null,
"documentation": null,
"config_path": "",
"website": null,
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
"description": "This script automates the process of disabling network interface card (NIC) offloading features specifically for Intel e1000e network interfaces on Linux systems.",
"install_methods": [
{
"type": "default",
"script": "tools/pve/nic-offloading-fix.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Execute within the Proxmox shell",
"type": "info"
}
]
}

View File

@ -1,105 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/homarr-labs/homarr
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apk add --no-cache \
redis \
nginx \
ca-certificates \
openssl \
jq \
make \
g++ \
gettext \
libstdc++ \
libgcc \
python3 \
py3-pip
msg_ok "Installed Dependencies"
NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
install_node_and_modules
fetch_and_deploy_gh_release "homarr-labs/homarr"
msg_info "Installing Homarr"
mkdir -p /opt/homarr_db
touch /opt/homarr_db/db.sqlite
SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)"
cd /opt/homarr
cat <<EOF >/opt/homarr/.env
DB_DRIVER='better-sqlite3'
DB_DIALECT='sqlite'
SECRET_ENCRYPTION_KEY='${SECRET_ENCRYPTION_KEY}'
DB_URL='/opt/homarr_db/db.sqlite'
TURBO_TELEMETRY_DISABLED=1
AUTH_PROVIDERS='credentials'
NODE_ENV='production'
EOF
$STD pnpm install
$STD pnpm build
msg_ok "Installed Homarr"
msg_info "Copying build and config files"
cp /opt/homarr/apps/nextjs/next.config.ts .
cp /opt/homarr/apps/nextjs/package.json .
cp -r /opt/homarr/packages/db/migrations /opt/homarr_db/migrations
cp -r /opt/homarr/apps/nextjs/.next/standalone/* /opt/homarr
mkdir -p /appdata/redis
cp /opt/homarr/packages/redis/redis.conf /opt/homarr/redis.conf
mkdir -p /etc/nginx/templates
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
mkdir -p /opt/homarr/apps/cli
cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs
echo -e '#!/bin/sh\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' >/usr/bin/homarr
chmod +x /usr/bin/homarr
mkdir -p /opt/homarr/build
cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Finished copying"
msg_info "Creating run script"
cat <<'EOF' >/opt/run_homarr.sh
#!/bin/sh
set -a
. /opt/homarr/.env
set +a
export DB_DIALECT='sqlite'
export AUTH_SECRET=$(openssl rand -base64 32)
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
dirname=$(basename "$dir")
mkdir -p "/opt/homarr_db/migrations/$dirname"
cp -r "$dir"/* "/opt/homarr_db/migrations/$dirname/" 2>/dev/null || true
done
export HOSTNAME=$(ip route get 1.1.1.1 | awk '/src/ { print $7 }')
envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf
nginx -g 'daemon off;' &
redis-server /opt/homarr/redis.conf &
node apps/tasks/tasks.cjs &
node apps/websocket/wssServer.cjs &
node apps/nextjs/server.js & PID=$!
wait $PID
EOF
chmod +x /opt/run_homarr.sh
msg_ok "Created run script"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
msg_ok "Cleaned"

View File

@ -1,32 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Omar Minaya
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://lyrion.org/getting-started/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Setup Lyrion Music Server"
DEB_URL=$(curl -fsSL 'https://lyrion.org/getting-started/' | grep -oP '<a\s[^>]*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1)
RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)')
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb"
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
$STD apt install "$DEB_FILE" -y
echo "${RELEASE}" >"/opt/lyrion_version.txt"
msg_ok "Setup Lyrion Music Server v${RELEASE}"
motd_ssh
customize
msg_info "Cleaning up"
$STD rm -f "$DEB_FILE"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@ -1,227 +0,0 @@
#!/usr/bin/env bash
# Creates a systemd service to disable NIC offloading features for Intel e1000e interfaces
# Author: rcastley
# License: MIT
YW=$(echo "\033[33m")
YWB=$'\e[93m'
BL=$(echo "\033[36m")
RD=$(echo "\033[01;31m")
BGN=$(echo "\033[4;92m")
GN=$(echo "\033[1;92m")
DGN=$(echo "\033[32m")
CL=$(echo "\033[m")
TAB=" "
CM="${TAB}✔️${TAB}"
CROSS="${TAB}✖️${TAB}"
INFO="${TAB}${TAB}${CL}"
WARN="${TAB}⚠️${TAB}${CL}"
function header_info {
clear
cat <<"EOF"
_ ____________ ____ __________ ___ ____ _ __ __
/ | / / _/ ____/ / __ \/ __/ __/ /___ ____ _____/ (_)___ ____ _ / __ \(_)________ _/ /_ / /__ _____
/ |/ // // / / / / / /_/ /_/ / __ \/ __ `/ __ / / __ \/ __ `/ / / / / / ___/ __ `/ __ \/ / _ \/ ___/
/ /| // // /___ / /_/ / __/ __/ / /_/ / /_/ / /_/ / / / / / /_/ / / /_/ / (__ ) /_/ / /_/ / / __/ /
/_/ |_/___/\____/ \____/_/ /_/ /_/\____/\__,_/\__,_/_/_/ /_/\__, / /_____/_/____/\__,_/_.___/_/\___/_/
/____/
EOF
}
header_info
function msg_info() { echo -e "${INFO} ${YW}${1}...${CL}"; }
function msg_ok() { echo -e "${CM} ${GN}${1}${CL}"; }
function msg_error() { echo -e "${CROSS} ${RD}${1}${CL}"; }
function msg_warn() { echo -e "${WARN} ${YWB}${1}"; }
# Check for root privileges
if [ "$(id -u)" -ne 0 ]; then
msg_error "Error: This script must be run as root."
exit 1
fi
if ! command -v ethtool >/dev/null 2>&1; then
msg_info "Installing ethtool"
apt-get update &>/dev/null
apt-get install -y ethtool &>/dev/null || { msg_error "Failed to install ethtool. Exiting."; exit 1; }
msg_ok "ethtool installed successfully"
fi
# Get list of network interfaces using Intel e1000e driver
INTERFACES=()
COUNT=0
msg_info "Searching for Intel e1000e interfaces"
for device in /sys/class/net/*; do
interface="$(basename "$device")" # or adjust the rest of the usages below, as mostly you'll use the path anyway
# Skip loopback interface and virtual interfaces
if [[ "$interface" != "lo" ]] && [[ ! "$interface" =~ ^(tap|fwbr|veth|vmbr|bonding_masters) ]]; then
# Check if the interface uses the e1000e driver
driver=$(basename $(readlink -f /sys/class/net/$interface/device/driver 2>/dev/null) 2>/dev/null)
if [[ "$driver" == "e1000e" ]]; then
# Get MAC address for additional identification
mac=$(cat /sys/class/net/$interface/address 2>/dev/null)
INTERFACES+=("$interface" "Intel e1000e NIC ($mac)")
((COUNT++))
fi
fi
done
# Check if any Intel e1000e interfaces were found
if [ ${#INTERFACES[@]} -eq 0 ]; then
whiptail --title "Error" --msgbox "No Intel e1000e network interfaces found!" 10 60
msg_error "No Intel e1000e network interfaces found! Exiting."
exit 1
fi
msg_ok "Found ${BL}$COUNT${GN} Intel e1000e interfaces"
# Create a checklist for interface selection with all interfaces initially checked
INTERFACES_CHECKLIST=()
for ((i=0; i<${#INTERFACES[@]}; i+=2)); do
INTERFACES_CHECKLIST+=("${INTERFACES[i]}" "${INTERFACES[i+1]}" "ON")
done
# Show interface selection checklist
SELECTED_INTERFACES=$(whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Network Interfaces" \
--separate-output --checklist "Select Intel e1000e network interfaces\n(Space to toggle, Enter to confirm):" 15 80 6 \
"${INTERFACES_CHECKLIST[@]}" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus != 0 ]; then
msg_info "User canceled. Exiting."
exit 0
fi
# Check if any interfaces were selected
if [ -z "$SELECTED_INTERFACES" ]; then
msg_error "No interfaces selected. Exiting."
exit 0
fi
# Convert the selected interfaces into an array
readarray -t INTERFACE_ARRAY <<< "$SELECTED_INTERFACES"
# Show the number of selected interfaces
INTERFACE_COUNT=${#INTERFACE_ARRAY[@]}
# Print selected interfaces
for iface in "${INTERFACE_ARRAY[@]}"; do
msg_ok "Selected interface: ${BL}$iface${CL}"
done
# Ask for confirmation with the list of selected interfaces
CONFIRMATION_MSG="You have selected the following interface(s):\n\n"
for iface in "${INTERFACE_ARRAY[@]}"; do
SPEED=$(cat /sys/class/net/$iface/speed 2>/dev/null)
MAC=$(cat /sys/class/net/$iface/address 2>/dev/null)
CONFIRMATION_MSG+="- $iface (MAC: $MAC, Speed: ${SPEED}Mbps)\n"
done
CONFIRMATION_MSG+="\nThis will create systemd service(s) to disable offloading features.\n\nProceed?"
if ! whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Confirmation" \
--yesno "$CONFIRMATION_MSG" 20 80; then
msg_info "User canceled. Exiting."
exit 0
fi
# Loop through all selected interfaces and create services for each
for SELECTED_INTERFACE in "${INTERFACE_ARRAY[@]}"; do
# Create service name for this interface
SERVICE_NAME="disable-nic-offload-$SELECTED_INTERFACE.service"
SERVICE_PATH="/etc/systemd/system/$SERVICE_NAME"
# Create the service file with e1000e specific optimizations
msg_info "Creating systemd service for interface: ${BL}$SELECTED_INTERFACE${YW}"
# Start with the common part of the service file
cat > "$SERVICE_PATH" << EOF
[Unit]
Description=Disable NIC offloading for Intel e1000e interface $SELECTED_INTERFACE
After=network.target
[Service]
Type=oneshot
# Disable all offloading features for Intel e1000e
ExecStart=/sbin/ethtool -K $SELECTED_INTERFACE gso off gro off tso off tx off rx off rxvlan off txvlan off sg off
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
EOF
# Check if service file was created successfully
if [ ! -f "$SERVICE_PATH" ]; then
whiptail --title "Error" --msgbox "Failed to create service file for $SELECTED_INTERFACE!" 10 50
msg_error "Failed to create service file for $SELECTED_INTERFACE! Skipping to next interface."
continue
fi
# Configure this service
{
echo "25"; sleep 0.2
# Reload systemd to recognize the new service
systemctl daemon-reload
echo "50"; sleep 0.2
# Start the service
systemctl start "$SERVICE_NAME"
echo "75"; sleep 0.2
# Enable the service to start on boot
systemctl enable "$SERVICE_NAME"
echo "100"; sleep 0.2
} | whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --gauge "Configuring service for $SELECTED_INTERFACE..." 10 80 0
# Individual service status
if systemctl is-active --quiet "$SERVICE_NAME"; then
SERVICE_STATUS="Active"
else
SERVICE_STATUS="Inactive"
fi
if systemctl is-enabled --quiet "$SERVICE_NAME"; then
BOOT_STATUS="Enabled"
else
BOOT_STATUS="Disabled"
fi
# Show individual service results
msg_ok "Service for ${BL}$SELECTED_INTERFACE${GN} created and enabled!"
msg_info "${TAB}Service: ${BL}$SERVICE_NAME${YW}"
msg_info "${TAB}Status: ${BL}$SERVICE_STATUS${YW}"
msg_info "${TAB}Start on boot: ${BL}$BOOT_STATUS${YW}"
done
# Prepare summary of all interfaces
SUMMARY_MSG="Services created successfully!\n\n"
SUMMARY_MSG+="Configured Interfaces:\n"
for iface in "${INTERFACE_ARRAY[@]}"; do
SERVICE_NAME="disable-nic-offload-$iface.service"
if systemctl is-active --quiet "$SERVICE_NAME"; then
SVC_STATUS="Active"
else
SVC_STATUS="Inactive"
fi
if systemctl is-enabled --quiet "$SERVICE_NAME"; then
BOOT_SVC_STATUS="Enabled"
else
BOOT_SVC_STATUS="Disabled"
fi
SUMMARY_MSG+="- $iface: $SVC_STATUS, Boot: $BOOT_SVC_STATUS\n"
done
# Show summary results
whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Success" --msgbox "$SUMMARY_MSG" 20 80
msg_ok "Intel e1000e optimization complete for ${#INTERFACE_ARRAY[@]} interface(s)!"
exit 0